From cf174b56554c14f3b5f913664883ab4acf6e779a Mon Sep 17 00:00:00 2001 From: Alex Tavarez Date: Sat, 22 Aug 2026 13:35:57 -0400 Subject: [PATCH] added some more container services --- dependent/compose.yml | 226 ++++++++++++++++++++++++++++++------------ 1 file changed, 161 insertions(+), 65 deletions(-) diff --git a/dependent/compose.yml b/dependent/compose.yml index 5a7f6f8..b42f0cd 100644 --- a/dependent/compose.yml +++ b/dependent/compose.yml @@ -13,6 +13,8 @@ volumes: redis-data: mysql-lib: opengist-data: + stash-cache: + stash-blobs: secrets: headscale.key: file: ~/.podsecrets/headscale.key @@ -54,13 +56,13 @@ services: - 443:443/udp - 6379:6379 - 3306:3306 + - 8999:8999 - ${FORGEJO_SSH_PORT:-2121}:${FORGEJO_SSH_PORT:-2121} - ${OG_SSH_PORT:-2323}:${OG_SSH_PORT:-2323} sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1 - net.ipv6.conf.all.forwarding=1 - # - net.ipv6.conf.all.src_valid_mark=1 environment: PUID: 1000 PGID: 1000 @@ -86,11 +88,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - "redis-data:/data:z" - # networks: - # - wg network_mode: "container:wgclient" - # depends_on: - # - wgclient env_file: - ${HOME}/.all.env environment: @@ -114,11 +112,7 @@ services: # @NOTE https://dev.mysql.com/doc/refman/8.0/en/using-encrypted-connections.html - ~/.config/mysql:/etc/mysql/conf.d:Z - mysql-lib:/var/lib/mysql - # networks: - # - wg network_mode: "container:wgclient" - # depends_on: - # - wgclient env_file: - ${HOME}/.all.env - ${HOME}/.mysql.env @@ -148,13 +142,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ~/srv/${NEXTCLOUD_SUBDOMAIN}.${SERVER_FQDN}:/var/www/html:z - # networks: - # - wg network_mode: "container:wgclient" - # depends_on: - # - cache0 - # - db0 - # - wgclient env_file: - ${HOME}/.all.env - ${HOME}/.email.env @@ -207,12 +195,7 @@ services: expose: - 3000 - ${FORGEJO_SSH_PORT:-2121} - # networks: - # - wg network_mode: "container:wgclient" - # depends_on: - # - db0 - # - wgclient env_file: - ${HOME}/.all.env - ${HOME}/.email.env @@ -297,12 +280,7 @@ services: expose: - 6157 - ${OG_SSH_PORT:-2323} - # networks: - # - wg network_mode: "container:wgclient" - # depends_on: - # - db0 - # - wgclient env_file: - ${HOME}/.all.env - ${HOME}/.opengist.env @@ -314,8 +292,6 @@ services: OG_HTTP_GIT_ENABLED: true OG_EXTERNAL_URL: "${SERVER_FQDN_SCHEME}://${OG_SUBDOMAIN}.${SERVER_FQDN}" OG_CUSTOM_NAME: ${OG_NAME} - # OG_CUSTOM_LOGO: ${OG_LOGO:-logo.svg} - # OG_CUSTOM_FAVICON: ${OG_FAVICON:-logo.ico} secrets: - "user-mysql.pass" # - opengist.secret @@ -326,6 +302,27 @@ services: glance.url: "${SERVER_FQDN_SCHEME}://${OG_SUBDOMAIN}.${SERVER_FQDN}" glance.description: Pastebin server + # @TODO below in need of skato-ansible integration + forum: + # build: ../builds/nodebb + image: ghcr.io/nodebb/nodebb:latest + container_name: forum + restart: unless-stopped + expose: + - 4567 + volumes: + - /etc/localtime:/etc/localtime:ro + - ~/.config/nodebb:/opt/config:Z + - ~/.local/nodebb:/usr/src/app:z # @NOTE where setup.json for nodeBB goes + env_file: + - ${HOME}/.all.env + labels: + glance.name: NodeBB + glance.id: nodebb + glance.icon: "si:nodebb" + glance.url: "${SERVER_FQDN_SCHEME}://${NODEBB_SUBDOMAIN}.${SERVER_FQDN}" + glance.description: Synchronized video playback server + # @NOTE https://hub.docker.com/_/caddy/ # @NOTE https://blog.genxnotes.com/en/tech/how-to-move-the-hugo-public-folder-outside-the-project-root/ # @NOTE https://www.turtlestoffel.com/My-Quartz-Configuration#explorer-component-with-custom-content-folder @@ -348,15 +345,11 @@ services: - ~/srv/certbot.${SERVER_FQDN}:/srv/certbot.${SERVER_FQDN}:ro,z - ~/srv/${NEXTCLOUD_SUBDOMAIN}.${SERVER_FQDN}:/srv/${NEXTCLOUD_SUBDOMAIN}.${SERVER_FQDN}:z - "caddy-share:/usr/share/caddy" - - "caddy-data:/data:z" + - "caddy-data:/data" - ~/.caddy:/config:Z volumes_from: - cloud:ro - # networks: - # - wg network_mode: "container:wgclient" - # depends_on: - # - wgclient env_file: - ${HOME}/.all.env labels: @@ -375,15 +368,9 @@ services: - /etc/localtime:/etc/localtime:ro - ~/.config/letsencrypt:/etc/letsencrypt:z - "certbot-lib:/var/lib/letsencrypt" - # - ~/srv/certbot.${SERVER_FQDN}:/srv/certbot.${SERVER_FQDN}:z volumes_from: - revproxy0:rw - # networks: - # - wg network_mode: "container:wgclient" - # depends_on: - # - revproxy0 - # - wgclient env_file: - ${HOME}/.all.env - ${HOME}/.certbot.env @@ -396,6 +383,37 @@ services: CRON: ${CERTBOT_CRON} # entrypoint: ["certonly"] + # @TODO all below until tailclient in need of skato-ansible integration + syncplay: + image: docker.io/dnomd343/syncplay:latest + container_name: syncplay + restart: always + expose: + - 8999 + volumes: + - /etc/localtime:/etc/localtime:ro + - ~/.config/letsencrypt:/certs:z + - ~/.config/syncplay:/data:Z + network_mode: "container:wgclient" + env_file: + - ${HOME}/.all.env + - ${HOME}/.syncplay.env + environment: + PASSWORD: ${SYNCPLAY_PASSWORD} + MOTD: ${SYNCPLAY_MOTD} + SALT: ${SYNCPLAY_SALT} + PERSISTENT: ON + ENABLE_TLS: ${SYNCPLAY_TLS} + PERMANENT_ROOMS: "seasonal_live-action seasonal_anime annual_features shorts" + LISTEN_IPV4: "127.0.0.1" + LISTEN_IPV6: "::1" + labels: + glance.name: SyncPlay + glance.id: syncplay + glance.icon: "si:syncplay" + glance.url: "${SERVER_FQDN_SCHEME}://${SYNCPLAY_SUBDOMAIN}.${SERVER_FQDN}" + glance.description: Synchronized video playback server + # @NOTE https://tailscale.com/docs/features/containers/docker # @NOTE https://tailscale.com/blog/docker-tailscale-guide tailclient: @@ -417,6 +435,10 @@ services: - 5050:5050 - 5030:5030 - 50300:50300 + - 9283:80 + - 5000:5000 + # - ${STASH_LISTEN_PORT:-9999}:${STASH_LISTEN_PORT:-9999} + # - ${ACTUAL_LISTEN_PORT:-5006}:${ACTUAL_LISTEN_PORT:-5006} volumes: - /etc/localtime:/etc/localtime:ro - /lib/modules:/lib/modules:ro @@ -427,6 +449,8 @@ services: hostname: tailnet env_file: - ${HOME}/.all.env + # - ${HOME}/.actual.env + # - ${HOME}/.stash.env # - ${HOME}/.tailscale.env environment: TS_AUTHKEY_FILE: /run/secrets/headscale.key @@ -448,8 +472,6 @@ services: - ~/.config/glance:/app/config:Z # @NOTE internal container server port is changed via 'glance.yml' config file; default is 8080 - ~/.local/glance:/app/assets:Z network_mode: "container:tailclient" - # depends_on: - # - tailclient # @NOTE https://github.com/glanceapp/glance/blob/main/docs/configuration.md#environment-variables labels: glance.name: Self @@ -467,15 +489,11 @@ services: - 1700 volumes: - /etc/localtime:/etc/localtime:ro - - ~/.local/surge:/root/.local/state/surge:Z + - ~/.local/surge:/root/.local/state/surge:Z # token file goes in here - ~/downloads:/downloads:z - ~/media:/media:z - ~/.xxx:/.xxx:z - # networks: - # - hs network_mode: "container:tailclient" - # depends_on: - # - tailclient labels: glance.name: SurgeDM glance.id: surge @@ -499,11 +517,7 @@ services: - ~/downloads:/downloads:z - ~/media:/media:z - ~/.xxx:/.xxx:z - # networks: - # - hs network_mode: "container:tailclient" - # depends_on: - # - tailclient env_file: - ${HOME}/.aria.env environment: @@ -529,11 +543,7 @@ services: - 6880 volumes: - /etc/localtime:/etc/localtime:ro - # networks: - # - hs network_mode: "container:tailclient" - # depends_on: - # - tailclient labels: glance.name: AriaNG glance.id: ariang @@ -553,11 +563,7 @@ services: - ~/downloads:/downloads:z - ~/media:/media:z - ~/.xxx:/.xxx:z - networks: - - hs - # depends_on: - # - aria - # - tailclient + network_mode: "container:tailclient" labels: glance.name: FlexGet glance.id: flexget @@ -565,25 +571,21 @@ services: command: - daemon - start - - --autoreload-config + - "--autoreload-config" soulseek: - image: slskd/slskd:latest + image: docker.io/slskd/slskd:latest container_name: soulseek restart: unless-stopped expose: - 5030 - 50300 - # networks: - # - hs network_mode: "container:tailclient" - # depends_on: - # - tailclient environment: SLSKD_REMOTE_CONFIGURATION: true volumes: - /etc/localtime:/etc/localtime:ro - - ~/.local/slskd:/app + - ~/.local/slskd:/app:Z - ~/downloads:/downloads:z - ~/media:/media:z - ~/.xxx:/.xxx:z @@ -592,6 +594,100 @@ services: glance.id: soulseek glance.description: File-sharing client + # @TODO all below in need of skato-ansible integration + grocy: + image: lscr.io/linuxserver/grocy:latest + container_name: grocy + restart: unless-stopped + expose: + - 80 # 9283 + network_mode: "container:tailclient" + environment: + PUID: 1000 + PGID: 1000 + volumes: + - /etc/localtime:/etc/localtime:ro + - ~/.config/grocy:/config:Z + labels: + glance.name: Grocy + glance.id: grocy + glance.description: Home economy manager + + budget: + image: docker.io/actualbudget/actual-server:latest + container_name: budget + restart: unless-stopped + expose: + - ${ACTUAL_LISTEN_PORT:-5006} + network_mode: "container:tailclient" + env_file: + - ${HOME}/.actual.env + environment: + # ACTUAL_HTTPS_KEY: /data/selfhost.key + # ACTUAL_HTTPS_CERT: /data/selfhost.crt + ACTUAL_PORT: ${ACTUAL_LISTEN_PORT:-5006} + # ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB: 20 + # ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB: 50 + # ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB: 20 + volumes: + - /etc/localtime:/etc/localtime:ro + - ~/.local/actual:/data:Z + labels: + glance.name: Actual + glance.id: actual + glance.description: Financial budgeting server + + reader: + image: docker.io/jvmilazz0/kavita:latest + container_name: reader + restart: unless-stopped + expose: + - 5000 + volumes: + - /etc/localtime:/etc/localtime:ro + - ~/downloads:/downloads:z,ro + - ~/media:/media:z,ro + - ~/.xxx:/.xxx:z,ro + - ~/.config/kavita:/kavita + labels: + glance.name: Kavita + glance.id: kavita + glance.description: Ebook catalogue and reader + + stash: + image: docker.io/stashapp/stash:latest + container_name: stash + restart: unless-stopped + expose: + - ${STASH_LISTEN_PORT:-9999} + network_mode: "container:tailclient" + logging: + driver: "json-file" + options: + max-file: "10" + max-size: "2m" + env_file: + - ${HOME}/.stash.env + environment: + - STASH_STASH=/data/ + - STASH_GENERATED=/generated/ + - STASH_METADATA=/metadata/ + - STASH_CACHE=/cache/ + - STASH_PORT=${STASH_LISTEN_PORT:-9999} + volumes: + - /etc/localtime:/etc/localtime:ro + - ~/.config/stash:/root/.stash:Z + - ~/.xxx:/data:z,ro + - ~/downloads:/downloads:z,ro + - ~/.local/stash/metadata:/metadata:z + - ~/.local/stash/generated:/generated:Z + - stash-cache:/cache:Z + - stash-blobs:/blobs:Z + labels: + glance.name: Stash + glance.id: stash + glance.description: NSFW media streamer + # @NOTE https://github.com/glanceapp/glance/blob/main/docs/configuration.md#docker-containers # @TODO apply labels to each container that allows it to show up in Glance dashboard