services: nitter: image: zedeus/nitter:${NITTER_TAG:-latest} container_name: nitter restart: unless-stopped user: ${PUID}:${PGID} expose: - 8080 labels: - "traefik.enable=true" - "traefik.http.routers.nitter.rule=Host(`${NITTER_HOSTNAME?}`)" - "traefik.http.routers.nitter.entrypoints=websecure" - "traefik.http.routers.nitter.tls.certresolver=letsencrypt" - "traefik.http.services.nitter.loadbalancer.server.port=8080" - "traefik.http.routers.nitter.middlewares=authelia@docker" volumes: - ./nitter.conf:/src/nitter.conf:Z,ro - ./sessions/sessions.jsonl:/src/sessions.jsonl:Z,ro depends_on: nitter_redis: condition: service_healthy nitter_sessions: condition: service_completed_successfully healthcheck: test: wget -nv --tries=1 --spider http://127.0.0.1:8080/Jack/status/20 || exit 1 interval: 30s timeout: 5s start_period: 10s retries: 2 profiles: - nitter - all nitter_redis: image: redis:6-alpine container_name: nitter_redis restart: unless-stopped command: redis-server --save 60 1 --loglevel warning volumes: - ${DOCKER_DATA_DIR}/nitter:/data healthcheck: test: redis-cli ping interval: 30s timeout: 5s retries: 2 profiles: - nitter - all nitter_sessions: build: context: ./sessions dockerfile: Dockerfile container_name: nitter_sessions restart: no environment: USERNAME: ${TW_USERNAME} PASSWORD: ${TW_PASSWORD} OTP_SECRET: ${TW_OTP_SECRET} volumes: - ./sessions:/app/sessions profiles: - nitter - all