Auf der Sucher nach einer Lösung um schnell Dateien teile zu können (wie z.B. WeTransfer) bin ich auf Sharry von eikek gestoßen.
Es biete genau die Funktionen die ich brauche:
- einfache Benutzerverwaltung
- ansprechendes Webinterface
- Uploadfolder für nicht registierte Benutzer
- Downloadbeschränkungen: Passwort, Lifetime, Download-Limit
- periodische Cleanups
- Mailversand der Down-/Uploadlinks
Die Installation & Konfiguration ist dank docker-compose und der sehr guten Dokumentation von eikek ein Kinderspiel. Es werden nur zwei Dateien angelegt (docker-compose.yml & sharry.conf) und fertig ist die Geschichte.
In meinem Setup verbindet sich der Sharry-Container mit drei Netzwerken:
- sharry-net : sharry & db Container
- nginx-proxy : sharry & nginx-proxy (Reverse-Proxy und LE)
- mailcow-net : Mailcow-Dockerized Netz für den Mailversand
docker-compose.yml
version: '3.7'
services:
restserver:
image: eikek0/sharry:latest
container_name: sharry
command: /opt/sharry.conf
volumes:
- ${PWD}/sharry.conf:/opt/sharry.conf
depends_on:
- db
networks:
- sharry-net
- nginx-proxy
- mailcow-net
environment:
- VIRTUAL_HOST=<URL>
- LETSENCRYPT_HOST=<URL>
- LETSENCRYPT_EMAIL=<mail>
db:
image: postgres:13.3
container_name: postgres_db
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=dbuser
- POSTGRES_PASSWORD=<DB-PW>
- POSTGRES_DB=dbname
networks:
- sharry-net
volumes:
postgres_data:
networks:
sharry-net:
nginx-proxy:
external:
name: nginx-proxy
mailcow-net:
external:
name: mailcowdockerized_mailcow-network
sharry.conf
sharry.restserver {
base-url = "https://<URL>"
bind {
address = "0.0.0.0"
port = 9090
}
webapp {
app-name = "NossCo Sharry"
default-language = "de"
}
backend {
auth {
fixed.enabled = true ## enabled admin:admin access
}
jdbc {
url = "jdbc:postgresql://db:5432/dbname"
user = "dbuser"
password = "<DB-PW>"
}
signup {
mode = "closed"
invite-time = "14 days"
invite-password = "generate-invite"
}
mail {
enabled = true
smtp {
host = "postfix-mailcow"
port = "587"
ssl-type = "starttls"
check-certificates = false
timeout = "10 seconds"
default-from = "<MAILADRESS>"
user = "<MAILUSER>"
password = "<MAIL-PW>"
list-id = "Sharry"
}
}
}
}
Nachdem beide Dateien erstellt wurden, pullt man die benötigten Images
docker-compose pull
und startet danach das erste mal die Container.
docker-compose up
Beim ersten Start wird die Datenbank angelegt und (zumindest bei mir) wars das dann. Kein Start der App. Naja, reboot tut gut ... also mit CTRL-C die Container gekillt und neu gestartet und gleich in den Hintegrund verbannt.
docker-compose up -d
Siehe da! Es funktioniert!
Die default Logindaten sind admin:admin. Nach dem Login direkt einen neuen Benutzer anlegen, Adminrechte und Passwort vergeben, umloggen und den default Admin löschen. Dann kann nichts mehr schief gehen.
Links:
- Sharry Website : https://eikek.github.io/sharry/
- Sharry Dokumentation : https://eikek.github.io/sharry/doc/
- Sharry Github Repo : https://github.com/eikek/sharry