version: '3.4' services: app: image: 'miniflux/miniflux:2.0.40' 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: