# 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` ``` 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" ``` 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.