diff --git a/docker-compose.yaml b/docker-compose.yaml index de957d3..adb3256 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,14 +2,17 @@ # 웹(nginx 정적): 호스트 42881 -> 컨테이너 80 # PocketBase: 호스트 42917 -> 컨테이너 8090 # -# PocketBase 데이터는 호스트 ./pb_data 에 둔다(gitignore). NAS에서 권한 오류 시 -# pb_data 소유자를 user(기본 1000:10)에 맞추거나 user 값을 조정한다. +# PocketBase 데이터는 호스트 ./pb_data 에 둔다(gitignore). +# 로그에 "unable to open database file (14)" 가 나오면 대부분 ./pb_data 권한 문제다. +# 해결: (1) 아래 user 줄을 비활성화한 채 한 번 기동해 pb_data 생성 후, +# (2) 호스트에서 `sudo chown -R 1000:10 pb_data` 후 user 줄을 다시 켠다. +# UGREEN에서 컨테이너를 1000:10으로 고정하려면 user 줄 주석을 해제한다. services: pocketbase: image: ghcr.io/muchobien/pocketbase:latest container_name: pocketbase-todo restart: unless-stopped - user: "1000:10" + # user: "1000:10" ports: - "42917:8090" environment: diff --git a/docs/deploy.md b/docs/deploy.md index 215660b..46d96d4 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -2,7 +2,7 @@ ## 현재 버전 -- `v0.0.7` +- `v0.0.8` NAS에 SSH로 올리는 **전체 순서**는 `docs/nas-deploy-guide.md`에 따로 정리했다. diff --git a/docs/history.md b/docs/history.md index d7b590b..6eaecd1 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,9 @@ # 의사결정 이력 +## 2026-04-13 · v0.0.8 — PocketBase `user`와 `pb_data` 권한 + +호스트 바인드 `./pb_data`에 **`user: 1000:10`으로 기동**하면, 폴더가 root 소유이거나 비어 있을 때 SQLite가 **오류 14(unable to open database file)** 로 종료되는 경우가 잦다. 기본값에서는 `user`를 두지 않고 기동한 뒤, 필요 시 `chown` 후 `user`를 켜는 절차를 `docker-compose.yaml` 주석과 문서에 정리했다. + ## 2026-04-13 · v0.0.7 — PocketBase Compose를 NAS 운영 패턴에 맞춤 NAS에서 이미 동작하던 PocketBase 설정(`user: 1000:10`, 호스트 `./pb_data` 바인드, `serve --dir=/pb_data` 명시, `container_name` pocketbase-todo)을 저장소 `docker-compose.yaml`에 반영했다. 기존 named volume `pocketbase_data`는 서비스가 바인드 마운트만 쓰므로 제거해 혼동을 줄였다. diff --git a/docs/map.md b/docs/map.md index ce93f9b..c2311ee 100644 --- a/docs/map.md +++ b/docs/map.md @@ -2,7 +2,7 @@ ## 현재 버전 -- `v0.0.7` +- `v0.0.8` | 경로 | 역할 | | ------------------------- | ----------------------------------------- | @@ -15,7 +15,7 @@ | `src/composables/useTodos.js` | 목록 로드·추가·완료 토글 | | `vite.config.js` | Vue 플러그인, PWA 매니페스트(`VITE_PUBLIC_APP_URL` 반영) | | `tailwind.config.js` | 테마 색·폰트 | -| `docker-compose.yaml` | PocketBase(`pocketbase-todo`, `./pb_data`, `user`) + 웹(`todo-web`), 호스트 포트 42881·42917 | +| `docker-compose.yaml` | PocketBase(`pocketbase-todo`, `./pb_data`, 선택 `user`) + 웹(`todo-web`), 호스트 포트 42881·42917 | | `Dockerfile` | Vite 빌드 후 nginx 이미지 | | `nginx.conf` | SPA 폴백 라우팅 | | `docs/nas-deploy-guide.md` | NAS SSH·Git 클론·Compose·PocketBase 설정 순서 | diff --git a/docs/nas-deploy-guide.md b/docs/nas-deploy-guide.md index 1e6698f..d39111e 100644 --- a/docs/nas-deploy-guide.md +++ b/docs/nas-deploy-guide.md @@ -322,6 +322,7 @@ PocketBase 컨테이너는 **기본적으로 HTTPS(TLS)를 제공하지 않는 | `fatal: not a git repository` | `apps`가 아니라 **`cd todo`(클론한 폴더)** 안에서 실행했는지 확인한다. | | `git pull`이 안 되거나 안 받아짐 | 10절 순서대로 `git status`·`fetch`·`checkout main`·`pull --ff-only`, 로컬 수정·비공개 저장소 자격 확인 | | `ERR_SSL_VERSION_OR_CIPHER_MISMATCH` (`https://api…`) | 11-1절. 프록시 443·인증서·`proxy_pass`가 PB **HTTP** 포트로 가는지 확인 | +| PocketBase `unable to open database file (14)` | `./pb_data` 쓰기 권한. `docker-compose.yaml`에서 `user: "1000:10"`을 켠 상태면 호스트에서 `sudo chown -R 1000:10 pb_data`. 또는 `user` 줄을 주석으로 둔 채 기동해 DB 생성 후 `chown`하고 `user` 재적용. | --- diff --git a/docs/spec.md b/docs/spec.md index 639eba5..1ba7330 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -2,7 +2,7 @@ ## 현재 버전 -- `v0.0.7` +- `v0.0.8` ## 스택 @@ -39,7 +39,7 @@ Compose에서 **`container_name`** 을 고정해 두었다: `pocketbase-todo`, `todo-web`. NAS에 같은 이름의 컨테이너가 이미 있으면 `docker-compose.yaml`에서 바꾼다. -PocketBase 데이터는 **호스트 바인드 마운트** `./pb_data:/pb_data`를 쓴다(저장소에는 디렉터리만 두고 내용은 Git에 포함하지 않음). 컨테이너 **`user: "1000:10"`** 은 UGREEN 등 NAS에서 흔한 UID/GID 조합이다. 권한 오류가 나면 호스트의 `pb_data` 소유권을 맞추거나 `user` 값을 환경에 맞게 바꾼다. +PocketBase 데이터는 **호스트 바인드 마운트** `./pb_data:/pb_data`를 쓴다(저장소에는 디렉터리만 두고 내용은 Git에 포함하지 않음). 기본 Compose에서는 **`user`를 두지 않아** 이미지 기본 사용자로 기동한다(SQLite가 `pb_data`에 쓸 수 있게). UGREEN 등에서 **`user: "1000:10"`** 으로 고정하려면 `docker-compose.yaml`의 해당 줄 주석을 해제하기 **전에** 호스트에서 `mkdir -p pb_data` 후 `chown -R 1000:10 pb_data`로 소유권을 맞춘다. ## 버전 정책 diff --git a/docs/update.md b/docs/update.md index 253373c..01e7034 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,9 @@ # 업데이트 로그 +## v0.0.8 + +- ~수정. PocketBase `unable to open database file (14)` 대비: 기본 `user` 비활성화(주석), `pb_data` 권한 안내·13절 표 추가. + ## v0.0.7 - ~수정. `docker-compose.yaml` PocketBase를 NAS 검증 설정과 정렬(`user`, `./pb_data`, `command`, `container_name` pocketbase-todo). 미사용 named volume 제거. diff --git a/package.json b/package.json index b9a3df2..97f850a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "todo", "private": true, - "version": "0.0.7", + "version": "0.0.8", "type": "module", "scripts": { "dev": "vite",