Sharry is a self-hosted file sharing web application for people and teams who want to send files to others by generating a shareable URL without depending on a third-party cloud service.
What it is
Sharry is a self-hosted web application built on a simple idea: upload files and get back a URL that can be shared, for example via email. Authenticated users upload files on a web site together with an optional password and a time period, after which a public URL is generated; the download page is hard to guess but open to everyone. Each registered user can also maintain alias pages, which sit behind a hard-to-guess URL and let anyone upload files to that user, with an optional description and email notification to the owner. The backend is written in Scala in a pure functional style on typelevel libraries such as cats and fs2, and the frontend is written in Elm.
The concrete problem it solves is reliable, self-controlled file exchange: handing large files to colleagues or external recipients, and letting others hand files back, without uploading content to an external hosting service. It also solves the fragility of pushing big files over HTTP by implementing the tus protocol, so the web app sends files to the backend in chunks and resumes an interrupted upload from the last received chunk of data if the connection drops.
Key capabilities
- Generates a public, hard-to-guess download URL after an authenticated user uploads files, shareable e.g. via email.
- Protects each share with an optional password and a time period that defines how long the file remains available for download.
- Provides per-user alias pages behind hard-to-guess URLs so anyone can upload files to a registered user, with an optional description.
- Sends email notifications to the alias owner on upload, and allows alias pages to be disabled or deleted at any time.
- Implements the tus protocol so uploads resume from the last received chunk after an interrupted connection.
- Runs as a Debian package, a zip archive with a script in
bin/, a Nix or NixOS module, or via Docker.
Who uses it and how
- Individuals who register accounts, upload files with a password and expiry, and share the resulting URL with recipients who do not need an account.
- Teams that maintain alias pages so external parties can send files back without the recipient coordinating passwords or validation periods.
- Self-hosters running the service on a Debian-based system from the provided
deb file, or on systems managed with the nix package manager and its NixOS module.
- Operators deploying through Docker as described in the quickstart documentation, alongside the project's documentation site and screenshots.
Getting started
Install from the provided releases as a deb file, a zip archive with the script in bin/, a nix package, or run it with Docker as described in the quickstart documentation at https://eikek.github.io/sharry/doc/quickstart#quickstart-with-docker.
How it compares
Sharry stands alone in this registry; no list of similar tools or paid products it replaces is provided in the available facts.
When to use it — and when not
It suits people willing to operate their own server and who value owning their file exchanges, but anyone expecting a managed cloud service, or unwilling to run a web application and its storage and mail delivery themselves, should look elsewhere. The README points to 74 open issues and offers contact by issue or email rather than a stated support process, and the licence is GPLv3+, so its copyleft terms apply to redistribution.
project readme (upstream, from github) — read inline


Sharry
Sharry allows to share files with others in a simple way. It is a
self-hosted web application. The basic concept is: upload files and get
a url back that can then be shared.
How it works
Authenticated users → others
Authenticated users can upload their files on a web site together with
an optional password and a time period. The time period defines how long
the file is available for download. Then a public URL is generated that
can be shared, e.g. via email.
The download page is hard to guess, but open to everyone.
Others → Authenticated users
Each registered user can maintain alias pages. An alias page is behind
a “hard-to-guess” URL (just like the download page) and allows
everyone to upload files to the corresponding user. The form does not
allow to specify a password or validation period, but a description
can be given. The user belonging to the alias can be notified via
email. Alias pages can be disabled or deleted any time.
Install
Documentation
Please see the documentation site.
Screenshots


Contributions/Support
Feedback and other contributions are very welcome! You can open an
issue for questions,
problems and other feedback; or make a mail to eikek [at] posteo.de.
I'll try to answer in time.
If you find this project any useful and want to support it via other
means, giving a :star: is always encouraging and much appreciated. You
can also support activity by donating via
liberapay or
paypal.
Thank you so much!
Technical
Sharry implements the tus protocol and the webapp
uses it to send files to the backend server. This allows to send even
large files reliably through http. For example, even if the connection
drops in the middle of an upload and you upload the same file again
later, it starts the upload process from the last received chunk of
data.
The backend is written in Scala using a pure functional style on top
of great typelevel libraries like
cats and
fs2. The frontend is written in
elm.
License
This project is distributed under the
GPLv3+