homelab/files/docker/rss/docker-stack.yaml

129 lines
3.7 KiB
YAML

networks:
reverse_proxy:
external: true
volumes:
linkding_data:
miniflux_db:
services:
miniflux:
image: miniflux/miniflux:latest
restart: unless-stopped
networks:
- default
- reverse_proxy
environment:
DATABASE_URL: "user=${MF_DB_USER} password=${MF_DB_PASS} dbname=miniflux host=tasks.miniflux_db sslmode=disable"
RUN_MIGRATIONS: 1
BASE_URL: https://rss.alecodes.page
LOG_LEVEL: debug
OIDC_ENABLED: 1
DISABLE_LOCAL_AUTH: 1
OAUTH2_USER_CREATION: 1
OAUTH2_PROVIDER: oidc
OAUTH2_OIDC_DISCOVERY_ENDPOINT: https://auth.alecodes.page
OAUTH2_REDIRECT_URL: https://rss.alecodes.page/oauth2/oidc/callback
OAUTH2_CLIENT_ID: ${MF_OIDC_CLIENT_ID}
OAUTH2_CLIENT_SECRET: ${MF_OIDC_CLIENT_SECRET}
deploy:
rollback_config:
failure_action: continue
update_config:
delay: 2s
failure_action: rollback
order: start-first
placement:
constraints:
- node.labels.services_kind==${SERVICE_KIND:-common}
labels:
- traefik.enable=true
- traefik.http.routers.miniflux.rule=Host(`rss.alecodes.page`)
- traefik.http.services.miniflux.loadbalancer.server.port=8080
miniflux_db:
image: postgres:latest
environment:
POSTGRES_USER: ${MF_DB_USER}
POSTGRES_PASSWORD: ${MF_DB_PASS}
POSTGRES_DB: miniflux
volumes:
- miniflux_db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
deploy:
rollback_config:
failure_action: continue
update_config:
delay: 2s
failure_action: rollback
order: start-first
placement:
constraints:
- node.labels.services_kind==${SERVICE_KIND:-common}
miniflux-archiver:
image: git.alecodes.page/alecodes/miniflux-archive:latest
restart: unless-stopped
command: ["archive", "linkding", "--archive-starred"]
environment:
MFA_MINIFLUX_HOST: http://tasks.miniflux:8080
MFA_MINIFLUX_TOKEN: ${MFA_MINIFLUX_TOKEN}
MFA_MINIFLUX_FEED_ID: 16
MFA_SERVICE_HOST: https://bookmarks.alecodes.page
MFA_SERVICE_TOKEN: ${MFA_SERVICE_TOKEN}
MFA_SERVICE_MAX_REQUEST: 3
MFA_CRON: "0 */1 * * *"
deploy:
rollback_config:
failure_action: continue
update_config:
delay: 2s
failure_action: rollback
order: start-first
placement:
constraints:
- node.labels.services_kind==${SERVICE_KIND:-common}
linkding:
image: sissbruecker/linkding:latest
restart: unless-stopped
networks:
- default
- reverse_proxy
volumes:
- linkding_data:/etc/linkding/data
environment:
LD_ENABLE_OIDC: "True"
OIDC_OP_AUTHORIZATION_ENDPOINT: https://auth.alecodes.page/api/oidc/authorization
OIDC_OP_TOKEN_ENDPOINT: https://auth.alecodes.page/api/oidc/token
OIDC_OP_USER_ENDPOINT: https://auth.alecodes.page/api/oidc/userinfo
OIDC_OP_JWKS_ENDPOINT: https://auth.alecodes.page/jwks.json
OIDC_RP_CLIENT_ID: ${LD_OIDC_CLIENT_ID}
OIDC_RP_CLIENT_SECRET: ${LD_OIDC_CLIENT_SECRET}
LD_CSRF_TRUSTED_ORIGINS: https://bookmarks.alecodes.page
deploy:
rollback_config:
failure_action: continue
update_config:
delay: 2s
failure_action: rollback
order: start-first
placement:
constraints:
- node.labels.services_kind==${SERVICE_KIND:-common}
labels:
- traefik.enable=true
- traefik.http.routers.linkding.rule=Host(`bookmarks.alecodes.page`)
- traefik.http.services.linkding.loadbalancer.server.port=9090