• 5.6.1

    5.6.0 대비 변경사항

    crawler 복구

    • checkpoint 형식이 올바르지 않을 때의 Hitomi 기동 복구가 정상 checkpoint의 복구와 같은 경로를 탑니다. pipeline 잠금 안에서 상태를 다시 확인한 뒤 아직 running인 소유 job을 stopped(summary.recovery='interrupted')로 닫고 처리량 기록을 보존합니다. 이전에는 잠금 없이 failed(checkpoint_missing)로 닫으면서 기록을 버렸습니다. 상태는 지금처럼 error와 checkpointError로 남고 checkpoint 원본은 보존되며 자동 재개하지 않습니다.
    • planHash 없는 범위 checkpoint를 받아 주던 호환 분기를 지웠습니다. 범위 mode(incremental·full·range)는 5.3.0부터 수락 때 항상 planHash를 붙이므로 운영 checkpoint는 영향이 없고, planHash가 없는 범위 checkpoint는 이제 복구 오류로 남깁니다. latest는 계획 없이 저장하는 것이 그대로입니다.

    Nginx

    • 관리자 가비지 컬렉션의 integrity/repair·run·orphan-audit 경로도 backend가 응답하지 못할 때 다른 /api/*와 같은 503 UPSTREAM_UNAVAILABLE JSON(Retry-After: 5, no-store)으로 응답합니다. 503 변환 예외는 썸네일과 보호 원본 page 두 location만 남습니다.

    설정·운영 도구

    • BACKEND_PORT 환경 변수를 없앴습니다. backend port는 healthcheck·Nginx upstream·web SSR이 모두 3001로 고정하고 있었으므로 compose.yml도 PORT: 3001로 고정합니다.
    • .env.example의 Web Push VAPID 키 생성 안내를 호스트 Node 없이 실행하는 docker run --rm node:24-alpine npx --yes web-push generate-vapid-keys로 바꿨습니다.
    • tests/run-compose-compat.ps1의 기본 비교 대상을 5.6.0 commit으로 올렸고, 운영 가이드의 게시 절차에 "게시 뒤 이 기본값을 새 릴리스 commit으로 갱신"을 넣었습니다.

    호환되는 수정·정리만 있어 patch 5.6.1을 적용합니다. 필수 환경 변수·수동 전환·데이터 재설정·DB migration이 없습니다. 제품 버전은 Git 태그·OCI label·문서로 관리하며 private package와 lockfile의 버전은 유지합니다.

    이미지 게시 범위

    • 새로 빌드(5.6.1·latest): crawler(복구·checkpoint 검증 변경), nginx(nginx.conf 변경).
    • digest 재사용: backend·web(5.5.0·5.6.0 digest), byedpi(5.4.0 digest). 빌드 입력이 같아 기존 digest에 5.6.1·latest 태그만 붙였습니다. 재사용 이미지의 OCI version·revision label과 backend health의 version은 원래 빌드 값으로 남습니다.
    • 모든 자체 이미지에 5.6.1 태그가 있으므로 IMAGE_TAG=5.6.1을 지정할 수 있습니다.

    NAS 업데이트와 주의사항

    운영자는 운영 반영을 따릅니다.

    • Compose 갱신 권장: compose.yml이 backend PORT를 3001로 고정합니다. 이전 compose.yml을 그대로 두어도 BACKEND_PORT가 비어 있으면 backend 기본값이 3001이라 동작하지만, 5.6.1의 compose.yml·.env.example을 받아 두는 것을 권장합니다. .env.production의 BACKEND_PORT 줄은 이제 읽지 않으므로 지우는 것은 선택입니다.
    • DB migration 없음: backend 이미지가 바뀌지 않아 migration이 돌지 않습니다.
    • crawler 재시작: crawler 이미지 교체로 crawler가 재시작되면 실행 중이던 수집 job은 기동 복구 규칙에 따라 stopped(중단)로 정리됩니다. Hitomi는 자동 재개·20시 예약으로 이어지지만 E-Hentai는 자동 재개가 없으므로 운영 화면에서 수동으로 재개해야 합니다. 5.5.0·5.6.0 교체 때 중단된 E-Hentai 작업이 아직 재개되지 않았다면 함께 확인합니다.
    • rollback: migration이 없어 5.6.0 이미지로 되돌릴 수 있습니다.
    • 로그인 cookie는 그대로 유효하며 다시 로그인할 필요가 없습니다.

    NAS 배포·운영 데이터 변경은 이번 게시에서 실행하지 않았습니다. 다만 latest를 승격했으므로 Watchtower가 켜진 운영 서버는 스스로 5.6.1로 교체할 수 있습니다.

    5.6.0 대비 전체 변경

    검증

    • 최종 main 3561d11e에서 run-integration.ps1(API·브라우저·crawler runtime·Push 재시도)이 통과했고, 개발 stack을 재빌드해 전 서비스 healthy를 확인했습니다.
    • crawler 브랜치(adff9671, 앱 코드는 main과 동일)에서 run-unit.ps1 -Workspace crawler(69 suites·893 tests), run-crawler-recovery.ps1(전체)·-EHentaiOnly가 통과했고, 두 회귀 테스트는 수정 전 실패를 확인했습니다.
    • ops 브랜치(d54a441b, 설정·Nginx·문서는 main과 동일)에서 Compose config(개발·운영), run-operations.ps1 -DeploymentOnly(GC 세 경로의 503 JSON 검사 포함), run-compose-compat.ps1(5.6.0 이미지·Compose와 3조합)이 통과했습니다. 문서 로컬 링크 검사는 깨짐 0입니다.
    • 각 변경은 병합 전에 읽기 전용 리뷰를 거쳤습니다. backend·web·DB는 바뀌지 않아 그 runner는 다시 실행하지 않았고, 실제 Hitomi·E-Hentai 통신과 NAS 배포는 NOT RUN입니다.

    게시 확인

    • 릴리스 소스: d097d47ae2884e3961150733c8a4a4a4b114060e (annotated Git 태그 5.6.1 대상).
    • crawler 5.6.1·latest: sha256:926cebef833b42ebb64dd0e90da6ebbeefddbcacddcfb9dddcef26450fe12424
      • linux/amd64 manifest: sha256:a9045b48c94ab6c055b5e3b4645313611410e16bd4e1a202aa1b918522251ad7
      • OCI version 5.6.1·revision d097d47ae2884e3961150733c8a4a4a4b114060e
      • 입력 지문 384bb618dd099b8994ef9f5faef4b9288577f11be7952ea66bb7dd9725909e6b
    • nginx 5.6.1·latest: sha256:a42874d3d8e4304ca0d6ba6f67b073232b3d15489fd373f0efcf40e706a5b78c
      • linux/amd64 manifest: sha256:6325e8750f01b45e66453ce879835e9079304dabe1117219b7e6007964e070c5
      • 입력 지문 26b1cf01c1476d904a0a68d1ead1ccceeedbb4c85cd22514598af16239ef1de6
    • backend 5.6.1·latest(5.5.0 digest 재사용): sha256:270604e67f36928d1a3036470dc16e41a6b6892c1ef795d1a048a817ae660c78
    • web 5.6.1·latest(5.6.0 digest 재사용): sha256:e57fe3bbd70e293dc66a58a429af7e70dbc7bf3f39beab01a227a4dbe8197932
    • byedpi 5.6.1·latest(5.4.0 digest 재사용): sha256:04cf2838499d67a033a3c3101913563bf983e551fee27b891dab0d2f75a4233a
    • ops/publish-images.ps1 -Version 5.6.1 -Publish로 crawler·nginx를 새로 빌드·게시하고 나머지 세 서비스는 기존 digest에 버전 태그를 붙였습니다. 버전 태그 게시 뒤 같은 digest로 latest를 승격했고, 다섯 서비스의 5.6.1·latest 일치를 최종 검증했습니다(Registry tags verified for 5.6.1.). 재시도 없이 한 번에 완료했습니다.
    Downloads 2