02. Docker Compose File
Docker compose File
compose.yml
services:
peertube:
users: "1000:1000"
# 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
# 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.34.0.42
ipv6_address: fdab:e4b3:21a2:ef1b::42
env_file:
- .env
ports:
- "1935:1935" # Comment if you don't want to use the live feature
- "1001:9000" # Uncomment if you use another webserver/proxy or test PeerTube in local, otherwise not suitable for production
volumes:
# Remove the following line if you want to use another webserver/proxy or test PeerTube in local
- assets:/app/client/dist
- ./docker-volume/data:/data
- ./docker-volume/config:/config
depends_on:
- postgres
- redis
- postfix
restart: "always"
postgres:
users: "1000:1000"
# Bumping the major version on an existing data directory requires a proper PostgreSQL upgrade
# See https://docs.joinpeertube.org/install/docker#upgrade-postgresql-container
image: postgres:17-alpine
env_file:
- .env
volumes:
# With PostgreSQL >= 18, witch the mount target to /var/lib/postgresql instead
# (data dir is nested under a subfolder, for example /var/lib/postgresql/18/docker)
# See https://hub.docker.com/_/postgres for more information
- ./docker-volume/db:/var/lib/postgresql/data
restart: "always"
redis:
users: "1000:1000"
image: redis:8-alpine
volumes:
- ./docker-volume/redis:/data
restart: "always"
postfix:
users: "1000:1000"
image: mwader/postfix-relay
env_file:
- .env
volumes:
- ./docker-volume/opendkim/keys:/etc/opendkim/keys
restart: "always"
networks:
default:
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 172.34.0.0/16
- subnet: fdab:e4b3:21a2:ef1b::/64
volumes:
assets:
.env File
.env
# Maximum Video Upload Size Expressed in MiB
PEERTUBE_VIDEO_FILES_MAX_SIZE=1000MiB
# Database / Postgres service configuration
POSTGRES_USER=peertube
POSTGRES_PASSWORD=df9j938fje89iojksfskdf93jksdkfj9oijr98ijwfj9io
# Postgres database name "peertube"
POSTGRES_DB=peertube
# The database name used by PeerTube will be PEERTUBE_DB_NAME (only if set) *OR* 'peertube'+PEERTUBE_DB_SUFFIX
PEERTUBE_DB_NAME=peertube
PEERTUBE_DB_SUFFIX=_prod
# Database username and password used by PeerTube must match Postgres', so they are copied:
PEERTUBE_DB_USERNAME=$POSTGRES_USER
PEERTUBE_DB_PASSWORD=$POSTGRES_PASSWORD
PEERTUBE_DB_SSL=false
# Default to Postgres service name "postgres" in docker-compose.yml
PEERTUBE_DB_HOSTNAME=postgres
# PeerTube server configuration
# If you test PeerTube in local: use "peertube.localhost" and add this domain to your host file resolving on 127.0.0.1
PEERTUBE_WEBSERVER_HOSTNAME=exampletube.org
# If you just want to test PeerTube on local
#PEERTUBE_WEBSERVER_PORT=9000
#PEERTUBE_WEBSERVER_HTTPS=true
# If you need more than one IP as trust_proxy
# pass them as a comma separated array:
PEERTUBE_TRUST_PROXY=["62.45.155.45", "172.18.0.0/24", "10.69.4.105"]
# Generate one using `openssl rand -hex 32`
PEERTUBE_SECRET=8daef45034d9a099fc4f4487f010aaf5c5231da15f1ab3sdfjiowefjosifjoie
# E-mail configuration
# If you use a Custom SMTP server
[email protected]
PEERTUBE_SMTP_PASSWORD=asdflsjdflksnlkjlk
# Default to Postfix service name "postfix" in docker-compose.yml
# May be the hostname of your Custom SMTP server
PEERTUBE_SMTP_HOSTNAME=smtp.porkbun.com
PEERTUBE_SMTP_PORT=587
[email protected]
PEERTUBE_SMTP_TLS=false
PEERTUBE_SMTP_DISABLE_STARTTLS=true
[email protected]
# Postfix service configuration
#POSTFIX_myhostname=<MY DOMAIN>
# If you need to generate a list of sub/DOMAIN keys
# pass them as a whitespace separated string <DOMAIN>=<selector>
#OPENDKIM_DOMAINS=<MY DOMAIN>=peertube
# see https://github.com/wader/postfix-relay/pull/18
#OPENDKIM_RequireSafeKeys=no
# If you want to enable object storage for PeerTube, set the following variables.
#PEERTUBE_OBJECT_STORAGE_ENABLED=
#PEERTUBE_OBJECT_STORAGE_ENDPOINT=
#PEERTUBE_OBJECT_STORAGE_REGION=
#PEERTUBE_OBJECT_STORAGE_CREDENTIALS_ACCESS_KEY_ID=
#PEERTUBE_OBJECT_STORAGE_CREDENTIALS_SECRET_ACCESS_KEY=
#PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BUCKET_NAME=
#PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_PREFIX=
#PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BASE_URL=
#PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BUCKET_NAME=
#PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_PREFIX=
#PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BASE_URL=
#PEERTUBE_OBJECT_STORAGE_USER_EXPORTS_BUCKET_NAME=
#PEERTUBE_OBJECT_STORAGE_USER_EXPORTS_PREFIX=
#PEERTUBE_OBJECT_STORAGE_USER_EXPORTS_BASE_URL=
#PEERTUBE_OBJECT_STORAGE_ORIGINAL_VIDEO_FILES_BUCKET_NAME=
#PEERTUBE_OBJECT_STORAGE_ORIGINAL_VIDEO_FILES_PREFIX=
#PEERTUBE_OBJECT_STORAGE_ORIGINAL_VIDEO_FILES_BASE_URL=
#PEERTUBE_OBJECT_STORAGE_CAPTIONS_BUCKET_NAME=
#PEERTUBE_OBJECT_STORAGE_CAPTIONS_PREFIX=
#PEERTUBE_OBJECT_STORAGE_CAPTIONS_BASE_URL=
# Comment these variables if your S3 provider does not support object ACL
#PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC="public-read"
#PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE="private"
#PEERTUBE_LOG_LEVEL=info
# /!\ Prefer to use the PeerTube admin interface to set the following configurations /!\
#PEERTUBE_SIGNUP_ENABLED=true
#PEERTUBE_TRANSCODING_ENABLED=true
#PEERTUBE_CONTACT_FORM_ENABLED=true
The Environment file has a couple of things to think about and that you need to change.
1. Already on the top we defined the Maximum Video Upload size variable. By default the max upload size is 100MB and hence it is recommended to increase its size. For instance 1 GB which can be expressed by 1000MiB
PEERTUBE_VIDEO_FILES_MAX_SIZE=1000MiB
2. The second thing we need to organize is the Postgres database. As always we just need to create a user, database name and password
POSTGRES_USER=peertube
POSTGRES_PASSWORD=df9j938fje89iojksfskdf93jksdkfj9oijr98ijwfj9io
# Postgres database name "peertube"
POSTGRES_DB=peertube
3. The third thing that needs to be adjusted is the domain name that you want to use for your PeerTube instance. It is important that you are sure about it on beforehand since you cannot change it later, due to the fact that it will participate in the Fediverse.
PEERTUBE_WEBSERVER_HOSTNAME=exampletube.org
4. The next thing are the Email Credentials. By default it uses Postfix, and you can keep this container if you later want to use it. However, lots of people just have standard SMTP server with a domain registrar e.g Porkbun. If you want this then you need to fill in the following information
# E-mail configuration
# If you use a Custom SMTP server
PEERTUBE_SMTP_USERNAME=noreply[at]example.org
PEERTUBE_SMTP_PASSWORD=difficult_password
# Default to Postfix service name "postfix" in docker-compose.yml
# May be the hostname of your Custom SMTP server
PEERTUBE_SMTP_HOSTNAME=smtp.example.org
PEERTUBE_SMTP_PORT=587
[email protected]
PEERTUBE_SMTP_TLS=false
PEERTUBE_SMTP_DISABLE_STARTTLS=true
[email protected]
3.
No comments to display
No comments to display