847 lines
26 KiB
YAML
847 lines
26 KiB
YAML
services:
|
|
# Media Management (Arr Stack)
|
|
bazarr:
|
|
image: lscr.io/linuxserver/bazarr:latest
|
|
container_name: bazarr
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- /docker-local/Arrs/Bazarr/config:/config
|
|
- /data/:/data/
|
|
ports:
|
|
- 6767:6767
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.6
|
|
restart: unless-stopped
|
|
|
|
flaresolverr:
|
|
image: ghcr.io/flaresolverr/flaresolverr:latest
|
|
container_name: flaresolverr
|
|
environment:
|
|
- TZ=${TZ}
|
|
ports:
|
|
- 8191:8191
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.8
|
|
restart: unless-stopped
|
|
jellyfin:
|
|
image: jellyfin/jellyfin
|
|
container_name: jellyfin
|
|
environment:
|
|
- TZ=${TZ}
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- JELLYFIN_PublishedServerUrl=${JELLYFIN_URL}
|
|
volumes:
|
|
- /docker-local/Arrs/Jellyfin/config:/config
|
|
- /docker-local/Arrs/Jellyfin/cache:/cache
|
|
- /data:/data
|
|
- /dev/dri/:/dev/dri/
|
|
ports:
|
|
- 8096:8096
|
|
group_add:
|
|
- "104"
|
|
restart: 'unless-stopped'
|
|
|
|
jellyseerr:
|
|
image: fallenbagel/jellyseerr:latest
|
|
container_name: jellyseerr
|
|
environment:
|
|
- LOG_LEVEL=debug
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ../docker-local/Arrs/Jellyseerr/config:/app/config
|
|
- /data/torrents:/downloads
|
|
ports:
|
|
- 5055:5055
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.14
|
|
restart: unless-stopped
|
|
|
|
lidarr:
|
|
image: ghcr.io/linuxserver-labs/prarr:lidarr-plugins
|
|
container_name: lidarr
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- /docker-local/Arrs/Lidarr/config:/config
|
|
- /data/torrents/complete/lidarr:/data/downloads/complete/lidarr
|
|
- /data/music:/data/music
|
|
ports:
|
|
- 8686:8686
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.7
|
|
restart: unless-stopped
|
|
|
|
prowlarr:
|
|
image: lscr.io/linuxserver/prowlarr:latest
|
|
container_name: prowlarr
|
|
environment:
|
|
- TZ=${TZ}
|
|
- PUID=1000
|
|
- PGID=1000
|
|
volumes:
|
|
- /docker-local/Arrs/Prowlarr/config:/config
|
|
ports:
|
|
- 9696:9696
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.4
|
|
restart: unless-stopped
|
|
|
|
qbittorrent:
|
|
image: lscr.io/linuxserver/qbittorrent:latest
|
|
container_name: qbittorrent
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
- WEBUI_PORT=8080
|
|
volumes:
|
|
- ./services/qBittorrent/config:/config
|
|
- /data/torrents:/data/downloads
|
|
ports:
|
|
- 7070:8080
|
|
- 56881:6881
|
|
- 56881:6881/udp
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.2
|
|
restart: unless-stopped
|
|
|
|
radarr:
|
|
image: lscr.io/linuxserver/radarr:latest
|
|
container_name: radarr
|
|
environment:
|
|
- TZ=${TZ}
|
|
- PUID=1000
|
|
- PGID=1000
|
|
volumes:
|
|
- /docker-local/Arrs/Radarr/config:/config
|
|
- /data/:/data/
|
|
- /data/torrents/complete/radarr:/data/downloads/complete/radarr
|
|
ports:
|
|
- 7878:7878
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.5
|
|
restart: unless-stopped
|
|
|
|
sonarr:
|
|
image: lscr.io/linuxserver/sonarr:latest
|
|
container_name: sonarr
|
|
environment:
|
|
- TZ=${TZ}
|
|
- PUID=1000
|
|
- PGID=1000
|
|
volumes:
|
|
- /docker-local/Arrs/Sonarr/config:/config
|
|
- /data:/data
|
|
- /data/torrents/complete/sonarr:/data/downloads/complete/sonarr
|
|
ports:
|
|
- 8989:8989
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.3
|
|
restart: unless-stopped
|
|
|
|
# Music & Scrobbling
|
|
beets:
|
|
image: lscr.io/linuxserver/beets:latest
|
|
container_name: beets
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- /docker-local/beets/config:/config
|
|
- /data/music:/music
|
|
- /data/downloads:/downloads
|
|
ports:
|
|
- 8337:8337
|
|
restart: unless-stopped
|
|
|
|
maloja:
|
|
image: "krateng/maloja:latest"
|
|
container_name: maloja
|
|
environment:
|
|
- MALOJA_FORCE_PASSWORD=${MALOJA_FORCE_PASSWORD}
|
|
volumes:
|
|
- "./services/maloja/config:/etc/maloja"
|
|
- "./services/maloja/data:/var/lib/maloja"
|
|
- "./services/maloja/logs:/var/log/maloja"
|
|
ports:
|
|
- "42010:42010"
|
|
restart: unless-stopped
|
|
|
|
multi-scrobbler:
|
|
image: foxxmd/multi-scrobbler
|
|
container_name: multi-scrobbler
|
|
environment:
|
|
- TZ=${TZ}
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- BASE_URL=${SCROBBLE_URL}
|
|
# - SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID}
|
|
# - SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET}
|
|
# - SPOTIFY_REDIRECT_URI=${SPOTIFY_REDIRECT_URI}
|
|
- YTM_COOKIE=${YTM_COOKIE}
|
|
# - YTM_REDIRECT_URI=${YTM_REDIRECT_URI}
|
|
# - YTM_CLIENT_ID=${YTM_CLIENT_ID}
|
|
# - YTM_CLIENT_SECRET=${YTM_CLIENT_SECRET}
|
|
- JELLYFIN_URL=${JELLYFIN_URL}
|
|
- JELLYFIN_APIKEY=${JELLYFIN_APIKEY}
|
|
- JELLYFIN_USER=${JELLYFIN_USER}
|
|
- LZ_TOKEN=${LZ_TOKEN}
|
|
- LZ_USER=${LZ_USER}
|
|
- MALOJA_URL=${MALOJA_URL}
|
|
- MALOJA_API_KEY=${MALOJA_API_KEY}
|
|
volumes:
|
|
- "./services/scrobble/config:/config"
|
|
ports:
|
|
- "9078:9078"
|
|
restart: unless-stopped
|
|
|
|
lidarr-importer-api:
|
|
image: gitea.kansaigaijin.com/kansaigaijin/majola-lidarr-importer:latest
|
|
container_name: maloja-lidarr-importer-api
|
|
volumes:
|
|
- ./services/maloja_lidarr_api/logs:/app/logs
|
|
ports:
|
|
- "5110:5000"
|
|
environment:
|
|
- SOURCE_API_URL=${SOURCE_API_URL}
|
|
- SOURCE_API_KEY=${SOURCE_API_KEY}
|
|
restart: "unless-stopped"
|
|
|
|
pinchflat:
|
|
image: ghcr.io/kieraneglin/pinchflat:latest
|
|
container_name: pinchflat
|
|
environment:
|
|
- TZ=${TZ}
|
|
ports:
|
|
- '8945:8945'
|
|
volumes:
|
|
- /docker-local/pinchflat/config:/config
|
|
- /data/torrents/:/downloads
|
|
|
|
slskd:
|
|
image: slskd/slskd
|
|
container_name: slskd
|
|
hostname: slskd
|
|
# user: 1000:1000
|
|
environment:
|
|
- TZ=${TZ}
|
|
- SLSKD_REMOTE_CONFIGURATION=true
|
|
- SLSKD_USERNAME=${SLSKD_USERNAME}
|
|
- SLSKD_PASSWORD=${SLSKD_PASSWORD}
|
|
ports:
|
|
- 5030:5030
|
|
- 5031:5031
|
|
- 50300:50300
|
|
volumes:
|
|
- /docker-local/slskd:/app
|
|
- /data:/data
|
|
- /data/torrents/slskd_downloads:/downloads
|
|
- /data/torrents/incomplete:/incomplete
|
|
restart: unless-stopped
|
|
|
|
soularr:
|
|
image: mrusse08/soularr:latest
|
|
container_name: soularr
|
|
hostname: soularr
|
|
user: 1000:1000
|
|
environment:
|
|
- TZ=${TZ}
|
|
- SCRIPT_INTERVAL=300
|
|
volumes:
|
|
- /data/torrents/slskd_downloads:/downloads
|
|
- ./services/soularr:/data
|
|
restart: unless-stopped
|
|
|
|
# Document Management
|
|
broker:
|
|
image: docker.io/library/redis:8
|
|
container_name: Paperless-broker
|
|
volumes:
|
|
- redisdata:/data
|
|
restart: unless-stopped
|
|
|
|
db:
|
|
image: docker.io/library/mariadb:11
|
|
container_name: Paperless-db
|
|
environment:
|
|
MARIADB_HOST: paperless
|
|
MARIADB_DATABASE: paperless
|
|
MARIADB_USER: paperless
|
|
MARIADB_PASSWORD: paperless
|
|
MARIADB_ROOT_PASSWORD: paperless
|
|
volumes:
|
|
- dbdata:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "root", "-p$$MARIADB_ROOT_PASSWORD"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 30s
|
|
restart: unless-stopped
|
|
|
|
gotenberg:
|
|
image: docker.io/gotenberg/gotenberg:8.20
|
|
container_name: Paperless-gotenberg
|
|
command:
|
|
- "gotenberg"
|
|
- "--chromium-disable-javascript=true"
|
|
- "--chromium-allow-list=file:///tmp/.*"
|
|
restart: unless-stopped
|
|
|
|
onlyoffice:
|
|
image: onlyoffice/documentserver:latest
|
|
container_name: onlyoffice
|
|
volumes:
|
|
- onlyoffice:/app/data
|
|
ports:
|
|
- "8054:80"
|
|
restart: unless-stopped
|
|
|
|
paperless-ai:
|
|
image: clusterzx/paperless-ai
|
|
container_name: Paperless-ai
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- RAG_SERVICE_URL=http://localhost:8000
|
|
- RAG_SERVICE_ENABLED=true
|
|
volumes:
|
|
- aidata:/app/data
|
|
ports:
|
|
- "3040:3000"
|
|
depends_on:
|
|
- webserver
|
|
cap_drop:
|
|
- ALL
|
|
security_opt:
|
|
- no-new-privileges=true
|
|
restart: unless-stopped
|
|
|
|
stirling-pdf:
|
|
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
|
|
container_name: Stirling-PDF
|
|
environment:
|
|
DISABLE_ADDITIONAL_FEATURES: "true"
|
|
SECURITY_ENABLELOGIN: "false"
|
|
LANGS: "en_GB,en_US,ar_AR,de_DE,fr_FR,es_ES,zh_CN,zh_TW,ca_CA,it_IT,sv_SE,pl_PL,ro_RO,ko_KR,pt_BR,ru_RU,el_GR,hi_IN,hu_HU,tr_TR,id_ID"
|
|
SYSTEM_DEFAULTLOCALE: en-US
|
|
UI_APPNAME: Stirling-PDF
|
|
UI_HOMEDESCRIPTION: Stirling-PDF
|
|
UI_APPNAMENAVBAR: Stirling-PDF
|
|
SYSTEM_MAXFILESIZE: "100"
|
|
METRICS_ENABLED: "true"
|
|
SYSTEM_GOOGLEVISIBILITY: "true"
|
|
SHOW_SURVEY: "true"
|
|
volumes:
|
|
- ./services/stirling/latest/data:/usr/share/tessdata:rw
|
|
- ./services/stirling/latest/config:/configs:rw
|
|
- ./services/stirling/latest/logs:/logs:rw
|
|
ports:
|
|
- "8090:8080"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 4G
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -qv 'Please sign in'"]
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 16
|
|
restart: unless-stopped
|
|
|
|
tika:
|
|
image: docker.io/apache/tika:latest
|
|
container_name: Paperless-tika
|
|
restart: unless-stopped
|
|
|
|
webserver:
|
|
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
|
container_name: Paperless-webserver
|
|
environment:
|
|
PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
|
|
PAPERLESS_OCR_LANGUAGE: eng
|
|
PAPERLESS_TIME_ZONE: Pacific/Auckland
|
|
PAPERLESS_REDIS: redis://broker:6379
|
|
PAPERLESS_DBENGINE: mariadb
|
|
PAPERLESS_DBHOST: db
|
|
PAPERLESS_DBUSER: paperless
|
|
PAPERLESS_DBPASS: paperless
|
|
PAPERLESS_DBPORT: 3306
|
|
PAPERLESS_URL: ${PAPERLESS_URL}
|
|
PAPERLESS_TIKA_ENABLED: 1
|
|
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
|
|
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
|
|
volumes:
|
|
- ./services/paperless/data:/usr/src/paperless/data
|
|
- ./services/paperless/media:/usr/src/paperless/media
|
|
- ./services/paperless/export:/usr/src/paperless/export
|
|
- ./services/paperless/consume:/usr/src/paperless/consume
|
|
ports:
|
|
- "8100:8000"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
broker:
|
|
condition: service_started
|
|
gotenberg:
|
|
condition: service_started
|
|
tika:
|
|
condition: service_started
|
|
restart: unless-stopped
|
|
|
|
# Personal Applications
|
|
adventurelogdb:
|
|
image: postgis/postgis:15-3.3
|
|
container_name: adventurelog-db
|
|
environment:
|
|
POSTGRES_DB: database
|
|
POSTGRES_USER: adventure
|
|
POSTGRES_PASSWORD: ${ADVENTURELOG_DB_PASSWORD}
|
|
volumes:
|
|
- adventurelog_postgres_data:/var/lib/postgresql/data/
|
|
restart: unless-stopped
|
|
|
|
adventurelogserver:
|
|
image: ghcr.io/seanmorley15/adventurelog-backend:latest
|
|
container_name: adventurelog-backend
|
|
environment:
|
|
- PGHOST=adventurelogdb
|
|
- PGDATABASE=database
|
|
- PGUSER=adventure
|
|
- PGPASSWORD=${ADVENTURELOG_DB_PASSWORD}
|
|
- SECRET_KEY=${ADVENTURELOG_DB_SECRETKEY}
|
|
- DJANGO_ADMIN_USERNAME=${ADVENTURELOG_DJANGO_USERNAME}
|
|
- DJANGO_ADMIN_PASSWORD=${ADVENTURELOG_DJANGO_PASSWORD}
|
|
- DJANGO_ADMIN_EMAIL=${ADVENTURELOG_DJANGO_EMAIL}
|
|
- PUBLIC_URL=${ADVENTURELOG_URL_BACKEND}
|
|
- CSRF_TRUSTED_ORIGINS=${ADVENTURELOG_TRUSTED_ORIGINS}
|
|
- DEBUG=False
|
|
- FRONTEND_URL=${ADVENTURELOG_URL}
|
|
volumes:
|
|
- adventurelog_adventurelog_media:/code/media/
|
|
ports:
|
|
- "8016:80"
|
|
depends_on:
|
|
- adventurelogdb
|
|
restart: unless-stopped
|
|
|
|
adventurelogweb:
|
|
image: ghcr.io/seanmorley15/adventurelog-frontend:latest
|
|
container_name: adventurelog-frontend
|
|
environment:
|
|
- PUBLIC_SERVER_URL=http://adventurelogserver:8000
|
|
- ORIGIN=${ADVENTURELOG_URL}
|
|
- BODY_SIZE_LIMIT=Infinity
|
|
ports:
|
|
- "8015:3000"
|
|
depends_on:
|
|
- adventurelogserver
|
|
restart: unless-stopped
|
|
|
|
grampsweb: &grampsweb
|
|
image: ghcr.io/gramps-project/grampsweb:latest
|
|
container_name: Gramps
|
|
environment:
|
|
GRAMPSWEB_TREE: "Gramps Web"
|
|
GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://grampsweb_redis:6379/0"
|
|
GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://grampsweb_redis:6379/0"
|
|
GRAMPSWEB_RATELIMIT_STORAGE_URI: redis://grampsweb_redis:6379/1
|
|
volumes:
|
|
- /docker-local/gramps/gramps_users:/app/users
|
|
- /docker-local/gramps/gramps_index:/app/indexdir
|
|
- /docker-local/gramps/gramps_thumb_cache:/app/thumbnail_cache
|
|
- /docker-local/gramps/gramps_cache:/app/cache
|
|
- /docker-local/gramps/gramps_secret:/app/secret
|
|
- /docker-local/gramps/gramps_db:/root/.gramps/grampsdb
|
|
- /docker-local/gramps/gramps_media:/app/media
|
|
- /docker-local/gramps/gramps_tmp:/tmp
|
|
ports:
|
|
- "5511:5000"
|
|
depends_on:
|
|
- grampsweb_redis
|
|
restart: always
|
|
|
|
grampsweb_celery:
|
|
<<: *grampsweb
|
|
container_name: grampsweb_celery
|
|
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
|
|
ports: []
|
|
depends_on:
|
|
- grampsweb_redis
|
|
|
|
grampsweb_redis:
|
|
image: docker.io/library/redis:7.2.4-alpine
|
|
container_name: grampsweb_redis
|
|
restart: always
|
|
|
|
kitchenowl-front:
|
|
container_name: kitchenowl-frontend
|
|
image: tombursch/kitchenowl-web:latest
|
|
environment:
|
|
- BACK_URL=kitchenowl-backend:5000
|
|
ports:
|
|
- "8081:80"
|
|
depends_on:
|
|
- kitchenowl-back
|
|
restart: unless-stopped
|
|
|
|
kitchenowl-back:
|
|
container_name: kitchenowl-backend
|
|
image: tombursch/kitchenowl-backend:latest
|
|
environment:
|
|
- JWT_SECRET_KEY=${KO_JWT_SECRET_KEY}
|
|
- FRONT_URL=${KITCHENOWL_FRONT_URL}
|
|
volumes:
|
|
- /docker-local/kitchenowl_data:/data
|
|
restart: unless-stopped
|
|
|
|
litellm:
|
|
image: litellm:local # use your local amd64 build
|
|
container_name: litellm
|
|
restart: unless-stopped
|
|
ports:
|
|
- "4000:4000"
|
|
volumes:
|
|
- ./services/litellm/litellm-config.yaml:/app/config.yaml
|
|
- ./services/litellm/litellm-logs:/app/logs
|
|
environment:
|
|
- LITELLM_CONFIG=/app/config.yaml
|
|
- GROQ_API_KEY=${GROQ_API_KEY}
|
|
- DATABASE_URL=postgresql://litellm:litellm_pass@litellm-postgres:5432/litellm_db
|
|
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}
|
|
- LITELLM_SALT_KEY=${LITELLM_SALT_KEY}
|
|
- STORE_MODEL_IN_DB=True
|
|
|
|
litellm-postgres:
|
|
image: postgres:15
|
|
container_name: litellm-postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: litellm
|
|
POSTGRES_PASSWORD: litellm_pass
|
|
POSTGRES_DB: litellm_db
|
|
volumes:
|
|
- /docker-local/litellm/postgres-data:/var/lib/postgresql/data
|
|
|
|
obsidian:
|
|
image: 'ghcr.io/sytone/obsidian-remote:latest'
|
|
container_name: obsidian-remote
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
- DOCKER_MODS=linuxserver/mods:universal-git
|
|
volumes:
|
|
- /docker-local/obsidian/vaults:/vaults
|
|
- /docker-local/obsidian/config:/config
|
|
ports:
|
|
- 8181:8080
|
|
- 8443:8443
|
|
restart: unless-stopped
|
|
|
|
redbot:
|
|
container_name: redbot
|
|
image: phasecorex/red-discordbot
|
|
volumes:
|
|
- /docker-local/redbot:/data
|
|
environment:
|
|
- TOKEN=${REDBOT_TOKEN}
|
|
- PREFIX=!
|
|
- TZ=${TZ}
|
|
- PUID=1000
|
|
restart: unless-stopped
|
|
|
|
syncthing:
|
|
image: syncthing/syncthing
|
|
container_name: syncthing
|
|
hostname: syncthing
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
volumes:
|
|
- /docker-local/syncthing:/var/syncthing
|
|
- /docker-local/obsidian/vaults:/var/syncthing/obsidian
|
|
ports:
|
|
- 8384:8384 # Web UI
|
|
- 22000:22000/tcp # TCP file transfers
|
|
- 22000:22000/udp # QUIC file transfers
|
|
- 21027:21027/udp # Receive local discovery broadcasts
|
|
restart: unless-stopped
|
|
|
|
# System Utilities
|
|
bytestash:
|
|
image: "ghcr.io/jordan-dalby/bytestash:latest"
|
|
container_name: bytestash
|
|
restart: always
|
|
volumes:
|
|
- /docker-local/bytestash/snippets:/data/snippets
|
|
ports:
|
|
- "5661:5000"
|
|
environment:
|
|
BASE_PATH: ""
|
|
JWT_SECRET: ${BYTE_JWT_SECRET}
|
|
TOKEN_EXPIRY: 24h
|
|
ALLOW_NEW_ACCOUNTS: "false"
|
|
DEBUG: "true"
|
|
DISABLE_ACCOUNTS: "false"
|
|
DISABLE_INTERNAL_ACCOUNTS: "false"
|
|
|
|
dockerproxy:
|
|
image: ghcr.io/tecnativa/docker-socket-proxy:latest
|
|
container_name: dockerproxy
|
|
environment:
|
|
- CONTAINERS=1 # Allow access to viewing containers
|
|
- SERVICES=1 # Allow access to viewing services (necessary when using Docker Swarm)
|
|
- TASKS=1 # Allow access to viewing tasks (necessary when using Docker Swarm)
|
|
- POST=0 # Disallow any POST operations (effectively read-only)
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro # Mounted as read-only
|
|
ports:
|
|
- 127.0.0.1:2375:2375
|
|
restart: unless-stopped
|
|
|
|
filebrowser:
|
|
image: hurlenko/filebrowser
|
|
container_name: filebrowser
|
|
user: "root:root"
|
|
environment:
|
|
- FB_BASEURL=/filebrowser
|
|
volumes:
|
|
- ./services/filebrowser/data:/data
|
|
- ./services/filebrowser/config:/config
|
|
- /home/jamie:/data/home
|
|
- /data:/data/media
|
|
- /docker:/docker
|
|
- /docker-local:/docker-local
|
|
ports:
|
|
- 6633:8080
|
|
restart: unless-stopped
|
|
|
|
foundry:
|
|
build: ./services/foundry-login
|
|
container_name: foundry-login
|
|
environment:
|
|
- SSH_HOST=${FOUNDRY_SSH_HOST}
|
|
- SSH_PORT=${FOUNDRY_SSH_PORT}
|
|
- SSH_USER=${FOUNDRY_SSH_USER}
|
|
- SSH_PASSWORD=${FOUNDRY_SSH_PASSWORD}
|
|
# - SSH_KEY_PATH=${FOUNDRY_SSH_KEY_PATH}
|
|
- FOUNDRY_LOG_PATH=${FOUNDRY_LOG_PATH}
|
|
- SLEEP_SECONDS=30
|
|
- FOUNDRY_URL=${FOUNDRY_URL}
|
|
- FOUNDRY_API_TOKEN=${FOUNDRY_API}
|
|
- LOG_FILES_TO_CHECK=1
|
|
ports:
|
|
- "5234:5000"
|
|
command: ["sh", "/app/entrypoint.sh"]
|
|
restart: unless-stopped
|
|
|
|
glances:
|
|
image: nicolargo/glances:ubuntu-latest-full
|
|
container_name: Glances
|
|
pid: host
|
|
network_mode: host
|
|
environment:
|
|
- "GLANCES_OPT=-w"
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock
|
|
- /docker:/docker:ro
|
|
- /docker-local:/docker-local:ro
|
|
- /data:/data:ro
|
|
# For intel iGPUs
|
|
devices:
|
|
- /dev/dri:/dev/dri
|
|
restart: unless-stopped
|
|
|
|
hbbr:
|
|
image: rustdesk/rustdesk-server:latest
|
|
container_name: hbbr
|
|
command: hbbr
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
volumes:
|
|
- /docker-local/rustdesk/data:/root
|
|
network_mode: "host"
|
|
restart: unless-stopped
|
|
|
|
hbbs:
|
|
image: rustdesk/rustdesk-server:latest
|
|
container_name: hbbs
|
|
command: hbbs
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
volumes:
|
|
- /docker-local/rustdesk/data:/root
|
|
network_mode: "host"
|
|
depends_on:
|
|
- hbbr
|
|
restart: unless-stopped
|
|
|
|
homepage:
|
|
image: ghcr.io/gethomepage/homepage:latest
|
|
container_name: homepage
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
- HOMEPAGE_ALLOWED_HOSTS=${HOMEPAGE_ALLOWED_HOSTS}
|
|
volumes:
|
|
- ./services/Homepage/config/images:/app/public/images
|
|
- ./services/Homepage/config/icons:/app/public/icons
|
|
- ./services/Homepage/config:/app/config
|
|
ports:
|
|
- 7575:3000
|
|
restart: unless-stopped
|
|
|
|
iperf:
|
|
image: networkstatic/iperf3
|
|
container_name: iperf3-server
|
|
stdin_open: true # docker run -i
|
|
tty: true # docker run -t
|
|
command: -s
|
|
ports:
|
|
- '5201:5201'
|
|
restart: unless-stopped
|
|
|
|
newt:
|
|
image: fosrl/newt
|
|
container_name: newt
|
|
environment:
|
|
- PANGOLIN_ENDPOINT=https://png.kansaigaijin.com
|
|
- NEWT_ID=${NEWT_ID}
|
|
- NEWT_SECRET=${NEWT_SECRET}
|
|
restart: unless-stopped
|
|
|
|
racknerd-api-converter:
|
|
build: ./services/racknerd-converter
|
|
container_name: RacknerdConverter
|
|
environment:
|
|
- RACKNERD_API_KEY=${RACKNERD_API_KEY}
|
|
- RACKNERD_API_HASH=${RACKNERD_API_HASH}
|
|
- RACKNERD_VSERVER_ID=${RACKNERD_VSERVER_ID}
|
|
- RACKNERD_BASE_URL=https://nerdvm.racknerd.com/api/client/command.php
|
|
- UPDATE_INTERVAL=1800
|
|
- HOST=0.0.0.0
|
|
- PORT=5000
|
|
ports:
|
|
- "5000:5000"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
restart: unless-stopped
|
|
|
|
speedtest-db:
|
|
image: mariadb:11
|
|
container_name: speedtest-db
|
|
environment:
|
|
- MYSQL_DATABASE=speedtest_tracker
|
|
- MYSQL_USER=speedtest_tracker
|
|
- MYSQL_PASSWORD=speedtest
|
|
- MYSQL_RANDOM_ROOT_PASSWORD=true
|
|
volumes:
|
|
- /docker-local/speedtest-tracker/db:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 5s
|
|
retries: 3
|
|
timeout: 5s
|
|
restart: always
|
|
|
|
speedtest-tracker:
|
|
image: lscr.io/linuxserver/speedtest-tracker:latest
|
|
container_name: speedtest-tracker
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- APP_KEY=${SPEEDTEST_APP_KEY}
|
|
- DB_CONNECTION=mariadb
|
|
- DB_HOST=speedtest-db
|
|
- DB_PORT=3306
|
|
- DB_DATABASE=speedtest_tracker
|
|
- DB_USERNAME=speedtest_tracker
|
|
- DB_PASSWORD=speedtest
|
|
- APP_DEBUG=true
|
|
- SPEEDTEST_SCHEDULE=30 * * * *
|
|
- SPEEDTEST_SERVERS=7317
|
|
- PUBLIC_DASHBOARD=true
|
|
volumes:
|
|
- /docker-local/speedtest-tracker/data:/config
|
|
ports:
|
|
- 8180:80
|
|
- 8143:443
|
|
depends_on:
|
|
speedtest-db:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
|
|
watchtower:
|
|
image: containrrr/watchtower
|
|
container_name: watchtower
|
|
environment:
|
|
- WATCHTOWER_CLEANUP=true
|
|
- WATCHTOWER_POLL_INTERVAL=86400
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
|
|
whisper:
|
|
image: linuxserver/faster-whisper:latest
|
|
container_name: faster-whisper
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=${TZ}
|
|
- WHISPER_MODEL=tiny-int8
|
|
- WHISPER_BEAM=1 #optional
|
|
- WHISPER_LANG=en #optional
|
|
volumes:
|
|
- ./services/whisper:/config
|
|
ports:
|
|
- 10300:10300
|
|
restart: unless-stopped
|
|
networks:
|
|
arr_network:
|
|
ipv4_address: 172.20.0.15
|
|
|
|
networks:
|
|
arr_network:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.20.0.0/16
|
|
|
|
database_network:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.21.0.0/16
|
|
volumes:
|
|
aidata:
|
|
dbdata:
|
|
redisdata:
|
|
adventurelog_postgres_data:
|
|
external: true
|
|
adventurelog_adventurelog_media:
|
|
external: true
|
|
onlyoffice:
|