services: tubearchivist: image: bbilly1/tubearchivist:latest container_name: tubearchivist restart: unless-stopped depends_on: gluetun: condition: service_healthy restart: true network_mode: service:gluetun volumes: - ${FOLDER_FOR_MORE:?err}/media/youtube:/youtube - ${FOLDER_FOR_DATA:?err}/tubearchivist/cache:/cache environment: - TZ=${TIMEZONE:?err} - TA_USERNAME=${TA_USERNAME:?err} - TA_PASSWORD=${TA_PASSWORD:?err} - ES_URL=http://tubearchivist-es:9200 - REDIS_CON=redis://tubearchivist-redis:6379 - TA_HOST=https://tubearchivist.gharbeia.net - ELASTIC_PASSWORD=tubearchivist - HOST_UID=${PUID:?err} - HOST_GID=${PGID:?err} labels: - traefik.enable=true - traefik.http.routers.tubearchivist.service=tubearchivist - traefik.http.routers.tubearchivist.rule=Host(`tubearchivist.${CLOUDFLARE_DNS_ZONE:?err}`) - traefik.http.routers.tubearchivist.entrypoints=tunnel - traefik.http.routers.tubearchivist.middlewares=authentik-forwardauth@file,security-headers@file,traefik-bouncer@file - traefik.http.services.tubearchivist.loadbalancer.server.scheme=http - traefik.http.services.tubearchivist.loadbalancer.server.port=8000 tubearchivist-es: image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0 container_name: tubearchivist-es restart: unless-stopped networks: - networking environment: - discovery.type=single-node - ES_JAVA_OPTS=-Xms512m -Xmx512m - xpack.security.enabled=false - path.repo=/usr/share/elasticsearch/data/snapshot volumes: - ${FOLDER_FOR_DATA:?err}/tubearchivist/es:/usr/share/elasticsearch/data healthcheck: test: curl -s http://localhost:9200/_cluster/health | grep -vq '"status":"red"' interval: 30s timeout: 10s retries: 3 tubearchivist-redis: image: redis:7-alpine container_name: tubearchivist-redis restart: unless-stopped networks: - networking command: --save 60 1 --loglevel warning volumes: - ${FOLDER_FOR_DATA:?err}/tubearchivist/redis:/data healthcheck: test: redis-cli ping | grep PONG interval: 30s timeout: 10s retries: 3