Een eigen PeerTube instance
vrijdag 16 december 2022 - 522 woorden, 3 min read
In navolging van het opzetten van een eigen Mastodon instance als alternatief voor Twitter, heb ik ook een eigen PeerTube instance opgezet voor mijn video's. PeerTube maakt net als Mastodon gebruik van het ActivityPub protocol. Je kunt dus PeerTube accounts volgen vanuit jouw Mastodon of Pixelfed account.
Setup
Voor het opzetten van een PeerTube instance heb ik deze documentatie gevolgd. In deze setup met docker compose
heb ik de volgende services achterwege gelaten:
- webserver, ik maak gebruik van een nginx reverse proxy setup
- certbot
- postfix, ik maak gebruik van mijn eigen smtp mailserver
Zo ziet mijn docker-compose.yml
er nu uit:
version: "3.3"
services:
peertube:
image: chocobozzz/peertube:production-bullseye
env_file:
- .env
ports:
- "127.0.0.1:1935:1935" # Comment if you don't want to use the live feature
- "127.0.0.1:9090:9000" # Uncomment if you use another webserver/proxy or test PeerTube in local, otherwise not suitable for production
volumes:
- assets:/app/client/dist
- ./docker-volume/data:/data
- ./docker-volume/config:/config
depends_on:
- postgres
- redis
restart: unless-stopped
postgres:
image: postgres:13-alpine
env_file:
- .env
volumes:
- ./docker-volume/db:/var/lib/postgresql/data
ports:
- "127.0.0.1:8432:5432"
restart: "unless-stopped"
redis:
image: redis:6-alpine
volumes:
- ./docker-volume/redis:/data
ports:
- "127.0.0.1:8379:6379"
restart: unless-stopped
Via een nginx reverse proxy draai ik zelf een nginx webserver waar ik middels certbot
en Let’s Encrypt een SSL certificaat heb aangemaakt.
Zo ziet mijn nginx configuratie eruit:
server {
listen 80;
listen [::]:80;
server_name tube.sebastix.com;
include snippets/letsencrypt.conf;
# Uncomment these lines when SSL certificates are generated by CertBot
return 301 https://$host$request_uri;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
server_name tube.sebastix.com;
server_tokens off;
access_log /var/log/nginx/tube.sebastix.com.access.log;
error_log /var/log/nginx/tube.sebastix.com.error.log;
ssl_certificate /etc/letsencrypt/live/tube.sebastix.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tube.sebastix.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/tube.sebastix.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:9090;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors *.sebastix.nl *.sebastix.com *.sebastix.dev nwb.social;";
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Het embedden van video’s op externe websites werkt niet out-of-the-box, daarom dat ik deze regel heb toegevoegd voor enkele sites waar ik de video’s embed:
add_header Content-Security-Policy "frame-ancestors *.sebastix.nl *.sebastix.com *.sebastix.dev nwb.social *sebastix.social;";
Upgrade naar v5
Vorige week verscheen versie 5.0.0 en de upgrade naar deze versie was iets meer werk dan alleen het uitvoeren van docker compose pull
.
In het .env
bestand heb ik een nieuwe variabel PEERTUBE_SECRET
moeten toevoegen om de peertube container weer te starten. In deze container heb ik daarna dit commando uitgevoerd: docker compose exec -u peertube peertube node dist/scripts/migrations/peertube-5.0.js
zoals beschreven in de release notes.
sebastian@tube.sebastix.com
Mijn PeerTube instance kun je bezoeken op https://tube.sebastix.com waar ik al verschillende playlists met video’s heb toegevoegd. Dit zijn verschillende video’s die verspreid stonden op YouTube onder meerdere accounts, Vimeo en Flickr. In mijn archief heb ik nog andere video’s die ik later online zal plaatsen. Dit zijn onder andere video’s die al meer dan 20 jaar oud zijn en gemaakt zijn tijdens het uitgaan in verschillende Belgische discotheken (lasershows).
Met PeerTube hoop ik een mooie oplossing te hebben gevonden om al mijn video’s op een eigen online plek te distribueren. Dit met hetzelfde gemak als wat ik gewend ben van YouTube of Vimeo. De tijd zal het uitwijzen of de oplossing ook werkt voor de langere termijn.