version: '3.3' services: uptime-kuma: image: louislam/uptime-kuma:1 container_name: uptimekuma volumes: - "${DOCKER_STORAGE_PATH}/uptimekuma:/app/data" - "/var/run/docker.sock:/var/run/docker.sock" ports: - "${UPTIME_KUMA_EXTERNAL_PORT}:${UPTIME_KUMA_INTERNAL_PORT}" networks: - public profiles: - infra - base restart: unless-stopped logseq: image: ghcr.io/logseq/logseq-webapp:latest container_name: logseq ports: - "${LOGSEQ_EXTERNAL_PORT}:${LOGSEQ_INTERNAL_PORT}" networks: - public profiles: - base caddy: image: caddy container_name: caddy ports: - "${TIMETRACKER_EXTERNAL_PORT}:${TIMETRACKER_INTERNAL_PORT}" - "${DENDRON_NOTES_EXTERNAL_PORT}:${DENDRON_NOTES_INTERNAL_PORT}" - "${SNIBOX_EXTERNAL_PORT}:${SNIBOX_CADDY_INTERNAL_PORT}" user: ${PUID} volumes: # - "${DOCKER_STORAGE_PATH}/caddy/data:/data" # - "${DOCKER_STORAGE_PATH}/caddy/config:/config" # - "${DOCKER_STORAGE_PATH}/caddy/Caddyfile:/etc/caddy/Caddyfile" - "${DOCKER_STORAGE_PATH}/caddy/config:/etc/caddy/" # - "${DOCKER_STORAGE_PATH}/caddy/srv:/srv" - "/www/notes:/srv/notes" - "timetracker-static:/srv/timetracker" - "snibox-static:/srv/snibox" networks: - public - caddy profiles: - infra - base restart: unless-stopped timetracker: image: ${REGISTRY_URL}/timetracker container_name: timetracker environment: - TZ=${TZ} - "CSRF_TRUSTED_ORIGINS=https://tracker.kucharczyk.xyz" user: ${PUID} volumes: - "${DOCKER_STORAGE_PATH}/timetracker/db.sqlite3:/home/timetracker/app/db.sqlite3" - "timetracker-static:/home/timetracker/app/static" depends_on: - caddy networks: - caddy profiles: - base restart: unless-stopped dokku: image: dokku/dokku:0.29.4 container_name: dokku environment: - "DOKKU_HOSTNAME=192.168.0.106" - "DOKKU_HOST_ROOT=/var/lib/dokku/home/dokku" volumes: - "${DOCKER_STORAGE_PATH}/dokku:/mnt/dokku" - "/var/run/docker.sock:/var/run/docker.sock" ports: - "${DOKKU_EXTERNAL_PORT_1}:${DOKKU_INTERNAL_PORT_1}" - "${DOKKU_EXTERNAL_PORT_2}:${DOKKU_INTERNAL_PORT_2}" - "${DOKKU_EXTERNAL_PORT_3}:${DOKKU_INTERNAL_PORT_3}" networks: - public profiles: - disabled trilium: image: zadam/trilium container_name: trilium restart: always environment: - TRILIUM_DATA_DIR=/home/node/trilium-data volumes: - ${DOCKER_STORAGE_PATH}/trilium:/home/node/trilium-data ports: - "${TRILIUM_EXTERNAL_PORT}:${TRILIUM_INTERNAL_PORT}" networks: - public profiles: - base ntfy: image: binwiederhier/ntfy container_name: ntfy command: - serve user: ${PUID}:${PGID} environment: - TZ=${TZ} volumes: - "${DOCKER_STORAGE_PATH}/ntfy/cache:/var/cache/ntfy" - "${DOCKER_STORAGE_PATH}/ntfy/config:/etc/ntfy" ports: - "${NTFY_EXTERNAL_PORT}:${NTFY_INTERNAL_PORT}" networks: - public profiles: - base - infra restart: unless-stopped changedetection: image: dgtlmoon/changedetection.io container_name: changedetection user: ${PUID}:${PGID} environment: - TZ=${TZ} - BASE_URL=changes.kucharczyk.xyz - PLAYWRIGHT_DRIVER_URL="ws://browserless:3000/?stealth=1&--disable-web-security=true" volumes: - "${DOCKER_STORAGE_PATH}/changedetection/data:/datastore" ports: - "${CHANGEDETECTION_EXTERNAL_PORT}:${CHANGEDETECTION_INTERNAL_PORT}" depends_on: - browserless networks: - public profiles: - base restart: unless-stopped browserless: image: browserless/chrome:1.53-chrome-stable container_name: browserless shm_size: '2g' environment: - "DEFAULT_LAUNCH_ARGS=[\"--window-size=1920,1080\"]" ports: - "3100:3000" networks: - public profiles: - base restart: unless-stopped audiobookshelf: image: ghcr.io/advplyr/audiobookshelf container_name: audiobookshelf environment: - AUDIOBOOKSHELF_UID=${PUID} - AUDIOBOOKSHELF_GID=${PGID} - TZ=${TZ} volumes: - "${DOCKER_STORAGE_PATH}/audiobookshelf/audiobooks:/audiobooks" - "${DOCKER_STORAGE_PATH}/audiobookshelf/podcasts:/podcasts" - "${DOCKER_STORAGE_PATH}/audiobookshelf/config:/config" - "${DOCKER_STORAGE_PATH}/audiobookshelf/metadata:/metadata" ports: - "${AUDIOBOOKSHELF_EXTERNAL_PORT}:${AUDIOBOOKSHELF_INTERNAL_PORT}" networks: - public profiles: - disabled restart: unless-stopped beets: image: ${REGISTRY_URL}/beets:latest container_name: beets environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - "${DOCKER_STORAGE_PATH}/beets:/config" - "${STORAGE_PATH}/media/music2:/music" - "${STORAGE_PATH}/download/music:/downloads" ports: - 8337:8337 networks: - public profiles: - base restart: unless-stopped deluge: image: lscr.io/linuxserver/deluge:latest container_name: deluge environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} - DELUGE_LOGLEVEL=error #optional volumes: - "${DOCKER_STORAGE_PATH}/deluge2:/config" - "${STORAGE_PATH}/seed:/seed" ports: - "8112:8112" - "58846:58846" networks: - public profiles: - disabled restart: unless-stopped filebrowser: image: filebrowser/filebrowser:s6 container_name: filebrowser environment: - PUID=${PUID} - PGID=${PGID} volumes: - "${DOCKER_STORAGE_PATH}/filebrowser/filebrowser.db:/database/file-browser.db" - "${DOCKER_STORAGE_PATH}/filebrowser/settings.json:/config/fb-settings.json" - "${STORAGE_PATH}:/srv" ports: - "9999:80" networks: - public profiles: - base restart: unless-stopped mealie: container_name: mealie image: hkotel/mealie:latest environment: PUID: ${PUID} PGID: ${PGID} TZ: ${TZ} env_file: - mealie.env volumes: - "${DOCKER_STORAGE_PATH}/mealie/data/:/app/data" ports: - ${MEALIE_EXTERNAL_PORT}:${MEALIE_INTERNAL_PORT} networks: - public restart: unless-stopped rtorrent: image: binhex/arch-rtorrentvpn container_name: rtorrent volumes: - "${DOCKER_STORAGE_PATH}/rtorrent/config:/config" - ${STORAGE_PATH}/seed:/data - /etc/localtime:/etc/localtime:ro environment: - PUID=${PUID} - PGID=${PGID} env_file: - rtorrent.env ports: - "9080:9080" - "9443:9443" - "8118:8118" - "6881:6881" networks: - public profiles: - base restart: unless-stopped kavita: image: "kizaing/kavita:latest" container_name: kavita env_file: - kavita.env ports: - "${KAVITA_EXTERNAL_PORT}:${KAVITA_INTERNAL_PORT}" volumes: - "${STORAGE_PATH}/media/comics:/manga" - "${DOCKER_STORAGE_PATH}/kavita:/kavita/config" networks: - public profiles: - base restart: unless-stopped webhook: image: ${REGISTRY_URL}/webhook container_name: webhook build: https://git.kucharczyk.xyz/containers/webhook.git#main user: ${PUID}:${PGID} environment: - TZ=${TZ} volumes: - "${DOCKER_STORAGE_PATH}/webhook/config:/config" - "${DOCKER_STORAGE_PATH}/webhook/scripts:/var/webhook" ports: - "${WEBHOOK_EXTERNAL_PORT}:${WEBHOOK_INTERNAL_PORT}" networks: - public profiles: - base - infra restart: unless-stopped valheim: image: ghcr.io/lloesche/valheim-server container_name: valheim volumes: - ${DOCKER_STORAGE_PATH}/valheim/config:/config - ${DOCKER_STORAGE_PATH}/valheim/data:/opt/valheim env_file: - valheim.env ports: - ${VALHEIM_EXTERNAL_PORT}:${VALHEIM_INTERNAL_PORT} cap_add: - SYS_NICE networks: - public profiles: - disabled restart: unless-stopped 7daystodie: image: 7daysserver:latest container_name: 7dtd volumes: - ${DOCKER_STORAGE_PATH}/7daystodie/saves:/home/steam/.local/share/7DaysToDie/Saves - ${DOCKER_STORAGE_PATH}/7daystodie/server:/home/steam/server ports: - 26900-26902:26900-26902/udp - 18500:8080 networks: - public profiles: - disabled restart: unless-stopped snibox_frontend: image: snibox/nginx-puma:1.15.9 container_name: snibox_frontend ports: - "${SNIBOX_EXTERNAL_PORT}:${SNIBOX_INTERNAL_PORT}" volumes: - snibox-static:/var/www/html networks: - public # served by caddy # - snibox profiles: # static files are served by caddy - disabled # depends_on: # - snibox_backend snibox_backend: image: snibox/snibox:latest container_name: snibox_backend command: sh -c "rm -rf tmp/pids && ./bin/rails s -p 3000 -b '0.0.0.0'" env_file: - snibox.env environment: DB_NAME: "${SNIBOX_POSTGRES_DB_NAME}" DB_USER: "${POSTGRES_USERNAME}" DB_PASS: "${POSTGRES_PASSWORD}" DB_HOST: "${POSTGRES_HOST}" DB_PORT: "${POSTGRES_PORT}" # MAILGUN_SMTP_PORT: "${MAILGUN_SMTP_PORT}" # MAILGUN_SMTP_SERVER: "${MAILGUN_SMTP_SERVER}" # MAILGUN_SMTP_LOGIN: "${MAILGUN_SMTP_LOGIN}" # MAILGUN_SMTP_PASSWORD: "${MAILGUN_SMTP_PASSWORD}" # MAILGUN_API_KEY: "${MAILGUN_API_KEY}" # MAILGUN_DOMAIN: "${MAILGUN_DOMAIN}" # MAILGUN_PUBLIC_KEY: "${MAILGUN_PUBLIC_KEY}" volumes: - snibox-static:/app/public networks: - caddy - postgres # served by caddy # - snibox loki: image: grafana/loki:2.6.1 container_name: loki user: "${PUID}" ports: - "${LOKI_EXTERNAL_PORT}:${LOKI_INTERNAL_PORT}" command: -config.file=/etc/loki/local-config.yaml volumes: - "${DOCKER_STORAGE_PATH}/loki/local-config.yaml:/etc/loki/local-config.yaml" networks: - loki profiles: - base - infra restart: unless-stopped promtail: image: grafana/promtail:2.6.1 container_name: promtail user: "${PUID}" volumes: - /var/log:/var/log - "${DOCKER_STORAGE_PATH}/promtail/config.yml:/etc/promtail/config.yml" command: -config.file=/etc/promtail/config.yml depends_on: - loki networks: - loki profiles: - base - infra restart: unless-stopped grafana: image: grafana/grafana:latest container_name: grafana user: "${PUID}" ports: - "${GRAFANA_EXTERNAL_PORT}:${GRAFANA_INTERNAL_PORT}" networks: - loki profiles: - base - infra restart: unless-stopped networks: loki: caddy: attachable: true internal: true public: attachable: true postgres: external: true volumes: timetracker-static: snibox-static: