version: "{{ compose_version }}" networks: proxy: name: "{{ traefik_network }}" db: name: peertube_db redis: name: peertube_redis volumes: db: name: peertube_db assets: name: peertube_assets redis: name: peertube_redis data: name: peertube_data config: name: peertube_config services: # You can comment this webserver section if you want to use another webserver/proxy or test PeerTube in local webserver: image: chocobozzz/peertube-webserver:latest volumes: - ./peertube.conf:/etc/nginx/conf.d/peertube.template - assets:/var/www/peertube/peertube-latest/client/dist:ro - data:/var/www/peertube/storage env_file: conf.env labels: traefik.http.routers.peertube.entrypoints: websecure traefik.http.routers.peertube.rule: "Host(`{{ peertube_subdomain }}.{{ domain_name }}`)" traefik.http.services.peertube.loadbalancer.server.port: 80 traefik.enable: true networks: - proxy restart: unless-stopped app: image: "chocobozzz/peertube:{{ peertube_version }}-bookworm" container_name: peertube networks: - proxy - db - redis volumes: - assets:/app/client/dist - data:/data - config:/config - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro env_file: conf.env restart: unless-stopped db: image: "postgres:{{ postgres_version }}" container_name: "{{ peertube_db_container_name }}" env_file: conf.env volumes: - db:/var/lib/postgresql/data networks: - db restart: unless-stopped redis: image: "redis:{{ redis_version }}" container_name: "{{ peertube_redis_container }}" volumes: - redis:/data networks: - db restart: unless-stopped