- sources: new `kind` (auto|plain|base64) — fetcher honors it (plain = no base64 decode; base64 = force decode; auto = try base64 then plain). Schema ALTER for existing DBs, API validation, Settings UI selector (add-form + inline). - CI: rewrite images job to the proven pattern (buildx + metadata-action + build-push-action) using a write:package PAT secret (REGISTRY_TOKEN); the automatic GITEA_TOKEN cannot push packages. Matrix over checker/api/web. - compose: docker-compose.yml now pulls git.qomar.pw/omar/zhguchiy_perchik/* images from the Gitea registry; docker-compose.build.yml is the local-build override. Verified on a real run: 3 aggregated lists → 7838 raw → 4842 unique (canonical dedup) → 194 working proxies across all four protocols, served through the panel and subscriptions. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014TtR4PP2JM9KadaBkhPGAE
61 lines
2.0 KiB
YAML
61 lines
2.0 KiB
YAML
# zhguchiy_perchik — production stack. Pulls prebuilt images from the Gitea
|
|
# container registry (built & pushed by .gitea/workflows/ci.yml).
|
|
#
|
|
# cp .env.example .env # set ADMIN_PASSWORD, SESSION_SECRET
|
|
# docker compose pull
|
|
# docker compose up -d
|
|
#
|
|
# For local development that builds the images from source instead of pulling,
|
|
# add the build override:
|
|
# docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
|
|
|
|
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-perchik}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-perchik}
|
|
POSTGRES_DB: ${POSTGRES_DB:-perchik}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-perchik} -d ${POSTGRES_DB:-perchik}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
checker:
|
|
image: ${REGISTRY:-git.qomar.pw/omar/zhguchiy_perchik}/checker:${TAG:-latest}
|
|
restart: unless-stopped
|
|
environment:
|
|
DB_DSN: postgres://${POSTGRES_USER:-perchik}:${POSTGRES_PASSWORD:-perchik}@postgres:5432/${POSTGRES_DB:-perchik}?sslmode=disable
|
|
LOG_LEVEL: ${LOG_LEVEL:-info}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
api:
|
|
image: ${REGISTRY:-git.qomar.pw/omar/zhguchiy_perchik}/api:${TAG:-latest}
|
|
restart: unless-stopped
|
|
environment:
|
|
DB_DSN: postgres://${POSTGRES_USER:-perchik}:${POSTGRES_PASSWORD:-perchik}@postgres:5432/${POSTGRES_DB:-perchik}?sslmode=disable
|
|
ADMIN_USER: ${ADMIN_USER:-admin}
|
|
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD is required}
|
|
SESSION_SECRET: ${SESSION_SECRET:?SESSION_SECRET is required}
|
|
LOG_LEVEL: ${LOG_LEVEL:-info}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
web:
|
|
image: ${REGISTRY:-git.qomar.pw/omar/zhguchiy_perchik}/web:${TAG:-latest}
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${WEB_PORT:-8088}:80"
|
|
depends_on:
|
|
- api
|
|
|
|
volumes:
|
|
pgdata:
|