fix: PocketBase pb_data 권한(user 기본 비활성화)

Made-with: Cursor
This commit is contained in:
2026-04-13 14:36:16 +09:00
parent 7f35c6f509
commit b32adaf66a
8 changed files with 21 additions and 9 deletions

View File

@@ -2,7 +2,7 @@
## 현재 버전
- `v0.0.7`
- `v0.0.8`
NAS에 SSH로 올리는 **전체 순서**는 `docs/nas-deploy-guide.md`에 따로 정리했다.

View File

@@ -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`는 서비스가 바인드 마운트만 쓰므로 제거해 혼동을 줄였다.

View File

@@ -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 설정 순서 |

View File

@@ -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` 재적용. |
---

View File

@@ -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`로 소유권을 맞춘다.
## 버전 정책

View File

@@ -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 제거.