services: caddy: depends_on: - archivebox - freshrss - uptime-kuma - ntfy - flatnotes - radicale - metube - jellyfin - booklogr-web image: caddy:latest container_name: caddy restart: unless-stopped environment: HLEDGER_PASSWORD_HASH: "${HLEDGER_PASSWORD_HASH}" METUBE_PASSWORD_HASH: "${METUBE_PASSWORD_HASH}" ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - /opt/server/caddy/data:/data - /opt/server/caddy/config:/config - /home/tomasr/vps-config/web-server:/srv/www:ro - /opt/server/resspublica:/srv/resspublica:ro extra_hosts: - "host.docker.internal:host-gateway" archivebox: image: archivebox/archivebox:latest container_name: archivebox restart: unless-stopped command: server 0.0.0.0:8000 environment: - TZ=Europe/Zurich volumes: # Local SSD: database + config + metadata - /opt/server/archivebox/archivebox-data:/data # kDrive: only the heavy archive content - /mnt/kdrive/Archive:/data/archive freshrss: image: freshrss/freshrss:latest container_name: freshrss restart: unless-stopped environment: - TZ=Europe/Zurich - CRON_MIN=*/20 volumes: - /opt/server/freshrss:/var/www/FreshRSS/data uptime-kuma: image: louislam/uptime-kuma:latest container_name: uptime-kuma restart: unless-stopped volumes: - /opt/server/uptime-kuma:/app/data ntfy: image: binwiederhier/ntfy:latest container_name: ntfy restart: unless-stopped command: - serve - --config - /etc/ntfy/server.yml environment: - TZ=Europe/Zurich volumes: # Persistent database, cache, attachments - /opt/server/ntfy:/var/cache/ntfy # Server configuration - /home/tomasr/vps-config/ntfy-config/server.yml:/etc/ntfy/server.yml:ro healthcheck: test: ["CMD-SHELL", "wget -q --tries=1 -O- http://localhost:80/v1/health | grep -q 'healthy'"] interval: 30s timeout: 10s retries: 3 flatnotes: image: dullage/flatnotes:latest container_name: flatnotes restart: unless-stopped environment: - TZ=Europe/Zurich - FLATNOTES_USERNAME=${FLATNOTES_USERNAME} - FLATNOTES_PASSWORD=${FLATNOTES_PASSWORD} - FLATNOTES_SECRET_KEY=${FLATNOTES_SECRET_KEY} volumes: - /mnt/kdrive/Notes/quicknotes:/data radicale: image: tomsquest/docker-radicale:latest container_name: radicale restart: unless-stopped environment: - TZ=Europe/Zurich volumes: # Calendar + contacts data - /opt/server/radicale/data:/data # Configuration - /home/tomasr/vps-config/radicale-config:/config metube: image: alexta69/metube:latest container_name: metube restart: unless-stopped environment: - YTDL_OPTIONS={"outtmpl":"%(title)s/%(title)s.%(ext)s","writesubtitles":true,"writeautomaticsub":true,"writethumbnail":true,"writeinfojson":true,"embedmetadata":true,"embedthumbnail":true} - MAX_CONCURRENT_DOWNLOADS=1 - STATE_DIR=/metube - YTDL_NIGHTLY_UPDATE_TIME=03:00 - TZ=Europe/Zurich volumes: # Your video archive - /mnt/kdrive/Autre/Archive/Videos:/downloads # MeTube application state - /opt/server/metube:/metube jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin restart: unless-stopped environment: - TZ=Europe/Zurich volumes: # Jellyfin configuration/database - /opt/server/jellyfin/config:/config # Transcoding cache - /opt/server/jellyfin/cache:/cache # Your MeTube archive (read-only) - /mnt/kdrive/Autre/Archive/Videos:/media/videos:ro mem_limit: 1500m transmute: image: ghcr.io/transmute-app/transmute:main container_name: transmute restart: unless-stopped volumes: - /opt/server/transmute:/app/data environment: AUTH_SECRET_KEY: "${TRANSMUTE_SECRET_KEY}" AUTH_ACCESS_TOKEN_EXPIRE_MINUTES: 120 booklogr-api: container_name: "booklogr-api" image: mozzo/booklogr:v1.11.1 env_file: - .env environment: DATABASE_URL: "sqlite:///books.db" AUTH_ALLOW_REGISTRATION: False AUTH_REQUIRE_VERIFICATION: False SINGLE_USER_MODE: True AUTH_SECRET_KEY: "${BOOKLOGR_AUTH_SECRET_KEY}" volumes: - /opt/server/booklogr/api:/app/instance booklogr-web: container_name: "booklogr-web" image: mozzo/booklogr-web:v1.11.1 env_file: - .env environment: - BL_API_ENDPOINT=http://books-api.tomasrivera.ch # CHANGE THIS TO POINT TO THE EXTERNAL ADRESS THE USER CAN ACCESS - BL_GOOGLE_ID= # Leave empty to disable google login. To enable, write in your Google Client ID. - BL_DEMO_MODE=false depends_on: - booklogr-api