ferry is a self-hosted, single-binary file-sharing solution designed for simple and secure temporary file exchange. It features Content-Addressable Storage (CAS) for automatic deduplication and a modern web interface.
- 🚀 Single Binary: Go + SQLite. Zero external dependencies like Redis or S3.
- 📦 Deduplication: Automatic CAS-based deduplication saves disk space transparently.
- 📥 Resumable Uploads: Powered by the TUS protocol for reliable transfers.
- 🧪 Dynamic UI: Smooth, reload-free experience powered by HTMX and TUS.
- 🛡️ Secure by Design: Argon2id password protection, session hardening, and rate limiting.
- 🧹 Automated Maintenance: Built-in garbage collector (Mark-and-Sweep) for old shares and temporary files.
- 📱 Responsive UI: Clean, mobile-friendly dashboard and guest views.
| Admin Dashboard | System Status & Logs |
|---|---|
![]() |
![]() |
| Guest View (Download/Upload) |
|---|
![]() |
- Prepare configuration:
cp config.example.yaml config.yaml docker compose run --rm ferry ./ferry init-config # Then adjust config.yaml, especially server.public_url. - Launch with Docker Compose:
docker compose up -d --build
- Setup: Access your instance and follow the one-time
/setupflow to create your admin account.
- Documentation Site - Entry point for the published docs site.
- Operations Guide - Deployment, Backup, and Recovery.
- Architecture - Data model, CAS internals, and security design.
- Changelog - Release notes and compatibility-relevant changes.
- Release Checklist - Quality gates for production readiness.
- Roadmap - Future plans (LDAP, Quotas, etc.).
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
# Run tests
go test ./...
# Build locally
go build ./cmd/ferryFerry is a temporary file transfer tool, not a permanent file vault. Always run Ferry behind an HTTPS reverse proxy for production use. See OPERATIONS.md for security best practices.
Please do not report critical security vulnerabilities through the public issue tracker. Send critical security reports to kai@kaishome.de; see SECURITY.md.
Powered by Go, SQLite, and ⛴️



