Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eikek/sharry

Sharry is a self-hosted file sharing web application.
https://github.com/eikek/sharry

elm file-sharing file-upload filesharing scala web-app web-application webapp

Last synced: 6 days ago
JSON representation

Sharry is a self-hosted file sharing web application.

Awesome Lists containing this project

README

        

[![Scala Steward badge](https://img.shields.io/badge/Scala_Steward-helping-blue.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAMAAAARSr4IAAAAVFBMVEUAAACHjojlOy5NWlrKzcYRKjGFjIbp293YycuLa3pYY2LSqql4f3pCUFTgSjNodYRmcXUsPD/NTTbjRS+2jomhgnzNc223cGvZS0HaSD0XLjbaSjElhIr+AAAAAXRSTlMAQObYZgAAAHlJREFUCNdNyosOwyAIhWHAQS1Vt7a77/3fcxxdmv0xwmckutAR1nkm4ggbyEcg/wWmlGLDAA3oL50xi6fk5ffZ3E2E3QfZDCcCN2YtbEWZt+Drc6u6rlqv7Uk0LdKqqr5rk2UCRXOk0vmQKGfc94nOJyQjouF9H/wCc9gECEYfONoAAAAASUVORK5CYII=)](https://scala-steward.org)

# 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

- Install the [provided](https://github.com/eikek/sharry/releases)
`deb` file at your debian based system.
- Download [provided](https://github.com/eikek/sharry/releases) zip
file and run the script in `bin/`, as [described
here](https://eikek.github.io/sharry/doc/quickstart#quickstart).
- Using the [nix](https://nixos.org/nix) package manager as [described
here](https://eikek.github.io/sharry/doc/nix). A a NixOS module is
available, too.
- Using Docker, as [described
here](https://eikek.github.io/sharry/doc/quickstart#quickstart-with-docker).

## Documentation

Please see the [documentation site](https://eikek.github.io/sharry).

## Screenshots

![screenshot-1](https://raw.githubusercontent.com/eikek/sharry/master/modules/microsite/docs/screenshots/Selection_226.png)
![screenshot-2](https://raw.githubusercontent.com/eikek/sharry/master/modules/microsite/docs/screenshots/Selection_230.png)
![screenshot-3](https://raw.githubusercontent.com/eikek/sharry/master/modules/microsite/docs/screenshots/Selection_235.png)



## Contributions/Support

Feedback and other contributions are very welcome! You can [open an
issue](https://github.com/eikek/sharry/issues/new) 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](https://liberapay.com/eikek/) or
[paypal](https://paypal.me/eikek0).

Thank you so much!

## Technical

Sharry implements the [tus](https://tus.io) 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](https://typelevel.org/) libraries like
[cats](https://typelevel.org/cats/) and
[fs2](https://github.com/typelevel/fs2). The frontend is written in
[elm](https://elm-lang.org).

## License

This project is distributed under the
[GPLv3+](https://spdx.org/licenses/GPL-3.0-or-later.html)