services: caddy: image: caddy/caddy:2-alpine restart: unless-stopped ports: - "8550:8550" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy-data:/data environment: - PASTE_DOMAIN=${PASTE_DOMAIN} - FILES_DOMAIN=${FILES_DOMAIN} - SHORT_DOMAIN=${SHORT_DOMAIN} networks: - proxy privatebin: image: privatebin/nginx-fpm-alpine:stable volumes: - ./privatebin.conf.php:/srv/cfg/conf.php:ro - privatebin-data:/srv/data 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 lufi: image: xataz/lufi:latest 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 - MAX_FILE_SIZE=250000000 # ~238 MiB; adjust as needed - WEBROOT=/ # served at / 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 environment: - POSTGRES_DB=shlink - POSTGRES_USER=shlink - POSTGRES_PASSWORD=${SHLINK_DB_PASSWORD} volumes: - shlink-db:/var/lib/postgresql/data networks: - proxy shlink: image: shlinkio/shlink:stable depends_on: [shlink-db] environment: - DEFAULT_DOMAIN=${SHORT_DOMAIN} - IS_HTTPS_ENABLED=true - GEOLITE_LICENSE_KEY=${SHLINK_GEOLITE_KEY} - 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 networks: proxy: external: false volumes: privatebin-data: lufi-data: lufi-files: shlink-db: caddy-data: