-
Notifications
You must be signed in to change notification settings - Fork 23
/
docker-compose.yml
87 lines (87 loc) · 3.66 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
version: "3.3"
services:
ganymede-api:
container_name: ganymede-api
image: ghcr.io/zibbp/ganymede:latest
restart: unless-stopped
depends_on:
- ganymede-db
environment:
- DEBUG=false
- TZ=America/Chicago # Set to your timezone
# Data paths in container; update the mounted volume paths as well
- VIDEOS_DIR=/data/videos
- TEMP_DIR=/data/temp
- LOGS_DIR=/data/logs
- CONFIG_DIR=/data/config
# Database settings
- DB_HOST=ganymede-db
- DB_PORT=5432
- DB_USER=ganymede
- DB_PASS=PASSWORD
- DB_NAME=ganymede-prd
- DB_SSL=disable
#- DB_SSL_ROOT_CERT= # path to cert in the container if DB_SSL is not disabled
- JWT_SECRET=SECRET # set as a random string
- JWT_REFRESH_SECRET=SECRET # set as a random string
- TWITCH_CLIENT_ID= # from your twitch application
- TWITCH_CLIENT_SECRET= # from your twitch application
- FRONTEND_HOST=http://IP:PORT # URL to the frontend service. Needs to be the 'public' url that you visit.
#- COOKIE_DOMAIN= # Optional domain that the cookies will be set to. Should be the top level domain with a reverse proxy (e.g. `domain.com`).
# Worker settings. Max number of tasks to run in parallel per type.
- MAX_CHAT_DOWNLOAD_EXECUTIONS=3
- MAX_CHAT_RENDER_EXECUTIONS=2
- MAX_VIDEO_DOWNLOAD_EXECUTIONS=2
- MAX_VIDEO_CONVERT_EXECUTIONS=3
# Optional OAuth settings
# - OAUTH_ENABLED=false
# - OAUTH_PROVIDER_URL=
# - OAUTH_CLIENT_ID=
# - OAUTH_CLIENT_SECRET=
# - OAUTH_REDIRECT_URL=http://IP:PORT/api/v1/auth/oauth/callback # Points to the API service
volumes:
- /path/to/vod/storage:/data/videos # update VIDEOS_DIR env var
- ./temp:/data/temp # update TEMP_DIR env var
- ./logs:/data/logs # queue logs
- ./config:/data/config # config and other miscellaneous files
ports:
- 4800:4000
ganymede-frontend:
container_name: ganymede-frontend
image: ghcr.io/zibbp/ganymede-frontend:latest
restart: unless-stopped
environment:
- API_URL=http://IP:PORT # Points to the API service; the container must be able to access this URL internally
- CDN_URL=http://IP:PORT # Points to the nginx service
- SHOW_SSO_LOGIN_BUTTON=true # show/hide SSO login button on login page
- FORCE_SSO_AUTH=false # force SSO auth for all users (bypasses login page and redirects to SSO)
- REQUIRE_LOGIN=false # require login to view videos
ports:
- 4801:3000
ganymede-db:
container_name: ganymede-db
image: postgres:14
volumes:
- ./ganymede-db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=PASSWORD
- POSTGRES_USER=ganymede
- POSTGRES_DB=ganymede-prd
ports:
- 4803:5432
# Nginx is not really required, it provides nice-to-have caching. The API container will serve the VIDEO_DIR env var path if you want to use that instead (e.g. VIDEOS_DIR=/data/videos would be served at IP:4800/data/videos/channel/channel.jpg).
ganymede-nginx:
container_name: ganymede-nginx
image: nginx
volumes:
- /path/to/nginx.conf:/etc/nginx/nginx.conf:ro
- /pah/to/vod/stoage:/data/videos
ports:
- 4802:8080
# River UI is a frontend for the task system that Ganymede uses. This provides a more in-depth look at the task queue.
ganymede-river-ui:
image: ghcr.io/riverqueue/riverui:0.3
environment:
- DATABASE_URL=postgres://ganymede:DB_PASSWORD@ganymede-db:5432/ganymede-prd # update with env settings from the ganymede-db container. If you're using the default database settings then just update the DB_PASSWORD env var.
ports:
- 4804:8080