271 lines
8.2 KiB
YAML
Executable File
271 lines
8.2 KiB
YAML
Executable File
# Utility Services - Dashboard, file management, sync, etc.
|
|
services:
|
|
# ===== DASHBOARD & MONITORING =====
|
|
homepage:
|
|
image: ghcr.io/gethomepage/homepage:latest
|
|
container_name: homepage
|
|
profiles: ["utilities", "all"]
|
|
volumes:
|
|
- ./Homepage/config/images:/app/public/images
|
|
- ./Homepage/config/icons:/app/public/icons
|
|
- ./Homepage/config:/app/config
|
|
ports:
|
|
- "7575:3000"
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
- HOMEPAGE_ALLOWED_HOSTS=${HOMEPAGE_ALLOWED_HOSTS}
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- dockerproxy
|
|
|
|
dockerproxy:
|
|
image: ghcr.io/tecnativa/docker-socket-proxy:latest
|
|
container_name: dockerproxy
|
|
profiles: ["utilities", "all"]
|
|
environment:
|
|
- CONTAINERS=${DOCKER_PROXY_CONTAINERS}
|
|
- SERVICES=${DOCKER_PROXY_SERVICES}
|
|
- TASKS=${DOCKER_PROXY_TASKS}
|
|
- POST=${DOCKER_PROXY_POST}
|
|
ports:
|
|
- "127.0.0.1:2375:2375"
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
|
|
# ===== FILE MANAGEMENT =====
|
|
filebrowser:
|
|
image: hurlenko/filebrowser:latest
|
|
container_name: filebrowser
|
|
profiles: ["utilities", "all"]
|
|
user: "${PUID}:${PGID}"
|
|
ports:
|
|
- "6633:8080"
|
|
volumes:
|
|
- ./filebrowser/data:/data
|
|
- ./filebrowser/config:/config
|
|
- /home/jamie:/data/home
|
|
- ${DATA_ROOT}:/data/media
|
|
environment:
|
|
- FB_BASEURL=/filebrowser
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# ===== SYNCHRONIZATION =====
|
|
syncthing:
|
|
image: syncthing/syncthing:latest
|
|
container_name: syncthing
|
|
hostname: syncthing
|
|
profiles: ["utilities", "all"]
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- ${DOCKER_CONFIG_ROOT}/syncthing:/var/syncthing
|
|
- ${DOCKER_CONFIG_ROOT}/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
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8384/rest/system/ping"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# ===== PRODUCTIVITY =====
|
|
obsidian:
|
|
image: ghcr.io/sytone/obsidian-remote:latest
|
|
container_name: obsidian-remote
|
|
profiles: ["utilities", "all"]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8181:8080"
|
|
- "8443:8443"
|
|
volumes:
|
|
- ${DOCKER_CONFIG_ROOT}/obsidian/vaults:/vaults
|
|
- ${DOCKER_CONFIG_ROOT}/obsidian/config:/config
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- TZ=${TZ}
|
|
- DOCKER_MODS=linuxserver/mods:universal-git
|
|
depends_on:
|
|
- syncthing
|
|
|
|
stirling-pdf:
|
|
container_name: stirling-pdf
|
|
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
|
|
profiles: ["utilities", "all"]
|
|
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: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
ports:
|
|
- "8090:8080"
|
|
volumes:
|
|
- ./stirling/latest/data:/usr/share/tessdata:rw
|
|
- ./stirling/latest/config:/configs:rw
|
|
- ./stirling/latest/logs:/logs:rw
|
|
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
|
|
restart: unless-stopped
|
|
|
|
# ===== REMOTE ACCESS =====
|
|
hbbr:
|
|
container_name: hbbr
|
|
image: rustdesk/rustdesk-server:latest
|
|
profiles: ["remote", "all"]
|
|
command: hbbr
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
volumes:
|
|
- ${DOCKER_CONFIG_ROOT}/rustdesk/data:/root
|
|
network_mode: "host"
|
|
restart: unless-stopped
|
|
|
|
hbbs:
|
|
container_name: hbbs
|
|
image: rustdesk/rustdesk-server:latest
|
|
profiles: ["remote", "all"]
|
|
command: hbbs
|
|
environment:
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
volumes:
|
|
- ${DOCKER_CONFIG_ROOT}/rustdesk/data:/root
|
|
network_mode: "host"
|
|
depends_on:
|
|
- hbbr
|
|
restart: unless-stopped
|
|
|
|
# ===== GENEALOGY =====
|
|
grampsweb:
|
|
container_name: gramps
|
|
image: ghcr.io/gramps-project/grampsweb:latest
|
|
profiles: ["genealogy", "all"]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "5511:5000"
|
|
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
|
|
depends_on:
|
|
- grampsweb_redis
|
|
volumes:
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_users:/app/users
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_index:/app/indexdir
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_thumb_cache:/app/thumbnail_cache
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_cache:/app/cache
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_secret:/app/secret
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_db:/root/.gramps/grampsdb
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_media:/app/media
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_tmp:/tmp
|
|
|
|
grampsweb_celery:
|
|
container_name: grampsweb_celery
|
|
image: ghcr.io/gramps-project/grampsweb:latest
|
|
profiles: ["genealogy", "all"]
|
|
restart: unless-stopped
|
|
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
|
|
depends_on:
|
|
- grampsweb_redis
|
|
volumes:
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_users:/app/users
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_index:/app/indexdir
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_thumb_cache:/app/thumbnail_cache
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_cache:/app/cache
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_secret:/app/secret
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_db:/root/.gramps/grampsdb
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_media:/app/media
|
|
- ${DOCKER_CONFIG_ROOT}/gramps/gramps_tmp:/tmp
|
|
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
|
|
|
|
grampsweb_redis:
|
|
image: redis:7.2.4-alpine
|
|
container_name: grampsweb_redis
|
|
profiles: ["genealogy", "all"]
|
|
restart: unless-stopped
|
|
volumes:
|
|
- grampsweb_redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# ===== API SERVICES =====
|
|
racknerd-api-converter:
|
|
build: ./racknerd-converter
|
|
container_name: racknerd-api-converter
|
|
profiles: ["utilities", "all"]
|
|
ports:
|
|
- "5000:5000"
|
|
environment:
|
|
- RACKNERD_API_KEY=${RACKNERD_API_KEY}
|
|
- RACKNERD_API_HASH=${RACKNERD_API_HASH}
|
|
- RACKNERD_VSERVER_ID=${RACKNERD_VSERVER_ID}
|
|
- RACKNERD_BASE_URL=${RACKNERD_BASE_URL}
|
|
- UPDATE_INTERVAL=${RACKNERD_UPDATE_INTERVAL}
|
|
- HOST=0.0.0.0
|
|
- PORT=5000
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
# ===== MISC SERVICES =====
|
|
newt:
|
|
image: fosrl/newt:latest
|
|
container_name: newt
|
|
profiles: ["utilities", "all"]
|
|
restart: unless-stopped
|
|
environment:
|
|
- PANGOLIN_ENDPOINT=${PANGOLIN_URL}
|
|
- NEWT_ID=${NEWT_ID}
|
|
- NEWT_SECRET=${NEWT_SECRET}
|
|
|
|
volumes:
|
|
grampsweb_redis_data:
|
|
driver: local |