080dae3e74
Docker Image CI / build (push) Has been cancelled
Introduce `cached_get_chat` in `tg_cache` to store channel metadata on disk with a configurable TTL (default 12 hours). Use the `tg_rpc` throttling context for RPC calls. Update `rss_generator` to use the cached version and document related environment variables in `dockercompose.yml`.
58 lines
2.7 KiB
YAML
58 lines
2.7 KiB
YAML
volumes:
|
|
pyrogram_bridge:
|
|
|
|
services:
|
|
pyrogram_bridge:
|
|
image: ghcr.io/vvzvlad/pyrogram-bridge:latest
|
|
container_name: pyrogram-bridge
|
|
environment:
|
|
TG_API_ID: XXX
|
|
TG_API_HASH: XXX
|
|
# TG_PROXY_HOST: 10.0.0.1 # MTProto proxy host (SOCKS5). Prefer a literal IP over a hostname:
|
|
# # a hostname is re-resolved on every reconnect, so flaky DNS during a
|
|
# # network blip can wedge Pyrogram's reconnect.
|
|
# TG_PROXY_PORT: 1080 # MTProto proxy SOCKS5 port (default: 1080)
|
|
# TG_PROXY_USERNAME: XXX # SOCKS5 username (optional)
|
|
# TG_PROXY_PASSWORD: XXX # SOCKS5 password (optional)
|
|
# TG_WATCHDOG_ENABLED: "True" # Active liveness watchdog: detects 'zombie' sessions and restarts in-process (default: True)
|
|
# TG_WATCHDOG_INTERVAL: 60 # Seconds between liveness probes (default: 60)
|
|
# TG_WATCHDOG_TIMEOUT: 10 # Seconds to wait for each get_me probe (default: 10)
|
|
# TG_WATCHDOG_FAILURES: 3 # Consecutive failed probes before restart (default: 3)
|
|
# TG_WATCHDOG_HEARTBEAT_EVERY: 30 # Emit an INFO watchdog heartbeat every N successful probes (default: 30)
|
|
# TG_DISCONNECT_FLAP_LIMIT: 3 # Disconnect events within the flap window before an in-process restart (default: 3)
|
|
# TG_DISCONNECT_FLAP_WINDOW: 120 # Flap detection window in seconds (default: 120)
|
|
# TG_CHAT_CACHE_TTL_HOURS: 12 # TTL for cached channel info (title/username/id); removes GetFullChannel from the poll hot path (default: 12)
|
|
# TG_RPC_CONCURRENCY: 1 # Max concurrent live Telegram RPC calls — global throttle (default: 1)
|
|
# TG_RPC_MIN_INTERVAL_MS: 500 # Minimum gap between live Telegram RPC starts, ms (default: 500)
|
|
PYROGRAM_BRIDGE_URL: https://pgbridge.example.com
|
|
API_PORT: 80
|
|
TOKEN: ХХХ
|
|
TIME_BASED_MERGE: True
|
|
SHOW_BRIDGE_LINK: True
|
|
SHOW_POST_FLAGS: True
|
|
TZ: Europe/Moscow
|
|
restart: always
|
|
volumes:
|
|
- pyrogram_bridge:/app/data
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-file: 5
|
|
max-size: 10m
|
|
labels:
|
|
traefik.enable: "true"
|
|
traefik.http.routers.pgbridge.rule: Host(`pgbridge.example.com`)
|
|
traefik.http.services.pgbridge.loadBalancer.server.port: 80
|
|
traefik.http.routers.pgbridge.entrypoints: websecure
|
|
traefik.http.routers.pgbridge.tls: true
|
|
com.centurylinklabs.watchtower.enable: "true"
|
|
autoheal: true
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-s", "-f", "-o", "/dev/null", "http://127.0.0.1:80/rss/vvzvlad_lytdybr?limit=1"]
|
|
interval: 30m
|
|
timeout: 5s
|
|
retries: 2
|
|
start_period: 30s
|
|
start_interval: 5s
|
|
|