sharry is a free, open source file management & sync project written in Elm and released under GPL-3.0. It has 1,349 GitHub stars, 73 forks and 74 open issues, and was last pushed 4 days ago. On this registry it ranks #46 of 53 tracked projects in File Management & Sync, with 5 head-to-head comparisons available.

What is sharry?

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

Scala Steward badge

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

screenshot-1 screenshot-2 screenshot-3

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+

Frequently asked questions

Is sharry free to use?

sharry is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does sharry do?

Sharry is a self-hosted file sharing web application.

What is sharry written in?

sharry is primarily written in Elm. Its source is publicly available at https://github.com/eikek/sharry, and it has 1,349 GitHub stars.