94 lines
2.0 KiB
YAML
94 lines
2.0 KiB
YAML
version: '3.4'
|
|
|
|
services:
|
|
app:
|
|
image: 'miniflux/miniflux:2.0.38'
|
|
command: '/usr/bin/miniflux -c /etc/miniflux.conf'
|
|
|
|
deploy:
|
|
mode: 'replicated'
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- 'node.labels.class.miniflux==true'
|
|
labels:
|
|
- 'traefik.enable=true'
|
|
- 'traefik.http.routers.miniflux.rule=Host(`nws.rustybever.be`)'
|
|
- 'traefik.http.routers.miniflux.tls=true'
|
|
- 'traefik.http.routers.miniflux.tls.certresolver=letsEncrypt'
|
|
- 'traefik.http.services.miniflux.loadbalancer.server.port=8080'
|
|
|
|
configs:
|
|
- source: miniflux_v2
|
|
target: /etc/miniflux.conf
|
|
environment:
|
|
- 'ADMIN_USERNAME_FILE=/run/secrets/miniflux_admin_username'
|
|
- 'ADMIN_PASSWORD_FILE=/run/secrets/miniflux_admin_password_v2'
|
|
networks:
|
|
- default
|
|
- public
|
|
secrets:
|
|
- miniflux_admin_username
|
|
- miniflux_admin_password_v2
|
|
|
|
db:
|
|
image: 'postgres:14.5-alpine'
|
|
|
|
deploy:
|
|
mode: 'replicated'
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- 'node.labels.class.miniflux==true'
|
|
|
|
environment:
|
|
- 'POSTGRES_DB=miniflux'
|
|
- 'POSTGRES_USER=miniflux'
|
|
- 'POSTGRES_PASSWORD=miniflux'
|
|
volumes:
|
|
- 'db-data:/var/lib/postgresql/data'
|
|
|
|
reddit:
|
|
image: 'johnny5w/reddit-top-rss:latest'
|
|
|
|
deploy:
|
|
mode: 'replicated'
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- 'node.labels.class.miniflux==true'
|
|
|
|
hub:
|
|
image: 'diygod/rsshub:latest'
|
|
|
|
deploy:
|
|
mode: 'replicated'
|
|
replicas: 1
|
|
placement:
|
|
constraints:
|
|
- 'node.labels.class.miniflux==true'
|
|
|
|
environment:
|
|
# For shorter URLs inside miniflux
|
|
- 'PORT=80'
|
|
- 'IG_USERNAME'
|
|
- 'IG_PASSWORD'
|
|
|
|
|
|
configs:
|
|
miniflux_v2:
|
|
external: true
|
|
|
|
networks:
|
|
public:
|
|
external: true
|
|
|
|
secrets:
|
|
miniflux_admin_username:
|
|
external: true
|
|
miniflux_admin_password_v2:
|
|
external: true
|
|
|
|
volumes:
|
|
db-data:
|