Files
omarandClaude Opus 4.8 c434b1212f
CI / validate (push) Successful in 16s
CI / images (deploy/Dockerfile.api, api) (push) Successful in 1m39s
CI / images (deploy/Dockerfile.checker, checker) (push) Successful in 38s
CI / images (deploy/Dockerfile.web, web) (push) Successful in 21s
Add selectable source type, fix Gitea CI image push, compose pulls from registry
- 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
2026-07-02 01:35:51 +03:00

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: