111 lines
3.9 KiB
YAML
111 lines
3.9 KiB
YAML
---
|
|
services:
|
|
kuttit:
|
|
image: kutt/kutt:${KUTTIT_VERSION}
|
|
restart: unless-stopped
|
|
command: ["./wait-for-it.sh", "postgres:5432", "--", "npm", "start"]
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
environment:
|
|
- PORT=${TRAEFIK_SERVICE_PORT}
|
|
- SITE_NAME=${KUTTIT_NAME}
|
|
- DEFAULT_DOMAIN=${KUTTIT_DOMAIN}
|
|
- LINK_LENGTH=${KUTTIT_LINK_LENGTH}
|
|
- DB_HOST=postgres
|
|
- DB_PORT=5432
|
|
- DB_NAME=${POSTGRES_NAME}
|
|
- DB_USER=${POSTGRES_USER}
|
|
- DB_PASSWORD=${POSTGRES_PASS}
|
|
- DB_SSL=false
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=${REDIS_PASS}
|
|
- DISALLOW_REGISTRATION=${KUTTIT_DISABLE_REGISTRATION}
|
|
- DISALLOW_ANONYMOUS_LINKS=${KUTTIT_DISABLE_ANONYMOUS}
|
|
- USER_LIMIT_PER_DAY=${KUTTIT_DAILY_USER_LIMIT}
|
|
- NON_USER_COOLDOWN=${KUTTIT_NON_USER_COOLDOWN}
|
|
- DEFAULT_MAX_STATS_PER_LINK=${KUTTIT_LINK_STATS}
|
|
- CUSTOM_DOMAIN_USE_HTTPS=${KUTTIT_DOMAIN_HTTPS}
|
|
- JWT_SECRET=${KUTTIT_JWT_SECRET}
|
|
- ADMIN_EMAILS=${KUTTIT_ADMIN_EMAILS}
|
|
- MAIL_HOST=${KUTTIT_MAIL_HOST}
|
|
- MAIL_PORT=${KUTTIT_MAIL_PORT}
|
|
- MAIL_FROM=${KUTTIT_MAIL_FROM}
|
|
- MAIL_USER=${KUTTIT_MAIL_USER}
|
|
- MAIL_PASSWORD=${KUTTIT_MAIL_PASS}
|
|
- MAIL_SECURE=${KUTTIT_MAIL_SECURE}
|
|
- REPORT_EMAIL=${KUTTIT_REPORT_EMAIL}
|
|
- CONTACT_EMAIL=${KUTTIT_CONTACT_EMAIL}
|
|
labels:
|
|
### Section Træfik
|
|
- traefik.enable=${TRAEFIK_ENABLED}
|
|
- traefik.docker.network=${TRAEFIK_NETWORK}
|
|
## HTTP
|
|
- traefik.http.routers.http-${TRAEFIK_ROUTER}.entrypoints=http
|
|
# redirect to HTTPS only
|
|
- traefik.http.routers.http-${TRAEFIK_ROUTER}.middlewares=${TRAEFIK_HTTP_MIDDLEWARES}
|
|
- traefik.http.routers.http-${TRAEFIK_ROUTER}.rule=${TRAEFIK_MATCHRULE}
|
|
## HTTPS
|
|
- traefik.http.routers.https-${TRAEFIK_ROUTER}.entrypoints=https
|
|
# configure the exposed service
|
|
- traefik.http.routers.https-${TRAEFIK_ROUTER}.middlewares=${TRAEFIK_HTTPS_MIDDLEWARES}
|
|
- traefik.http.routers.https-${TRAEFIK_ROUTER}.rule=${TRAEFIK_MATCHRULE}
|
|
# enable TLS and its certificate provider
|
|
- traefik.http.routers.https-${TRAEFIK_ROUTER}.tls=${TRAEFIK_TLSENABLED}
|
|
- traefik.http.routers.https-${TRAEFIK_ROUTER}.tls.certresolver=${TRAEFIK_CERTRESOLVER}
|
|
# specify a service so a custom port can be used
|
|
- traefik.http.services.${TRAEFIK_SERVICE}.loadbalancer.server.port=${TRAEFIK_SERVICE_PORT}
|
|
### Section Diun
|
|
- diun.enable=${DIUN_KUTTIT_ENABLE}
|
|
- diun.watch_repo=${DIUN_KUTTIT_WATCHREPO}
|
|
- diun.sort_tags=${DIUN_KUTTIT_SORTALGO}
|
|
- diun.include_tags=${DIUN_KUTTIT_INCLUDE}
|
|
- diun.exclude_tags=${DIUN_KUTTIT_EXCLUDE}
|
|
networks:
|
|
- internal
|
|
- traefik
|
|
|
|
redis:
|
|
image: redis:${REDIS_VERSION}
|
|
restart: unless-stopped
|
|
command: --requirepass ${REDIS_PASS}
|
|
environment:
|
|
- REDIS_PASS=${REDIS_PASS}
|
|
labels:
|
|
### Section Diun
|
|
- diun.enable=${DIUN_REDIS_ENABLE}
|
|
- diun.watch_repo=${DIUN_REDIS_WATCHREPO}
|
|
- diun.sort_tags=${DIUN_REDIS_SORTALGO}
|
|
- diun.include_tags=${DIUN_REDIS_INCLUDE}
|
|
- diun.exclude_tags=${DIUN_REDIS_EXCLUDE}
|
|
networks:
|
|
- internal
|
|
volumes:
|
|
- ${REDIS_DATA}:/data
|
|
|
|
postgres:
|
|
image: postgres:${POSTGRES_VERSION}
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_DB=${POSTGRES_NAME}
|
|
- POSTGRES_USER=${POSTGRES_USER}
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASS}
|
|
labels:
|
|
### Section Diun
|
|
- diun.enable=${DIUN_POSTGRES_ENABLE}
|
|
- diun.watch_repo=${DIUN_POSTGRES_WATCHREPO}
|
|
- diun.sort_tags=${DIUN_POSTGRES_SORTALGO}
|
|
- diun.include_tags=${DIUN_POSTGRES_INCLUDE}
|
|
- diun.exclude_tags=${DIUN_POSTGRES_EXCLUDE}
|
|
networks:
|
|
- internal
|
|
volumes:
|
|
- ${POSTGRES_DATA}:/var/lib/postgresql/data
|
|
|
|
networks:
|
|
internal:
|
|
traefik:
|
|
external: true
|
|
name: ${TRAEFIK_NETWORK}
|