Files

223 lines
3.6 KiB
Markdown
Raw Permalink Normal View History

2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
# Pingvin Share SelfHosted File Sharing
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
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 ApacheReverseProxy.
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
---
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
## Inhalt
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
- Voraussetzungen
- Verzeichnisstruktur
- Konfiguration (.env & docker-compose.yml)
- ApacheReverseProxy
- Erststart
- HTTPS (Lets Encrypt)
- Administration & Updates
- Sicherheitshinweise
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
---
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
## Voraussetzungen
- Ubuntu Server (z.B. 22.04 LTS) mit:
- Docker und Docker Compose
- Apache Webserver (`apache2`)
- DNSEintrag für:
- `pingvin.deinedomain.tld`
- Root oder sudoRechte
---
## Verzeichnisstruktur
Empfohlene Struktur auf dem Host:
2025-12-17 09:32:58 +00:00
```
2025-12-17 10:51:14 +01:00
/opt/
pingvin/
docker-compose.yml
.env
data/
images/
2025-12-17 09:32:58 +00:00
```
2025-12-17 10:51:14 +01:00
---
## Konfiguration
### .env
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
Datei: `/opt/pingvin/.env`
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
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
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
### docker-compose.yml
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
Datei: `/opt/pingvin/docker-compose.yml`
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
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
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
### Datenverzeichnisse vorbereiten
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
sudo mkdir -p /opt/pingvin/data/images
sudo chown -R 1000:1000 /opt/pingvin
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
---
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
## ApacheReverseProxy
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
### Module aktivieren
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
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
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
---
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
## Erststart
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
```
cd /opt/pingvin
docker compose up -d
```
Aufruf im Browser:
- `http://pingvin.deinedomain.tld`
Beim ersten Aufruf richtest du im WebInterface den AdminBenutzer und grundlegende Einstellungen ein.
---
## HTTPS (Lets 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 vHostKonfiguration 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
```
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
---
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
## Sicherheitshinweise
2025-12-17 09:32:58 +00:00
2025-12-17 10:51:14 +01:00
- Zugriff aus dem Internet möglichst nur über HTTPS bereitstellen.
- Starke, eindeutige Passwörter für AdminKonten verwenden.
- UploadGrößen und Ablaufzeiten in Pingvin Share passend konfigurieren.
- Regelmäßig DockerImages und Apache aktualisieren.
2025-12-17 09:32:58 +00:00