FerriShare

FerriShare

Self-hosted file sharing with browser-side end-to-end encryption

330stars
19forks
Last commit: 10d ago
Repo age: 2y old

FerriShare is an open-source, self-hostable filesharing application that encrypts files and filenames in the user's browser before they are uploaded. The decryption key is embedded in the download-link fragment so the server never receives it, and the project provides a minimal, accessible frontend plus a Rust backend for metadata and administration.

Key Features

  • Client-side encryption (AES-GCM) performed in the browser using the WebCrypto API; filenames and file contents are encrypted before upload.
  • Decryption key stored in the download-link fragment so the server cannot decrypt stored files.
  • Expiring uploads with configurable durations (examples: 1 hour, 1 day, 1 week).
  • Two links returned to uploaders: a public download link and a private administration link with download statistics and early-delete capability.
  • Built-in IP-based rate limiting with dual-stack handling (full IPv4 or /64 IPv6 subnet) and configurable request/upload limits.
  • Configurable maximum filesize and storage quota controls.
  • Password-protected site-wide administration panel for usage stats and manual deletion.
  • Lightweight, memory-safe backend written in Rust with server-side templating; frontend uses minimal JavaScript only where required (encryption/upload pages).
  • SQLite used for metadata so the application can run in a single container; prebuilt multi-architecture Docker images are provided for common platforms.
  • Accessible frontend optimized for performance and best practices; Tailwind-based styling and server-rendered templates reduce client JS needs.

Use Cases

  • Securely send files to external recipients without exposing plaintext to the server or storage host.
  • Provide a temporary, privacy-preserving file drop for teams or communities with automatic expiry and admin controls.
  • Host a small public or internal file-sharing endpoint that enforces quotas and rate limits to reduce abuse.

Limitations and Considerations

  • The project author notes the cryptographic implementation has not been independently audited; users should review the code and exercise caution before storing highly sensitive data.
  • The WebCrypto API imposes practical limits (e.g., browser-imposed maximum single-message size) that restrict maximum upload sizes; FerriShare enforces a configurable max filesize accordingly.
  • FerriShare must be served via HTTPS (or run on localhost) and is intended to run behind a reverse proxy for TLS termination; proper TLS/reverse-proxy configuration is required for secure deployment.

FerriShare is suitable for users who need a simple, privacy-oriented file sharing service they can run themselves. It emphasizes browser-side encryption, straightforward deployment (Docker + single SQLite DB), and configurable limits to balance usability with operational safety. (github.com)

Categories:

Tags:

Tech Stack:

Share:

Similar Services

Syncthing

Syncthing

Open-source, peer-to-peer file synchronization tool.

79.1k
4.9k
Last commit: 2d ago

Open-source peer-to-peer file synchronization with TLS encryption, no central server, and a browser-based UI.

Alternative to:
Resilio Sync
Resilio Sync
+6
LocalSend

LocalSend

Open-source cross-platform local network file sharing app

73.3k
3.9k
Last commit: 4d ago

LocalSend is a free, open-source app for fast, encrypted file and text sharing between nearby devices over a local network, available on desktop and mobile.

Alternative to:
Apple AirDrop
Apple AirDrop
+6
AList

AList

Multi-storage file listing server with WebDAV and previews

48.8k
8k
Last commit: 26d ago

AList is a multi-storage file listing and sharing server with WebDAV access, file previews, protected routes, uploads, and cross-storage file operations.

Alternative to:
Dropbox
Dropbox
+19
copyparty

copyparty

Portable file server with fast resumable uploads and many protocols

41k
1.7k
Last commit: 19h ago

Copyparty is a portable file server with a web UI, accelerated resumable uploads, deduplication, indexing, and support for WebDAV, SFTP, FTP and more.

Alternative to:
WeTransfer
WeTransfer
+19
qBittorrent

qBittorrent

Cross-platform BitTorrent client built with Qt and libtorrent

35k
4.5k
Last commit: 21h ago

qBittorrent is a fast, free, cross-platform BitTorrent client with a desktop UI and optional Web UI, built on libtorrent for efficient torrent downloading and seeding.

Alternative to:
BitTorrent
BitTorrent
+2
Nextcloud

Nextcloud

Open-source collaboration platform for file sync and groupware

33.8k
4.7k
Last commit: 16h ago

Nextcloud is an open-source content collaboration platform providing file sync & share, groupware (calendar, contacts, mail), real-time office editing, chat and video con...

Alternative to:
Google Drive
Google Drive
+19