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, with everyone.

While the download page is hard to guess, everyone who knows it can access the files.

Others → Authenticated users

Anonymous can send files to registered users. Each registered user can maintain alias pages. An alias page is also behind a “hard-to-guess” URL (just like the download page) and allows everyone to upload files to the corresponding user. The user belonging to the alias can be notified via email.

Features

  • Both ways: Receive and send files to/from anonymous users.
  • Integration: Sharry aims to be easy to integrate in other environments.
    • Authentication: There are many ways to authenticate users from different sources and/or use internal user management.
    • REST Api exposing all the features, making it available for scripts.
  • Reliable up- and downloads
    • Uploads: While the server accepts standard multipart requests, it also supports the tus protocol allowing for resumable uploads. In case network goes down in the middle of uploading a large file, simply upload the same file again and it will start where it left off.
    • Downloads: Using ETag and range requests allows the clients (the browser, mostly) to cache files and to download only portions of files. This makes it possible to efficiently view videos in the browser (being able to click into the timeline).
  • Web client for managing and accessing shares.
  • Signup Let all users create new accounts, only invited ones or none.
  • Restrict public download pages using three properties: a lifetime, a password (acting as a second secret) and download-limit.
  • Periodic cleanup will remove expired shares
  • Send E-Mails from within Sharry (if configured)
  • DBMS Data is stored in a relational database, supporting PostgreSQL, MariaDB and H2 (h2 is an in-process db, not requiring a separate database server).
  • Files can be stored in the database as well. Other options are the filesystem or an S3 compatible object storage

License

This project is distributed under the GPLv3+