f5c27795f18a3fa1cdc3232b87c970b3dc73cbca
Pingvin Share – Self‑Hosted File Sharing
Dieses Projekt stellt eine schlanke, selbst gehostete Umgebung für den sicheren Datenaustausch bereit.
Pingvin Share ist eine WeTransfer‑ähnliche Lösung mit moderner Weboberfläche, ideal für gelegentliche große Dateiübertragungen hinter einem Apache‑Reverse‑Proxy.
Inhalt
- Voraussetzungen
- Verzeichnisstruktur
- Konfiguration (.env & docker-compose.yml)
- Apache‑Reverse‑Proxy
- Erststart
- HTTPS (Let’s Encrypt)
- Administration & Updates
- Sicherheitshinweise
Voraussetzungen
- Ubuntu Server (z.B. 22.04 LTS) mit:
- Docker und Docker Compose
- Apache Webserver (
apache2)
- DNS‑Eintrag für:
pingvin.deinedomain.tld
- Root‑ oder sudo‑Rechte
Verzeichnisstruktur
Empfohlene Struktur auf dem Host:
/opt/
pingvin/
docker-compose.yml
.env
data/
images/
Konfiguration
.env
Datei: /opt/pingvin/.env
PINGVIN_VERSION=latest
PINGVIN_HTTP_PORT=3000
PINGVIN_DATA_PATH=/opt/pingvin/data
PINGVIN_TIMEZONE=Europe/Vienna
PINGVIN_BEHIND_PROXY=true
PINGVIN_PUID=1000
PINGVIN_PGID=1000
docker-compose.yml
Datei: /opt/pingvin/docker-compose.yml
version: "3.8"
services:
pingvin-share:
image: stonith404/pingvin-share:\${PINGVIN_VERSION}
container_name: pingvin-share
restart: unless-stopped
environment:
TZ: \${PINGVIN_TIMEZONE}
PUID: \${PINGVIN_PUID}
PGID: \${PINGVIN_PGID}
PINGVIN_BEHIND_PROXY: \${PINGVIN_BEHIND_PROXY}
volumes:
- \${PINGVIN_DATA_PATH}:/opt/app/backend/data
- ${PINGVIN_DATA_PATH}/images:/opt/app/frontend/public/img
networks:
- pingvin_net
# nur lokal binden – Zugriff über Apache
ports:
- "127.0.0.1:${PINGVIN_HTTP_PORT}:3000"
networks:
pingvin_net:
driver: bridge
Datenverzeichnisse vorbereiten
sudo mkdir -p /opt/pingvin/data/images
sudo chown -R 1000:1000 /opt/pingvin
Apache‑Reverse‑Proxy
Module aktivieren
sudo a2enmod proxy proxy_http headers
sudo systemctl restart apache2
vHost für Pingvin Share
Datei: /etc/apache2/sites-available/pingvin.conf
<VirtualHost *:80>
ServerName pingvin.deinedomain.tld
ErrorLog ${APACHE_LOG_DIR}/pingvin_error.log
CustomLog ${APACHE_LOG_DIR}/pingvin_access.log combined
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ProxyTimeout 600
Timeout 600
LimitRequestBody 0
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
</VirtualHost>
Sites aktivieren:
sudo a2ensite pingvin.conf
sudo systemctl reload apache2
Erststart
cd /opt/pingvin
docker compose up -d
Aufruf im Browser:
http://pingvin.deinedomain.tld
Beim ersten Aufruf richtest du im Web‑Interface den Admin‑Benutzer und grundlegende Einstellungen ein.
HTTPS (Let’s Encrypt)
Optional: HTTPS mit Certbot und Apache einrichten:
sudo apt-get install certbot python3-certbot-apache
sudo certbot --apache -d pingvin.deinedomain.tld
Certbot passt die vHost‑Konfiguration an und richtet automatische Zertifikatserneuerung ein.
Administration & Updates
Logs ansehen
docker logs pingvin-share
journalctl -u apache2
Container aktualisieren
cd /opt/pingvin
docker compose pull
docker compose up -d
Sicherheitshinweise
- Zugriff aus dem Internet möglichst nur über HTTPS bereitstellen.
- Starke, eindeutige Passwörter für Admin‑Konten verwenden.
- Upload‑Größen und Ablaufzeiten in Pingvin Share passend konfigurieren.
- Regelmäßig Docker‑Images und Apache aktualisieren.
Description