• 6.0.0

    6.0.0 주요 변경사항

    기존 설치의 schema 반영이 수동 SQL에서 자동 반영으로 바뀌고 배포 스크립트·Compose 계약이 함께 바뀌어 major 6.0.0으로 게시합니다. 기존 데이터는 그대로 유지됩니다.

    자동 schema 반영과 배포

    • backend·crawler가 시작 전에 sql/upgrades/ 반영 파일을 원장(schema_upgrades)에 기록하며 한 번씩 적용합니다. 파일 내용이 원장과 다르면 시작하지 않습니다.
    • ops/deploy-production.sh가 서비스를 교체하기 전에 새 crawler 이미지로 배포 전 파일을 적용하고, 새 backend·crawler 이미지의 읽기 전용 schema 확인을 통과해야 교체합니다. crawler 정지: 필요 파일이면 crawler를 멈춘 뒤 다시 실행하고, /api/health/ready 뒤 배포 완료 단계에서 배포 후 파일을 적용합니다.
    • 중지된 기존 PostgreSQL을 최초 설치로 보지 않고, 배포 전 schema 확인 없이 교체하지 않습니다.
    • 게시가 릴리스 manifest(ops/releases/<버전>.env)를 남기고, RELEASE_MANIFEST로 게시 때 확인한 digest 그대로 배포·rollback할 수 있습니다.

    검색·작품

    • 검색창에 shirabe_shiki처럼 _로 이은 이름이나 artist:shirabe_shiki를 붙여넣어도 작가 태그가 제안되고, 그대로 검색해도 shirabe shiki 작품이 나옵니다.
    • 상세 창에 비슷한 작품 줄을 추가했습니다.
    • 업로드 이미지 검색에 좌우 반전·회전·선택 영역 질의와 질의 설명을 추가하고, 큰 이미지는 업로드 전에 줄입니다.

    알림

    • 저장한 검색에 새 작품이 들어오면 Push 알림을 보냅니다(사용자별 24시간 20건). 저장한 검색마다 알림을 켜고 끌 수 있습니다.
    • 관리자 운영 Push 알림: crawler 연결 불가, E-Hentai 수집 실패·보호 정지를 알리고 같은 사건은 한 번만 보냅니다.
    • 작가 알림에 공개 노출과 개인 차단을 적용합니다. 재시도 가능한 알림의 발송 기록을 보존하고 발송 기록에 보존 기간을 둡니다.

    계정·패스키

    • 패스키 실패는 화면에 고정 문장 하나("패스키를 추가하지 못했습니다." 등)로만 보이고, 진단 정보 복사는 운영자에게만 보입니다.
    • 패스키 자동 완성 대기를 서버 ceremony 기한 전에 끝내고 입력칸 포커스 때 다시 겁니다.
    • 전역 오류 화면과 열거 값만 받는 브라우저 실패 보고를 추가했습니다.
    • 계정 내보내기에 Push 구독·알림 기록과 다시 받기로 보관 중인 기록을 포함합니다. 전체 session 종료를 DB 시각으로 보장합니다.

    수집과 운영

    • Hitomi: 새 완료 작품 재확인과 파일 변경 작품 다시 받기를 추가했습니다. 다시 받아도 북마크·읽기 기록·알림 기록이 새 작품으로 옮겨지고, 다시 받기가 실패하면 보관해 운영 화면에 건수를 보여 줍니다. 같은 작품 반복 정지는 보류하고 정지 작품을 격리할 수 있습니다.
    • E-Hentai: 목록·상세 요청 재시도, 상세 반복 실패 격리(알 수 없는 안내는 일시 실패), gdata 사전 제외, 버전 계보 저장과 새 버전 안내·중복 사전 후보를 추가했습니다. latest가 증분 기준선을 옮기지 않습니다.
    • 중복 검토에 보존 추천과 연결된 후보 함께 정리를 추가했습니다.
    • 운영 화면에 backend 5xx 원인 분류·5xx·DB 대기 지표·route별 상태와 수집 처리량의 storage lock 대기 단계를 보여 줍니다. 실시간 로그는 PostgreSQL 문장을 가립니다.
    • 운영 점검에 보안 설정·PostgreSQL 진단을 더하고 MinIO 용량 확인은 선택 실행으로 바꿨습니다. 처리량·상위 문장 읽기 전용 SQL(ops/crawl-throughput.sql, ops/top-statements.sql)을 추가했습니다.

    성능·안정성

    • 이미지 색인 통계를 전수 join 없이 집계하고 집계 간격을 지킵니다(PostgreSQL 임시 파일 대량 기록 원인).
    • GC 통계·정리가 후보 작품만 읽고(부분 index 추가) orphan audit는 백그라운드로 실행합니다.
    • 요청 지표를 합산해 15초마다 기록하고 요청 예산 Lua를 EVALSHA로 보냅니다. Hitomi 404 원본 삭제 표시를 묶어 처리합니다.
    • Redis 멈춤을 무응답 시간으로 판정하고 RDB 저장을 1시간 1회로 줄였습니다. 잠금 안 S3 호출에 전체 deadline을 둡니다.
    • PostgreSQL에 pg_stat_statements와 느린 문장·lock 대기·임시 파일 로그를 켰습니다.
    • 다른 PHASH_VERSION 지문을 만나면 색인이 지문을 지우지 않고 멈춥니다.
    • nginx가 container 재생성 중 DNS 실패로 upstream을 비우던 구간을 30초에서 5초로 줄였습니다.
    • viewer 렌더링·preload·진행률 조회, 모아보기·북마크 목록 이어 받기의 count 반복, dashboard·읽기 기록 export 조회를 줄였습니다. React Query 기본 재시도는 연결 단절·5xx에만 합니다.

    반영 SQL

    배포 때 자동 반영이 아래 순서로 한 번씩 실행합니다. 모두 배포 전, crawler 정지: 불필요이며 추가 변경이라 데이터를 바꾸지 않습니다.

    파일 내용
    20261024-01-session-revoke-and-cascade-indexes.sql users.sessions_revoked_at 컬럼, 북마크·작가 북마크·발송 기록 index(CONCURRENTLY)
    20261024-02-pg-stat-statements.sql pg_stat_statements 확장
    20261024-03-gc-candidate-indexes.sql images·galleries GC 후보 부분 index 3개(CONCURRENTLY, 운영 규모에서 오래 걸릴 수 있음)
    20261024-04-saved-search-and-admin-alerts.sql 저장한 검색 알림 컬럼, 관리자 운영 알림 테이블
    20261025-01-gallery-refetch-holds.sql 다시 받기 개인 기록 보관 테이블과 보관·되돌리기 함수

    이미지 게시 범위

    -ChangedOnly 게시입니다. 버전 태그 6.0.0은 새로 빌드한 서비스에만 있습니다.

    서비스 6.0.0 digest
    backend(log-reader) 새 빌드 sha256:a694729c…
    crawler 새 빌드 sha256:01d61dc7…
    web 새 빌드 sha256:5907d2ee…
    nginx 새 빌드(resolver 변경) sha256:92d8cc32…
    byedpi 재사용(5.22.4) sha256:d0343125…

    릴리스 manifest: ops/releases/6.0.0.env

    NAS 업데이트와 주의사항

    운영은 운영 반영과 기존 설치 schema 반영을 따릅니다.

    • 반드시 새 compose.yml·ops/deploy-production.sh로 배포합니다. backend-schema-check 서비스, manifest 이미지 변수, PostgreSQL·Redis 설정이 새 Compose에 있습니다.
    • PostgreSQL·Redis 재생성: PostgreSQL command(pg_stat_statements preload·진단 로그)와 Redis 저장 설정이 바뀌어 두 컨테이너가 다시 만들어집니다. 짧은 DB 중단이 있습니다.
    • Watchtower: 20261024-03이 큰 테이블에 index를 만들므로 Watchtower를 멈추고 배포 스크립트로 배포합니다. Watchtower가 먼저 교체하면 반영이 끝날 때까지 backend·crawler가 멈춥니다.
    • 반영 결과는 배포 출력과 [schema-upgrade] 로그, schema_upgrades 원장으로 확인합니다.
    • 환경 키 변경은 없습니다.
    • rollback: 반영 SQL은 모두 추가 변경이라 5.22.4 이미지로 되돌려도 새 컬럼·테이블·index를 무시합니다. 5.22.4 이하는 manifest가 없으므로 운영 반영의 IMAGE_TAG 블록을 따르며, -ChangedOnly 게시라 서비스별 이전 태그를 먼저 확인합니다.

    5.22.4 대비 전체 변경

    Downloads 2