mirror of
https://github.com/ION606/sharing.git
synced 2026-05-14 21:56:54 +00:00
121 lines
3.6 KiB
YAML
121 lines
3.6 KiB
YAML
services:
|
|
caddy:
|
|
image: caddy/caddy:2-alpine
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8550:8550"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile:ro,Z
|
|
- caddy-data:/data
|
|
- ./public:/var/www/share
|
|
environment:
|
|
- PASTE_DOMAIN=${PASTE_DOMAIN}
|
|
- FILES_DOMAIN=${FILES_DOMAIN}
|
|
- SHORT_DOMAIN=${SHORT_DOMAIN}
|
|
- HOME_DOMAIN=${HOME_DOMAIN}
|
|
- INITIAL_API_KEY=${INITIAL_API_KEY}
|
|
networks:
|
|
- proxy
|
|
|
|
privatebin:
|
|
image: privatebin/nginx-fpm-alpine:stable
|
|
volumes:
|
|
- ./privatebin.conf.php:/srv/cfg/conf.php:ro,Z
|
|
- privatebin-data:/srv/data
|
|
environment:
|
|
- SHORT_DOMAIN=${SHORT_DOMAIN}
|
|
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
|
|
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
|
|
|
|
shlink:
|
|
image: shlinkio/shlink:stable
|
|
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
|
|
depends_on:
|
|
shlink-db:
|
|
condition: service_healthy
|
|
|
|
shlink-adapter:
|
|
build: ./shlink-adapter
|
|
restart: unless-stopped
|
|
environment:
|
|
SHLINK_BASE: "http://shlink:8080"
|
|
SHLINK_API_KEY: "${SHLINK_API_KEY}"
|
|
networks:
|
|
- proxy
|
|
|
|
networks:
|
|
proxy:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
privatebin-data:
|
|
lufi-data:
|
|
lufi-files:
|
|
shlink-db:
|
|
caddy-data:
|