add main server

This commit is contained in:
rebel onion 2025-06-15 14:21:05 -05:00
parent 2f3f0b7820
commit 50124a7efa
18 changed files with 405 additions and 0 deletions

View file

@ -9,6 +9,7 @@
services:
mongo:
container_name: komodo-mongo
image: mongo
labels:
komodo.skip: # Prevent Komodo from stopping with StopAllContainers
@ -26,6 +27,7 @@ services:
MONGO_INITDB_ROOT_PASSWORD: ${KOMODO_DB_PASSWORD}
core:
container_name: komodo-core
image: ghcr.io/moghtech/komodo-core:${COMPOSE_KOMODO_IMAGE_TAG:-latest}
labels:
komodo.skip: # Prevent Komodo from stopping with StopAllContainers

View file

@ -1,6 +1,7 @@
services:
postgresql:
container_name: authentik-postgresql
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
healthcheck:
@ -20,6 +21,7 @@ services:
labels:
- wud.watch=false
redis:
container_name: authentik-redis
image: docker.io/library/redis:alpine
command: --save 60 1 --loglevel warning
restart: unless-stopped
@ -32,6 +34,7 @@ services:
volumes:
- redis:/data
server:
container_name: authentik-server
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:latest
restart: unless-stopped
command: server
@ -53,6 +56,7 @@ services:
- postgresql
- redis
worker:
container_name: authentik-worker
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:latest
restart: unless-stopped
command: worker

View file

@ -1,5 +1,6 @@
services:
periphery:
container_name: komodo-periphery
image: ghcr.io/moghtech/komodo-periphery:${COMPOSE_KOMODO_IMAGE_TAG:-latest}
labels:
komodo.skip: # Prevent Komodo from stopping with StopAllContainers

View file

@ -0,0 +1,13 @@
services:
bangserver:
container_name: bangserver
image: ghcr.io/rebelonion/bangserver:latest
security_opt:
- seccomp:unconfined
volumes:
- /home/docker/bangserver:/etc/bangserver:ro
ports:
- 3003:3003
environment:
- BANG_HOST=${BANG_HOST}
restart: unless-stopped

View file

@ -0,0 +1,10 @@
services:
byparr:
container_name: byparr
image: ghcr.io/thephaseless/byparr:latest
restart: unless-stopped
shm_size: 2gb
volumes:
- /home/docker/byparr/screenshots:/app/screenshots # (optional) For screenshots when exception occurs
ports:
- "8191:8191"

View file

@ -0,0 +1,13 @@
services:
freshrss:
image: lscr.io/linuxserver/freshrss:latest
container_name: freshrss
environment:
- PUID=1000
- PGID=10000
- TZ=America/Chicago
volumes:
- /home/docker/freshrss/config:/config
ports:
- 8001:80
restart: unless-stopped

View file

@ -0,0 +1,73 @@
services:
ganymede:
container_name: ganymede
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=${POSTGRES_PASSWORD}
- DB_NAME=ganymede-prd
- DB_SSL=disable
# - DB_SSL_ROOT_CERT= # path to cert in the container if DB_SSL is not disabled
- TWITCH_CLIENT_ID=${TWITCH_CLIENT_ID} # from your twitch application
- TWITCH_CLIENT_SECRET=${TWITCH_CLIENT_SECRET} # from your twitch application
# 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
- MAX_VIDEO_SPRITE_THUMBNAIL_EXECUTIONS=2
# 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
# Optional Frontend settings
- SHOW_SSO_LOGIN_BUTTON=true
- FORCE_SSO_AUTH=false
- REQUIRE_LOGIN=false
# - CDN_URL= # Set this if you are hosting static files through another service (nginx, S3, etc). By default this does not need to be configured as Ganymede serves the static files.
volumes:
- /mnt/ganymede:/data/videos # update VIDEOS_DIR env var
- /mnt/temp/ganymede/temp:/data/temp # update TEMP_DIR env var
- /home/docker/ganymede/logs:/data/logs # queue logs
- /home/docker/ganymede/config:/data/config # config and other miscellaneous files
ports:
- 4800:4000
healthcheck:
test: curl --fail http://localhost:4000/health || exit 1
interval: 60s
retries: 5
start_period: 60s
timeout: 10s
ganymede-db:
container_name: ganymede-db
image: postgres:14
volumes:
- /home/docker/ganymede/ganymede-db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=ganymede
- POSTGRES_DB=ganymede-prd
ports:
- 4801:5432
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 30s
timeout: 60s
retries: 5
start_period: 60s

