T-HUB/infra/occupymedia/docker-compose.tube.yml
glass beadian aa5e262f3a Tactical Media Broadcast Hub — initial release
Self-hosted multi-platform broadcast newsroom for activist collectives:
publishing pipeline with group approval and DST-proof scheduling, TweetDeck-style
column wall with hostile-content-safe rendering, live control room with Auto
Director, bridged chat governance with polls and quorum, distributed sandboxed
transcode workers, encrypted content-addressed archive, monthly analytics.

MIT licensed. See README.md and docs/.
2026-10-10 11:56:42 +00:00

52 lines
1.5 KiB
YAML

# occupymedia.cc — TUBE CT (occ-tube, CT 151, tailscale 100.92.231.98)
# PeerTube plane: peertube + dedicated postgres + redis + postfix relay.
# Day 1: local storage on the CT volume (500G thin). Flip to R2 by setting
# PEERTUBE_OBJECT_STORAGE_ENABLED=true + keys in peertube.env, then recreate.
name: occ-tube
services:
peertube-postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: peertube
POSTGRES_PASSWORD: ${PEERTUBE_DB_PASSWORD:?}
POSTGRES_DB: peertube
volumes: [peertube_pgdata:/var/lib/postgresql/data]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U peertube"]
interval: 5s
retries: 10
restart: unless-stopped
peertube-redis:
image: redis:7-alpine
restart: unless-stopped
postfix:
image: mwader/postfix-relay
environment:
- POSTFIX_myhostname=tube.occupymedia.cc
restart: unless-stopped
peertube:
image: chocobozzz/peertube:production-bookworm
env_file: peertube.env
ports:
- "9000:9000" # tunnel: tube.occupymedia.cc → 100.92.231.98:9000
- "1935:1935" # RTMP ingest from media-worker (cross-CT via tailscale)
volumes:
- peertube_config:/app/config
- peertube_assets:/app/storage/client-overrides
- peertube_data:/app/storage
depends_on:
peertube-postgres: { condition: service_healthy }
peertube-redis: { condition: service_started }
postfix: { condition: service_started }
restart: unless-stopped
volumes:
peertube_pgdata:
peertube_config:
peertube_assets:
peertube_data: