Piped ist eine bemerkenswerte Open-Source-Alternative zu YouTube, die mit dem Ziel entwickelt wurde, den Nutzern eine privacy-freundliche und weniger restriktive Plattform zum Ansehen von YouTube-Inhalten zu bieten. Hervorgegangen aus dem Bedürfnis, eine Lösung gegen die zunehmende Anzahl von Werbeanzeigen, Tracking und anderen Einschränkungen auf YouTube zu finden, positioniert sich Piped als eine leistungsstarke Option für diejenigen, die ein unbelastetes Seherlebnis suchen.
Danke an @pinns für deine Bereitstellung der Anleitung.
| Darum | Änderungen |
|---|---|
| 11.03.2024 | Erstellung dieser Anleitung |
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
2. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/piped
3. Aktuelle Version downloaden
Nun laden wir uns mittels git die aktuelle Version herunter.
git clone https://github.com/TeamPiped/Piped-Docker /opt/containers/piped
4. Konfiguration ausführen
Nun starten wir die Konfiguration. Hier legt ihr die FQDN für Piped fest. Dazu gebt ihr folgendes ein:
cd /opt/containers/piped ./configure-instance.sh
Gebt jetzt eure Domain ein und beim letzten Schritt “nginx”.
Enter a hostname for the Frontend (eg: piped.kavin.rocks): piped.euredomain.de Enter a hostname for the Backend (eg: pipedapi.kavin.rocks): pipedapi.euredomain.de Enter a hostname for the Proxy (eg: pipedproxy.kavin.rocks): pipedproxy.euredomain.de Enter the reverse proxy you would like to use (either caddy or nginx): nginx
5. Docker Compose anpassen
Nun passen wir die Docker Compose Datei etwas an.
nano /opt/containers/piped/docker-compose.yml
Ich zeige hier, was ihr alles hinzufügen müsst. Später zeige ich dann meine komplette Docker Compose Datei.
auskommentieren:
nginx:
#ports:
#- "8080:80"
anpassen:
nginx:
- "traefik.http.services.piped.loadbalancer.server.port=80"
hinzufügen:
nginx:
labels:
- "traefik.http.routers.piped.tls=true"
- "traefik.http.routers.piped.tls.certresolver=http_resolver"
- "traefik.http.routers.piped.service=piped"
- "traefik.docker.network=proxy"
- "traefik.http.routers.piped.middlewares=default@file"
networks:
- default
- proxy
watchtower:
networks:
- default
- proxy
networks:
proxy:
external: true
So sieht es bei mir aus:
version: "3"
services:
pipedfrontend:
image: 1337kavin/piped-frontend:latest
restart: unless-stopped
depends_on:
- piped
container_name: piped-frontend
entrypoint: ash -c 'sed -i s/pipedapi.kavin.rocks/pipedapi.fatalplayers.de/g /usr/share/nginx/html/assets/* && /docker-entrypoint.sh && nginx -g "daemon off;"'
piped-proxy:
image: 1337kavin/piped-proxy:latest
restart: unless-stopped
environment:
- UDS=1
volumes:
- piped-proxy:/app/socket
container_name: piped-proxy
piped:
image: 1337kavin/piped:latest
restart: unless-stopped
volumes:
- ./config/config.properties:/app/config.properties:ro
depends_on:
- postgres
container_name: piped-backend
nginx:
image: nginx:mainline-alpine
restart: unless-stopped
#ports:
#- "8080:80"
volumes:
- ./config/nginx.conf:/etc/nginx/nginx.conf:ro
- ./config/pipedapi.conf:/etc/nginx/conf.d/pipedapi.conf:ro
- ./config/pipedproxy.conf:/etc/nginx/conf.d/pipedproxy.conf:ro
- ./config/pipedfrontend.conf:/etc/nginx/conf.d/pipedfrontend.conf:ro
- ./config/ytproxy.conf:/etc/nginx/snippets/ytproxy.conf:ro
- piped-proxy:/var/run/ytproxy
container_name: nginx
depends_on:
- piped
- piped-proxy
- pipedfrontend
labels:
- "traefik.enable=true"
- "traefik.http.routers.piped.rule=Host(`piped.euredomain.de`, `pipedapi.euredomain.de`, `pipedproxy.euredomain.de`)"
- "traefik.http.routers.piped.entrypoints=websecure"
- "traefik.http.services.piped.loadbalancer.server.port=80"
- "traefik.http.routers.piped.tls=true"
- "traefik.http.routers.piped.tls.certresolver=http_resolver"
- "traefik.http.routers.piped.service=piped"
- "traefik.docker.network=proxy"
- "traefik.http.routers.piped.middlewares=default@file"
networks:
- default
- proxy
postgres:
image: postgres:15
restart: unless-stopped
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=piped
- POSTGRES_USER=piped
- POSTGRES_PASSWORD=changeme
container_name: postgres
watchtower:
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/timezone:/etc/timezone:ro
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_RESTARTING=true
container_name: watchtower
command: piped-frontend piped-backend piped-proxy varnish nginx postgres watchtower
networks:
- default
- proxy
volumes:
piped-proxy: null
networks:
proxy:
external: true
6. Piped starten
Nun können wir Piped starten. Dazu gebt ihr folgendes ein:
docker compose -f /opt/containers/piped/docker-compose.yml up -d
Wenn ihr nun auf eure Homepage geht, solltet ihr folgendes sehen:

