Files
home-server-docker/project/service/shlink/shlink.yml
2024-02-22 22:05:43 +01:00

55 lines
2.0 KiB
YAML

services:
shlink-backend:
extends:
file: ${TEMPLATES_PATH}
service: default
image: shlinkio/shlink:latest
container_name: shlink-backend
ports:
- '4004:8080'
volumes:
- ${SERVICE_PATH}/shlink/data:/usr/share/tesseract-ocr/4.00/tessdata #Required for extra OCR languages
- ${SERVICE_PATH}/shlink/config:/configs
environment:
DEFAULT_DOMAIN: shlink.${PUBLIC_DOMAIN}
IS_HTTPS_ENABLED: true
# GEOLITE_LICENSE_KEY: # optional, to geolocate visit, see https://shlink.io/documentation/geolite-license-key/
# DB
DB_DRIVER: postgres
DB_USER: shlink
DB_PASSWORD: ${SHLINK_DATABASE_PASSWORD}
DB_HOST: postgres
labels:
# Watchtower
- "com.centurylinklabs.watchtower.enable=true"
# Traefik
- "traefik.enable=true"
- "traefik.http.routers.shlink-backend.rule=Host(`shlink.${PUBLIC_DOMAIN}`)"
- "traefik.http.routers.shlink-backend.entrypoints=https"
- "traefik.http.routers.shlink-backend.tls.certresolver=myresolver"
- "traefik.http.routers.shlink-backend.tls=true"
- "traefik.http.routers.shlink-backend.service=shlink-backend-svc"
- "traefik.http.services.shlink-backend-svc.loadbalancer.server.port=8080"
# Middlewares
- "traefik.http.routers.shlink-backend.middlewares=crowdsec-bouncer@file"
shlink-frontend:
extends:
file: ${TEMPLATES_PATH}
service: default
image: shlinkio/shlink-web-client:latest
container_name: shlink-frontend
ports:
- '4005:8080'
environment:
SHLINK_SERVER_URL: https://shlink.${PUBLIC_DOMAIN}
SHLINK_SERVER_API_KEY: ${SHLINK_SERVER_API_KEY}
labels:
# Watchtower
- "com.centurylinklabs.watchtower.enable=true"
# Traefik
- "traefik.enable=true"
- "traefik.http.routers.shlink-frontend.rule=Host(`shlink.${LOCAL_DOMAIN}`)"
- "traefik.http.routers.shlink-frontend.entrypoints=https"
- "traefik.http.routers.shlink-frontend.tls=true"