playwright / solver /docker-compose.yml
cv3inx's picture
Bundle turnstile-solver in the project (no external URL needed)
f26e640
Raw
History Blame Contribute Delete
1.51 kB
services:
solver:
build: .
container_name: violetics-solver
restart: unless-stopped
depends_on:
byparr:
condition: service_healthy
ports:
- "9988:9988"
environment:
MAX_WORKERS: "8"
PORT: "9988"
# Byparr (Camoufox + playwright-captcha) replaces FlareSolverr.
# FS v3.4.6 times out on current CF interactive challenges; Byparr
# uses a stealthier fingerprint and actively tracks CF changes.
# Protocol is FlareSolverr-compatible except `max_timeout` is in
# seconds (not ms) — solver.py handles this.
CHALLENGE_PROXY_URL: "http://byparr:8191"
CHALLENGE_PROXY_KIND: "byparr"
volumes:
- solver-profile:/tmp/ts_profile
shm_size: "1gb"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:9988/health',timeout=2).status==200 else 1)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
byparr:
image: ghcr.io/thephaseless/byparr:latest
container_name: violetics-byparr
restart: unless-stopped
environment:
LOG_LEVEL: "WARNING"
TZ: "Asia/Jakarta"
shm_size: "1gb"
healthcheck:
test: ["CMD-SHELL", "python3 -c 'import urllib.request,sys; sys.exit(0 if urllib.request.urlopen(\"http://127.0.0.1:8191/docs\",timeout=3).status==200 else 1)'"]
interval: 30s
timeout: 10s
retries: 5
start_period: 90s
volumes:
solver-profile: