From 695953ecb178bd77a150d2b8262f34f67a6897cc Mon Sep 17 00:00:00 2001 From: Tangent Date: Wed, 24 Dec 2025 10:43:09 +0000 Subject: [PATCH] Add peertube/docker-compose.yml --- peertube/docker-compose.yml | 102 ++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 peertube/docker-compose.yml diff --git a/peertube/docker-compose.yml b/peertube/docker-compose.yml new file mode 100644 index 0000000..6649cb4 --- /dev/null +++ b/peertube/docker-compose.yml @@ -0,0 +1,102 @@ +# TODO change volumes to match local path(s) +# TODO change environment variables, make sure all instances match +# TODO To generate PeerTube secret, run: openssl rand -hex 32 + +volumes: + config: + driver: local + driver_opts: + type: none + o: bind + device: /Volumes/Treat/Containers/peertube/config + data: + driver: local + driver_opts: + type: none + o: bind + device: /Volumes/Treat/Containers/peertube/data + opendkim: + driver: local + driver_opts: + type: none + o: bind + device: /Volumes/Treat/Containers/peertube/opendkim + postgres: + driver: local + driver_opts: + type: none + o: bind + device: /Volumes/Treat/Containers/peertube/postgres + redis: + driver: local + driver_opts: + type: none + o: bind + device: /Volumes/Treat/Containers/peertube/redis + +services: + peertube: + # If you don't want to use the official image and build one from sources: + # build: + # context: . + # dockerfile: ./support/docker/production/Dockerfile + image: chocobozzz/peertube:production-bookworm + # Use a static IP for this container because nginx does not handle proxy host change without reload + # This container could be restarted on crash or until the postgresql database is ready for connection + # networks: + # default: + # ipv4_address: 172.18.0.42 + # ipv6_address: fdab:e4b3:21a2:ef1b::42 + environment: + POSTGRES_DB: peertube + PEERTUBE_DB_USERNAME: postgres + PEERTUBE_DB_PASSWORD: PASSWORD + PEERTUBE_DB_SSL: false + PEERTUBE_DB_HOSTNAME: postgres + PEERTUBE_WEBSERVER_HOSTNAME: DOMAIN + PEERTUBE_TRUST_PROXY: ["127.0.0.1", "loopback", "172.18.0.0/16"] + PEERTUBE_SECRET: GENERATE_ME + PEERTUBE_SMTP_HOSTNAME: postfix + PEERTUBE_SMTP_PORT: 25 + PEERTUBE_SMTP_FROM: noreply@DOMAIN + PEERTUBE_SMTP_TLS: false + PEERTUBE_SMTP_DISABLE_STARTTLS: false + PEERTUBE_ADMIN_EMAIL: EMAIL_ADDRESS + ports: + - "1935:1935" # Comment if you don't want to use the live feature + - "9000:9000" # Uncomment if you use another webserver/proxy or test PeerTube in local, otherwise not suitable for production + volumes: + - data:/data + - config:/config + depends_on: + - postgres + - redis + - postfix + restart: "always" + + postgres: + image: postgres:17-alpine + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: PASSWORD + POSTGRES_DB: peertube + volumes: + - postgres:/var/lib/postgresql/data + restart: "always" + + redis: + image: redis:8-alpine + volumes: + - redis:/data + restart: "always" + + postfix: + image: mwader/postfix-relay + environment: + POSTFIX_myhostname: DOMAIN + OPENDKIM_DOMAINS: DOMAIN=peertube + # see https://github.com/wader/postfix-relay/pull/18 + OPENDKIM_RequireSafeKeys: no + volumes: + - opendkim:/etc/opendkim/keys + restart: "always"