View file

@ -0,0 +1,14 @@
services:
koblas:
image: ynuwenhof/koblas:latest
container_name: koblas
restart: unless-stopped
ports:
- 1080:1080
environment:
RUST_LOG: debug
KOBLAS_LIMIT: 5
KOBLAS_NO_AUTHENTICATION: false
KOBLAS_ANONYMIZATION: true
volumes:
- /root/koblas/config.toml:/etc/koblas/config.toml

View file

@ -0,0 +1,23 @@
services:
komga:
image: gotson/komga
container_name: komga
volumes:
- type: bind
source: /home/docker/komga/config
target: /config
- type: bind
source: /mnt/manga
target: /data
- type: bind
source: /etc/timezone
target: /etc/timezone
read_only: true
ports:
- 25600:25600
user: "1000:10000"
environment:
- PUID=1000
- PGID=10000
- JAVA_TOOL_OPTIONS=-Xmx4g
restart: unless-stopped

View file

@ -0,0 +1,17 @@
services:
n8n:
container_name: n8n
image: n8nio/n8n:latest
ports:
- "5678:5678"
volumes:
- n8n_data:/home/node/.n8n
- /var/run/docker.sock:/var/run/docker.sock
group_add:
- "996"
environment:
- N8N_SECURE_COOKIE=false
- TZ=America/Chicago
restart: unless-stopped
volumes:
n8n_data:

View file

@ -0,0 +1,21 @@
services:
ntfy:
image: binwiederhier/ntfy
container_name: ntfy
command:
- serve
environment:
- TZ=America/Chicago
user: 1000:10000
volumes:
- /home/docker/ntfy/cache:/var/cache/ntfy
- /home/docker/ntfy/etc:/etc/ntfy
ports:
- 8002:80
healthcheck:
test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
interval: 60s
timeout: 10s
retries: 3
start_period: 40s
restart: unless-stopped

View file

@ -0,0 +1,11 @@
services:
openwebui:
container_name: open-webui
restart: unless-stopped
image: ghcr.io/open-webui/open-webui:main
ports:
- "3002:8080"
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:

View file

@ -0,0 +1,74 @@
services:
vpn:
container_name: pinchflat-vpn
restart: unless-stopped
image: thrnz/docker-wireguard-pia
# Alternatively you may use ghcr.io
#image: ghcr.io/thrnz/docker-wireguard-pia
ports:
- 8945:8945 # for pinchflat
- 4416:4416 # for bgutil-provider
volumes:
- pia:/pia
# If enabled, the forwarded port is dumped to /pia-shared/port.dat for potential use in other containers
- pia-shared:/pia-shared
cap_add:
- NET_ADMIN
environment:
# The following env vars are required:
- LOC=${LOC}
- USER=${USER}
- PASS=${PASS}
#The rest are optional:
- LOCAL_NETWORK=${LOCAL_NETWORK}
#- KEEPALIVE=25
#- VPNDNS=8.8.8.8,8.8.4.4
- PORT_FORWARDING=0
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.default.disable_ipv6=1
- net.ipv6.conf.all.disable_ipv6=1
- net.ipv6.conf.lo.disable_ipv6=1
healthcheck:
test: ping -c 1 www.google.com || exit 1
interval: 300s
timeout: 10s
retries: 3
start_period: 30s
start_interval: 3s
pinchflat:
container_name: pinchflat
restart: unless-stopped
image: keglin/pinchflat:latest
volumes:
- /mnt/pinchflat:/downloads
- /home/docker/pinchflat:/config
- /home/docker/python-packages:/etc/yt-dlp/plugins/bgutil-ytdlp-pot-provider
environment:
- TZ=America/Chicago
- LOG_LEVEL=info
- PUID=1000
- PGID=10000
healthcheck:
test: ["CMD-SHELL", "yt-dlp --update-to nightly"]
interval: 12h
timeout: 30s
retries: 3
network_mode: service:vpn
depends_on:
vpn:
condition: service_healthy
bgutil-provider:
container_name: bgutil-provider
restart: unless-stopped
image: brainicism/bgutil-ytdlp-pot-provider
network_mode: service:vpn
depends_on:
vpn:
condition: service_healthy
volumes:
pia:
pia-shared:

