fix(devops): couchdb healthcheck ложный 401 — auth /_up кредами #2413

Merged
bot-backend merged 1 commit from fix/couchdb-healthcheck-auth into main 2026-07-04 12:21:00 +00:00
Collaborator

Что

gendesign-couchdb контейнер 6 недель светил unhealthy в docker ps, хотя Obsidian LiveSync всё это время работал нормально — ложная тревога.

Корень

Healthcheck бил в /_up (штатно unauth liveness-путь CouchDB) без креды. На этом инстансе включён chttpd/require_valid_user=true (обоснованно — CouchDB публично доступен на obsidian.gendsgn.ru), поэтому даже /_up требует авторизацию → curl получал честный 401 → Docker трактовал как unhealthy.

Фикс

CMD-SHELL (вместо CMD, нужна интерполяция переменных) + -u $COUCHDB_USER:$COUCHDB_PASSWORD — креды уже проброшены в environment: того же сервиса, ничего нового не хардкодится.

Проверка

До пуша прогнал точную команду фикса внутри живого контейнера на проде:

docker exec gendesign-couchdb sh -c 'curl -fsS -u $COUCHDB_USER:$COUCHDB_PASSWORD http://localhost:5984/_up'
→ {"seeds":{},"status":"ok"}  HTTP:200

Post-merge

Отдельный деплой-workflow (deploy-obsidian.yml, триггерится на этот путь) — после раскатки docker ps должен показать gendesign-couchdb: healthy.

## Что `gendesign-couchdb` контейнер 6 недель светил `unhealthy` в `docker ps`, хотя Obsidian LiveSync всё это время работал нормально — ложная тревога. ## Корень Healthcheck бил в `/_up` (штатно unauth liveness-путь CouchDB) без креды. На этом инстансе включён `chttpd/require_valid_user=true` (обоснованно — CouchDB публично доступен на `obsidian.gendsgn.ru`), поэтому даже `/_up` требует авторизацию → curl получал честный 401 → Docker трактовал как unhealthy. ## Фикс `CMD-SHELL` (вместо `CMD`, нужна интерполяция переменных) + `-u $COUCHDB_USER:$COUCHDB_PASSWORD` — креды уже проброшены в `environment:` того же сервиса, ничего нового не хардкодится. ## Проверка До пуша прогнал точную команду фикса внутри живого контейнера на проде: ``` docker exec gendesign-couchdb sh -c 'curl -fsS -u $COUCHDB_USER:$COUCHDB_PASSWORD http://localhost:5984/_up' → {"seeds":{},"status":"ok"} HTTP:200 ``` ## Post-merge Отдельный деплой-workflow (`deploy-obsidian.yml`, триггерится на этот путь) — после раскатки `docker ps` должен показать `gendesign-couchdb: healthy`.
bot-backend added 1 commit 2026-07-04 12:20:05 +00:00
fix(devops): couchdb healthcheck 401 — auth /_up с COUCHDB_USER/PASSWORD
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 7s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
15e1cb1d7d
/_up штатно unauth liveness-путь CouchDB, но этот инстанс держит
chttpd/require_valid_user=true (публично на obsidian.gendsgn.ru) — healthcheck
без креды ловил честный 401 и 6 недель светил 'unhealthy' на живом сервисе
(Obsidian LiveSync работал нормально, это чисто ложный health-статус).

CMD-SHELL + -u $COUCHDB_USER:$COUCHDB_PASSWORD (креды уже в environment
контейнера) — verified 200 на живом проде перед пушем.
bot-backend merged commit 2a3a93b138 into main 2026-07-04 12:21:00 +00:00
bot-backend deleted branch fix/couchdb-healthcheck-auth 2026-07-04 12:21:00 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2413
No description provided.