TL;DR
Lorsqu’on active PEERTUBE_OBJECT_STORAGE_PROXY_PROXIFY_PRIVATE_FILES, comment on l’utilise?
Bonjour !
J’installe PeerTube avec le docker-compose.yml proposé, légèrement modifié pour enlever certbot et postfix (j’ai un conteneur séparé pour certbot et un serveur de courriel externe).
Voici mon docker-compose.yml :
version: "3.3"
services:
webserver:
image: chocobozzz/peertube-webserver:latest
env_file:
- .env
ports:
- "80:80"
- "443:443"
volumes:
- type: bind
source: ./docker-volume/nginx/peertube
target: /etc/nginx/conf.d/peertube.template
- assets:/var/www/peertube/peertube-latest/client/dist:ro
- ./docker-volume/data:/var/www/peertube/storage
- /root/data/certbot/certs:/etc/letsencrypt
depends_on:
- peertube
restart: "always"
peertube:
image: chocobozzz/peertube:production-bookworm
networks:
default:
ipv4_address: 172.18.0.42
env_file:
- .env
ports:
- "1935:1935"
volumes:
- assets:/app/client/dist
- ./docker-volume/data:/data
- ./docker-volume/config:/config
depends_on:
- postgres
- redis
restart: "always"
postgres:
image: postgres:13-alpine
env_file:
- .env
volumes:
- ./docker-volume/db:/var/lib/postgresql/data
restart: "always"
redis:
image: redis:6-alpine
volumes:
- ./docker-volume/redis:/data
restart: "always"
networks:
default:
ipam:
driver: default
config:
- subnet: 172.18.0.0/16
volumes:
assets:
Et ça fonctionne.
Maintenant, ne trouvant pas où ajouter ma configuration en YAML pour l’Object Storage (docker-volume/config/local.production.json est le seul fichier de config hors du conteneur), j’ai décidé d’ajouter ça dans le .env lu par docker compose. Ça donne ça :
PEERTUBE_WEBSERVER_HOSTNAME=peertube.exemple.com
PEERTUBE_OBJECT_STORAGE_ENABLED=true
PEERTUBE_OBJECT_STORAGE_ENDPOINT=s3.bhs.perf.cloud.ovh.net
PEERTUBE_OBJECT_STORAGE_REGION=bhs
PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC="public-read"
PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE="private"
PEERTUBE_OBJECT_STORAGE_PROXY_PROXIFY_PRIVATE_FILES=true
PEERTUBE_OBJECT_STORAGE_CREDENTIALS_ACCESS_KEY_ID=mon_cle_id
PEERTUBE_OBJECT_STORAGE_CREDENTIALS_SECRET_ACCESS_KEY=ma_cle_secrete
PEERTUBE_OBJECT_STORAGE_MAX_UPLOAD_PART=5368709120
PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BUCKET_NAME=nom_de_mon_bucket
PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_PREFIX=streaming-playlists/
PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BASE_URL=https://peertube.exemple.com/
PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL=private
Tout fonctionne bien pour le transcodage puis l’envoie des fichiers en résultant dans le bucket. Mais dès qu’on recharge la page, impossible pour PeerTube de retrouver la vidéo depuis le bucket. Bref, il peut ajouter des fichiers dans le bucket, mais pas les relire.
J’utilise le fichier original proposé par la doc pour docker comme fichier de config nginx et je me doute bien que le problème vient de là.
Est-ce que j’ai besoin d’un fichier de config supplémentaire pour nginx avec un sous-domaine différent qui ferait office de reverse-proxy et cache entre les clients et le bucket et pointer PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BASE_URL vers ce sous-domaine?
C’est cette méthode que j’utilise avec Mastodon, mais son bucket et son contenu doivent être en public-read pour que le reverse proxy puisse s’y connecter, ce qui m’embête légèrement et que je n’ai pas tellement envie de reproduire avec le bucket pour PeerTube.
Si j’ai bien compris, PEERTUBE_OBJECT_STORAGE_PROXY_PROXIFY_PRIVATE_FILES permet d’activer une fonction de PeerTube permettant de récupérer les fichiers dans le bucket en s’authentifiant?
Toujours si j’ai bien compris, est-ce que ce « reverse proxy intégré » de PeerTube peut récupérer les fichiers dans le bucket privé en s’authentifiant?
Est-ce qu’il existe un exemple de configuration?
Merci !