View file

@ -0,0 +1,11 @@
services:
plexautolanguages:
container_name: plex-auto-languages
image: journeyover/plex-auto-languages:latest
restart: unless-stopped
environment:
- PLEX_URL=${PLEX_URL}
- PLEX_TOKEN=${PLEX_TOKEN}
- TZ=America/Chicago
volumes:
- /home/docker/plexAL:/config

View file

@ -0,0 +1,45 @@
services:
shlink:
image: shlinkio/shlink:stable
restart: always
container_name: shlink-backend
environment:
- TZ="America/Chicago"
- DEFAULT_DOMAIN=${DEFAULT_DOMAIN}
- IS_HTTPS_ENABLED=true
- GEOLITE_LICENSE_KEY=${GEOLITE_LICENSE_KEY}
- DB_DRIVER=maria
- DB_USER=shlink
- DB_NAME=shlink
- DB_PASSWORD=${DB_PASSWORD}
- DB_HOST=database
depends_on:
- database
ports:
- 8987:8080
database:
image: mariadb:latest
restart: always
container_name: shlink-database
environment:
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
- MARIADB_DATABASE=shlink
- MARIADB_USER=shlink
- MARIADB_PASSWORD=${DB_PASSWORD}
volumes:
- /home/docker/shlink/db:/var/lib/mysql
shlink-web-client:
image: shlinkio/shlink-web-client
restart: always
container_name: shlink-gui
environment:
- SHLINK_SERVER_URL=${SHLINK_SERVER_URL}
- SHLINK_SERVER_API_KEY=${SHLINK_SERVER_API_KEY}
#volumes:
# - /home/docker/shlink/servers.json:/usr/share/nginx/html/servers.json #this file will be generated automatically
depends_on:
- shlink
ports:
- 8081:8080

View file

@ -0,0 +1,36 @@
services:
suwayomi:
container_name: suwayomi
image: ghcr.io/suwayomi/tachidesk:preview
environment:
- PUID=1000
- PGID=10000
- TZ=America/Chicago # Use TZ database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Comment these out if you do not use the flaresolverr container at the bottom of this file
- FLARESOLVERR_ENABLED=true
- FLARESOLVERR_URL=http://flaresolverr:8191
- BASIC_AUTH_ENABLED=true
- BASIC_AUTH_USERNAME=${BASIC_AUTH_USERNAME}
- BASIC_AUTH_PASSWORD=${BASIC_AUTH_PASSWORD}
# #################################################################################################
#
# !!! IMPORTANT !!!
# - server settings can be changed during runtime in the WebUI
# - providing an environment variable will OVERWRITE the current setting value when starting the container
#
# #################################################################################################
#
# example for setting env vars:
#
# - BIND_IP=0.0.0.0
# - BIND_PORT=4567
# - SOCKS_PROXY_ENABLED=false
# - DOWNLOAD_AS_CBZ=true
# - EXTENSION_REPOS=["http://github.com/orginazation-name/repo-name", "http://github.com/orginazation-name-2/repo-name-2"]
user: "1000:10000"
volumes:
- /mnt/manga:/mnt/manga
- /home/docker/suwayomi:/home/suwayomi/.local/share/Tachidesk
ports:
- "4567:4567"
restart: on-failure:3

View file

@ -0,0 +1,15 @@
services:
twitch-cpm:
container_name: twitch-cpm
image: rdavidoff/twitch-channel-points-miner-v2
stdin_open: true
tty: true
environment:
- TERM=xterm-256color
volumes:
- /root/twitch/analytics:/usr/src/app/analytics
- /root/twitch/cookies:/usr/src/app/cookies
- /root/twitch/logs:/usr/src/app/logs
- /root/twitch/run.py:/usr/src/app/run.py:ro
ports:
- "5000:5000"

View file

@ -0,0 +1,22 @@
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- /root/uptimekuma/cert:/app/data/docker-tls
- /var/run/docker.sock:/var/run/docker.sock:ro
- uptime-kuma:/app/data
ports:
- "3001:3001"
restart: always
security_opt:
- no-new-privileges:true
healthcheck:
test: curl -f http://localhost:3001 || exit 1
interval: 30m
timeout: 10s
retries: 3
start_period: 1m
volumes:
uptime-kuma: