mirror of
https://github.com/tomasriveral/vps-config.git
synced 2026-08-11 18:18:38 +02:00
193 lines
4.8 KiB
YAML
193 lines
4.8 KiB
YAML
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
|
|
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
|
|
ports:
|
|
- 5001:5001
|
|
environment:
|
|
- BL_API_ENDPOINT=http://localhost:5001/ # 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
|