PeerTube on ZimaOS

Hi I’ve installed ZimaOS to use it as an easy to manage host OS for PeerTube streaming video platform

ZimaOS installed easily and looks great, but I don’t see PeerTube in the ZimasOS App Store

AI says that it can be installed as a Docker stack using Portianer but looking at the requirements it seems it may be as much work as installing natively under Debian

What’s my best bet here?

Will PeerTube be added to the store in the near future?

Best D

I will say this, I had never heard of PeerTube. But I did find they have a sample yaml, you can tweak it for your system, and use the custom app installer in the app store to install it.
PeerTube/support/docker/production/docker-compose.yml at develop · Chocobozzz/PeerTube

That link takes you to the example yaml, and here it is below. Mostly you will want to change mount points for volumes for it to use.

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
# If you don’t want to use the official image and build one from sources:
# build:
#   context: .
#   dockerfile: ./support/docker/production/Dockerfile.nginx
env_file:
- .env
ports:
- “80:80”
- “443:443”
volumes:
- type: bind
# Switch sources if you downloaded the whole repository
#source: ../../nginx/peertube
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
- certbot-www:/var/www/certbot
- ./docker-volume/certbot/conf:/etc/letsencrypt
- ./docker-volume/nginx-logs:/var/log/nginx
depends_on:
- peertube
restart: “always”

You can comment this certbot section if you want to use another webserver/proxy or test PeerTube in local

certbot:
container_name: certbot
image: certbot/certbot
volumes:
- ./docker-volume/certbot/conf:/etc/letsencrypt
- certbot-www:/var/www/certbot
restart: unless-stopped
entrypoint: /bin/sh -c “trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;”
depends_on:
- webserver

You can comment this webserver-reloader section if you want to use another webserver/proxy or test PeerTube in local

webserver-reloader:
image: alpine:latest
command: >
sh -c “trap exit TERM;
while :; do
sleep 21600 & wait $$!;
echo ‘Sending reload signal to webserver…’;
kill -HUP 1;
done”
pid: “service:webserver”
depends_on:
- webserver
restart: “always”

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
# 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
env_file:
- .env

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:
  # 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:
image: postgres:17-alpine
env_file:
- .env
volumes:
- ./docker-volume/db:/var/lib/postgresql/data
restart: “always”

redis:
image: redis:8-alpine
volumes:
- ./docker-volume/redis:/data
restart: “always”

postfix:
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.18.0.0/16
- subnet: fdab:e4b3:21a2:ef1b::/64

volumes:
assets:
certbot-www: