Files

126 lines
3.7 KiB
YAML
Raw Permalink Normal View History

2025-08-25 14:15:52 -04:00
services:
2025-08-25 16:49:04 -04:00
caddy:
image: caddy/caddy:2-alpine
restart: unless-stopped
ports:
- "8550:8550"
volumes:
2025-08-25 17:34:49 -04:00
- ./Caddyfile:/etc/caddy/Caddyfile:ro,Z
2025-08-25 16:49:04 -04:00
- caddy-data:/data
2025-08-26 13:07:23 -04:00
- ./public:/var/www/share:ro,Z
2025-08-25 16:49:04 -04:00
environment:
- PASTE_DOMAIN=${PASTE_DOMAIN}
- FILES_DOMAIN=${FILES_DOMAIN}
- SHORT_DOMAIN=${SHORT_DOMAIN}
2025-08-25 23:09:03 -04:00
- HOME_DOMAIN=${HOME_DOMAIN}
2025-08-25 17:48:21 -04:00
- INITIAL_API_KEY=${INITIAL_API_KEY}
2025-08-25 16:49:04 -04:00
networks:
- proxy
2025-08-25 14:15:52 -04:00
2025-08-25 16:49:04 -04:00
privatebin:
image: privatebin/nginx-fpm-alpine:stable
2026-03-12 14:59:55 -04:00
restart: unless-stopped
2025-08-25 16:49:04 -04:00
volumes:
2025-08-25 22:28:55 -04:00
- ./privatebin.conf.php:/srv/cfg/conf.php:ro,Z
2025-08-25 16:49:04 -04:00
- privatebin-data:/srv/data
2025-08-25 22:28:55 -04:00
environment:
- SHORT_DOMAIN=${SHORT_DOMAIN}
2025-08-25 16:49:04 -04:00
labels:
- traefik.enable=true
- traefik.http.routers.privatebin.rule=Host(`${PASTE_DOMAIN}`)
- traefik.http.routers.privatebin.entrypoints=websecure
- traefik.http.routers.privatebin.tls.certresolver=le
networks:
- proxy
2025-08-25 14:15:52 -04:00
2025-08-25 16:49:04 -04:00
lufi:
image: xataz/lufi:latest
2026-03-12 14:59:55 -04:00
restart: unless-stopped
2025-08-25 16:49:04 -04:00
environment:
- UID=1000
- GID=1000
- CONTACT=${ADMIN_EMAIL}
- SECRET=${LUFI_SECRET} # 32+ rand chars
- DEFAULT_DELAY=7 # days until deletion
- MAX_DELAY=30 # max days a user can choose
2026-03-12 14:59:55 -04:00
- MAX_FILE_SIZE=500000000
2025-08-25 16:49:04 -04:00
- WEBROOT=/ # served at /
2025-08-26 13:34:32 -04:00
- DISABLE_MAIL_SENDING=1
2025-08-25 16:49:04 -04:00
volumes:
- lufi-data:/usr/lufi/data
- lufi-files:/usr/lufi/files
labels:
- traefik.enable=true
- traefik.http.routers.lufi.rule=Host(`${FILES_DOMAIN}`)
- traefik.http.routers.lufi.entrypoints=websecure
- traefik.http.routers.lufi.tls.certresolver=le
networks:
- proxy
shlink-db:
image: postgres:16-alpine
2026-03-12 14:59:55 -04:00
restart: unless-stopped
2025-08-25 16:49:04 -04:00
environment:
- POSTGRES_DB=shlink
- POSTGRES_USER=shlink
- POSTGRES_PASSWORD=${SHLINK_DB_PASSWORD}
volumes:
- shlink-db:/var/lib/postgresql/data
networks:
- proxy
2025-08-25 17:00:44 -04:00
healthcheck:
test:
[
"CMD-SHELL",
"pg_isready -U shlink -d shlink -h 127.0.0.1 || exit 1",
]
interval: 5s
timeout: 5s
retries: 12
start_period: 10s
2025-08-25 16:49:04 -04:00
shlink:
image: shlinkio/shlink:stable
2026-03-12 14:59:55 -04:00
restart: unless-stopped
2025-08-25 16:49:04 -04:00
environment:
- DEFAULT_DOMAIN=${SHORT_DOMAIN}
- IS_HTTPS_ENABLED=true
- DB_DRIVER=postgres
- DB_HOST=shlink-db
- DB_NAME=shlink
- DB_USER=shlink
- DB_PASSWORD=${SHLINK_DB_PASSWORD}
- INITIAL_API_KEY=${SHLINK_API_KEY}
- SHELL_VERBOSITY=3
labels:
- traefik.enable=true
- traefik.http.services.shlink.loadbalancer.server.port=8080
- traefik.http.routers.shlink.rule=Host(`${SHORT_DOMAIN}`)
- traefik.http.routers.shlink.entrypoints=websecure
- traefik.http.routers.shlink.tls.certresolver=le
networks:
- proxy
2025-08-25 17:00:44 -04:00
depends_on:
shlink-db:
condition: service_healthy
2025-08-25 14:15:52 -04:00
2025-08-25 21:54:37 -04:00
shlink-adapter:
build: ./shlink-adapter
restart: unless-stopped
environment:
SHLINK_BASE: "http://shlink:8080"
SHLINK_API_KEY: "${SHLINK_API_KEY}"
networks:
- proxy
2025-08-25 14:15:52 -04:00
networks:
2025-08-25 16:49:04 -04:00
proxy:
2025-08-25 21:54:37 -04:00
driver: bridge
2025-08-25 14:15:52 -04:00
volumes:
2025-08-25 16:49:04 -04:00
privatebin-data:
lufi-data:
lufi-files:
shlink-db:
caddy-data: