diff --git a/svgs/peertube.svg b/svgs/peertube.svg new file mode 100644 index 0000000000..dd7af546cf --- /dev/null +++ b/svgs/peertube.svg @@ -0,0 +1 @@ +PeerTube \ No newline at end of file diff --git a/templates/compose/peertube.yaml b/templates/compose/peertube.yaml new file mode 100644 index 0000000000..5995ac181f --- /dev/null +++ b/templates/compose/peertube.yaml @@ -0,0 +1,74 @@ +# documentation: https://docs.joinpeertube.org/install/docker +# slogan: Free, open-source and decentralized video platform. +# category: media +# tags: video,fediverse,activitypub,youtube,streaming,self-hosted +# logo: svgs/peertube.svg +# port: 9000 + + +services: + peertube: + image: chocobozzz/peertube:v8.1.5 # Released on April 23 2026 + environment: + - SERVICE_URL_PEERTUBE_9000 + - PEERTUBE_WEBSERVER_HOSTNAME=${SERVICE_FQDN_PEERTUBE} + - PEERTUBE_WEBSERVER_PORT=${PEERTUBE_WEBSERVER_PORT:-443} + - PEERTUBE_WEBSERVER_HTTPS=${PEERTUBE_WEBSERVER_HTTPS:-true} + - PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback", "172.18.0.0/16"] + - PEERTUBE_SECRET=${SERVICE_HEX_32_PEERTUBESECRET} + - PEERTUBE_DB_USERNAME=${SERVICE_USER_POSTGRESQL} + - PEERTUBE_DB_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} + - PEERTUBE_DB_HOSTNAME=postgres + - PEERTUBE_DB_NAME=${POSTGRES_DB:-peertube} + - PEERTUBE_DB_SSL=false + - PEERTUBE_REDIS_HOSTNAME=redis + - PEERTUBE_SMTP_HOSTNAME=postfix + - PEERTUBE_SMTP_PORT=25 + - PEERTUBE_SMTP_FROM=noreply@${SERVICE_FQDN_PEERTUBE} + - PEERTUBE_SMTP_TLS=false + - PEERTUBE_SMTP_DISABLE_STARTTLS=false + - PEERTUBE_ADMIN_EMAIL=${PEERTUBE_ADMIN_EMAIL:?} + - POSTGRES_USER=${SERVICE_USER_POSTGRESQL} + - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} + - POSTGRES_DB=${POSTGRES_DB:-peertube} + volumes: + - peertube-data:/data + - peertube-config:/config + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + restart: always + + postgres: + image: postgres:17-alpine + environment: + - POSTGRES_USER=${SERVICE_USER_POSTGRESQL} + - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} + - POSTGRES_DB=${POSTGRES_DB:-peertube} + volumes: + - db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB:-peertube}"] + interval: 5s + timeout: 5s + retries: 10 + restart: always + + redis: + image: redis:8-alpine + volumes: + - redis-data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 5s + retries: 10 + restart: always + + postfix: + image: mwader/postfix-relay + environment: + - POSTFIX_myhostname=${SERVICE_FQDN_PEERTUBE} + restart: always