Browse Source
* example with TLS wrapper (RTMPS) and traefik * added example configuration for a MinIO S3 storage * separate examplepull/663/head
2 changed files with 130 additions and 0 deletions
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
version: '2' |
||||
|
||||
services: |
||||
owncast: |
||||
image: gabekangas/owncast:latest |
||||
restart: unless-stopped |
||||
volumes: |
||||
- ${PWD}/config-example.yaml:/app/config.yaml # Adjust once you create your own config.yaml |
||||
- owncast_db:/db # Remove if you don't want chat persistant |
||||
command: /app/owncast -configFile=config.yaml -database=/db/chat.db |
||||
ports: |
||||
- 8080:8080 |
||||
labels: |
||||
- "traefik.enable=false" |
||||
- "traefik.http.routers.owncast.rule=Host(`live.your.org`)" |
||||
- "traefik.http.routers.owncast.entrypoints=web,websecure" |
||||
- "traefik.http.routers.owncast.tls.certresolver=mytlschallenge" |
||||
- "traefik.tcp.routers.rtmpcast.entrypoints=rtmp" |
||||
- "traefik.tcp.routers.rtmpcast.rule=HostSNI(`live.your.org`)" |
||||
- "traefik.tcp.routers.rtmpcast.service=rtmpcast" |
||||
- "traefik.tcp.routers.rtmpcast.tls=true" |
||||
- "traefik.tcp.routers.rtmpcast.tls.certresolver=mytlschallenge" |
||||
- "traefik.tcp.services.rtmpcast.loadbalancer.server.port=1935" |
||||
traefik: |
||||
image: traefik:latest |
||||
restart: unless-stopped |
||||
command: |
||||
- --providers.docker=true |
||||
- --providers.docker.exposedbydefault=false |
||||
- --entrypoints.web.address=:80 |
||||
- --entrypoints.websecure.address=:443 |
||||
- --entrypoints.rtmp.address=:1935 |
||||
- --certificatesresolvers.mytlschallenge.acme.tlschallenge=true |
||||
# CHANGE THE ADDRESS BELOW TO YOUR ADDRESS |
||||
- --certificatesresolvers.mytlschallenge.acme.email=postmaster@mydomain.com |
||||
# COMMENT OUT THE LINE BELOW TO GET LIVE CERT |
||||
- --certificatesresolvers.mytlschallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory |
||||
- --certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json |
||||
volumes: |
||||
- traefik_certs:/letsencrypt/ |
||||
- /var/run/docker.sock:/var/run/docker.sock |
||||
ports: |
||||
- 80:80 |
||||
- 443:443 |
||||
- 1935:1935 |
||||
|
||||
volumes: |
||||
owncast_db: |
||||
traefik_certs: |
||||
|
@ -0,0 +1,80 @@
@@ -0,0 +1,80 @@
|
||||
version: '3.1' |
||||
|
||||
services: |
||||
owncast: |
||||
image: gabekangas/owncast:latest |
||||
restart: unless-stopped |
||||
volumes: |
||||
- ${PWD}/config-example.yaml:/app/config.yaml # Adjust once you create your own config.yaml |
||||
- owncast_db:/db # Remove if you don't want chat persistant |
||||
command: /app/owncast -configFile=config.yaml -database=/db/chat.db |
||||
ports: |
||||
- 8080:8080 |
||||
labels: |
||||
- "traefik.enable=false" |
||||
- "traefik.http.routers.owncast.rule=Host(`live.your.org`)" |
||||
- "traefik.http.routers.owncast.entrypoints=web,websecure" |
||||
- "traefik.http.routers.owncast.tls.certresolver=mytlschallenge" |
||||
- "traefik.tcp.routers.rtmpcast.entrypoints=rtmp" |
||||
- "traefik.tcp.routers.rtmpcast.rule=HostSNI(`live.your.org`)" |
||||
- "traefik.tcp.routers.rtmpcast.service=rtmpcast" |
||||
- "traefik.tcp.routers.rtmpcast.tls=true" |
||||
- "traefik.tcp.routers.rtmpcast.tls.certresolver=mytlschallenge" |
||||
- "traefik.tcp.services.rtmpcast.loadbalancer.server.port=1935" |
||||
traefik: |
||||
image: traefik:latest |
||||
restart: unless-stopped |
||||
command: |
||||
- --providers.docker=true |
||||
- --providers.docker.exposedbydefault=false |
||||
- --entrypoints.web.address=:80 |
||||
- --entrypoints.websecure.address=:443 |
||||
- --entrypoints.rtmp.address=:1935 |
||||
- --certificatesresolvers.mytlschallenge.acme.tlschallenge=true |
||||
# CHANGE THE ADDRESS BELOW TO YOUR ADDRESS |
||||
- --certificatesresolvers.mytlschallenge.acme.email=postmaster@mydomain.com |
||||
# COMMENT OUT THE LINE BELOW TO GET LIVE CERT |
||||
- --certificatesresolvers.mytlschallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory |
||||
- --certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json |
||||
volumes: |
||||
- traefik_certs:/letsencrypt/ |
||||
- /var/run/docker.sock:/var/run/docker.sock |
||||
ports: |
||||
- 80:80 |
||||
- 443:443 |
||||
- 1935:1935 |
||||
|
||||
# optionally serving your chunks yourself. |
||||
minio: |
||||
image: minio/minio |
||||
volumes: |
||||
- minio_data:/data |
||||
secrets: |
||||
- access_key |
||||
- secret_key |
||||
environment: |
||||
- MINIO_ACCESS_KEY_FILE=access_key |
||||
- MINIO_SECRET_KEY_FILE=secret_key |
||||
command: server /data |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.http.routers.minio.rule=Host(`s3-storage.your.org`)" |
||||
- "traefik.http.routers.minio.service=minio" |
||||
- "traefik.http.services.minio.loadbalancer.server.port=9000" |
||||
- "traefik.http.routers.minio.entryPoints=websecure" |
||||
- "traefik.http.routers.minio.tls=true" |
||||
- "traefik.http.routers.minio.middlewares=livecors" |
||||
- "traefik.http.routers.minio.tls.certresolver=mytlschallenge" |
||||
- "traefik.http.middlewares.livecors.headers.accesscontrolallowmethods=GET,OPTIONS" |
||||
- "traefik.http.middlewares.livecors.headers.allowedhosts=https://s3-storage.your.org" |
||||
|
||||
volumes: |
||||
owncast_db: |
||||
traefik_certs: |
||||
minio_data: |
||||
|
||||
secrets: |
||||
secret_key: |
||||
file: minio_secret.key |
||||
access_key: |
||||
file: minio_access.key |
Loading…
Reference in new issue