deploy: PocketBase NAS 설정 정렬 및 문서 반영

Made-with: Cursor
This commit is contained in:
2026-04-13 14:32:56 +09:00
parent e8e7a02450
commit 7f35c6f509
8 changed files with 30 additions and 15 deletions

View File

@@ -1,18 +1,26 @@
# 호스트 포트는 다른 스택과 겹치지 않게 4만 번대로 둔다. 충돌 시 아래 두 줄만 바꾼다. # 호스트 포트는 다른 스택과 겹치지 않게 4만 번대로 둔다. 충돌 시 아래 두 줄만 바꾼다.
# 웹(nginx 정적): 호스트 42881 -> 컨테이너 80 # 웹(nginx 정적): 호스트 42881 -> 컨테이너 80
# PocketBase: 호스트 42917 -> 컨테이너 8090 # PocketBase: 호스트 42917 -> 컨테이너 8090
#
# PocketBase 데이터는 호스트 ./pb_data 에 둔다(gitignore). NAS에서 권한 오류 시
# pb_data 소유자를 user(기본 1000:10)에 맞추거나 user 값을 조정한다.
services: services:
pocketbase: pocketbase:
image: ghcr.io/muchobien/pocketbase:latest image: ghcr.io/muchobien/pocketbase:latest
container_name: todo-pocketbase container_name: pocketbase-todo
restart: unless-stopped restart: unless-stopped
user: "1000:10"
ports:
- "42917:8090"
environment: environment:
PB_HOST: 0.0.0.0 PB_HOST: 0.0.0.0
PB_PORT: 8090 PB_PORT: 8090
ports:
- "42917:8090"
volumes: volumes:
- pocketbase_data:/pb_data - ./pb_data:/pb_data
command:
- serve
- --http=0.0.0.0:8090
- --dir=/pb_data
todo-web: todo-web:
build: build:
@@ -26,6 +34,3 @@ services:
- "42881:80" - "42881:80"
depends_on: depends_on:
- pocketbase - pocketbase
volumes:
pocketbase_data:

View File

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

View File

@@ -1,5 +1,9 @@
# 의사결정 이력 # 의사결정 이력
## 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`는 서비스가 바인드 마운트만 쓰므로 제거해 혼동을 줄였다.
## 2026-04-13 · v0.0.6 — Git 작업 디렉터리 오해 방지 ## 2026-04-13 · v0.0.6 — Git 작업 디렉터리 오해 방지
NAS에서 `apps` 상위 폴더에 `.git`이 없어 `git pull`이 실패하는 사례가 있어, `docs/nas-deploy-guide.md`**반드시 `todo`(클론 루트)로 `cd`한 뒤** Git을 실행한다는 안내와 `ls -a .git` 확인·13절 표 항목을 추가했다. NAS에서 `apps` 상위 폴더에 `.git`이 없어 `git pull`이 실패하는 사례가 있어, `docs/nas-deploy-guide.md`**반드시 `todo`(클론 루트)로 `cd`한 뒤** Git을 실행한다는 안내와 `ls -a .git` 확인·13절 표 항목을 추가했다.

View File

@@ -2,7 +2,7 @@
## 현재 버전 ## 현재 버전
- `v0.0.6` - `v0.0.7`
| 경로 | 역할 | | 경로 | 역할 |
| ------------------------- | ----------------------------------------- | | ------------------------- | ----------------------------------------- |
@@ -15,7 +15,7 @@
| `src/composables/useTodos.js` | 목록 로드·추가·완료 토글 | | `src/composables/useTodos.js` | 목록 로드·추가·완료 토글 |
| `vite.config.js` | Vue 플러그인, PWA 매니페스트(`VITE_PUBLIC_APP_URL` 반영) | | `vite.config.js` | Vue 플러그인, PWA 매니페스트(`VITE_PUBLIC_APP_URL` 반영) |
| `tailwind.config.js` | 테마 색·폰트 | | `tailwind.config.js` | 테마 색·폰트 |
| `docker-compose.yaml` | PocketBase + 정적 웹(nginx), `container_name`·호스트 포트 기본 42881·42917 | | `docker-compose.yaml` | PocketBase(`pocketbase-todo`, `./pb_data`, `user`) + 웹(`todo-web`), 호스트 포트 42881·42917 |
| `Dockerfile` | Vite 빌드 후 nginx 이미지 | | `Dockerfile` | Vite 빌드 후 nginx 이미지 |
| `nginx.conf` | SPA 폴백 라우팅 | | `nginx.conf` | SPA 폴백 라우팅 |
| `docs/nas-deploy-guide.md` | NAS SSH·Git 클론·Compose·PocketBase 설정 순서 | | `docs/nas-deploy-guide.md` | NAS SSH·Git 클론·Compose·PocketBase 설정 순서 |

View File

@@ -155,7 +155,7 @@ docker compose up -d --build
docker compose ps docker compose ps
``` ```
`todo-pocketbase`, `todo-web`(컨테이너 이름·`docker-compose.yaml``container_name`)이 `running`에 가깝게 보이면 된다. `pocketbase-todo`, `todo-web`(컨테이너 이름·`docker-compose.yaml``container_name`)이 `running`에 가깝게 보이면 된다.
### 6-3. 로그가 궁금할 때 ### 6-3. 로그가 궁금할 때
@@ -318,7 +318,7 @@ PocketBase 컨테이너는 **기본적으로 HTTPS(TLS)를 제공하지 않는
| 폰에서만 안 됨 | `VITE_POCKETBASE_URL``127.0.0.1`이 아닌지, 폰이 같은 WiFi인지, NAS IP가 맞는지 | | 폰에서만 안 됨 | `VITE_POCKETBASE_URL``127.0.0.1`이 아닌지, 폰이 같은 WiFi인지, NAS IP가 맞는지 |
| 빌드 후에도 주소가 이상함 | `docker compose build --no-cache` 후 다시 `up`, 또는 `export`를 잊지 않았는지 | | 빌드 후에도 주소가 이상함 | `docker compose build --no-cache` 후 다시 `up`, 또는 `export`를 잊지 않았는지 |
| ARM NAS에서 이미지 오류 | 사용 중인 이미지가 해당 CPU 아키텍처를 지원하는지 로그로 확인한다. | | ARM NAS에서 이미지 오류 | 사용 중인 이미지가 해당 CPU 아키텍처를 지원하는지 로그로 확인한다. |
| 컨테이너 이름 충돌 | `todo-pocketbase`·`todo-web`이 이미 있으면 `docker-compose.yaml``container_name`을 바꾼다. | | 컨테이너 이름 충돌 | `pocketbase-todo`·`todo-web`이 이미 있으면 `docker-compose.yaml``container_name`을 바꾼다. |
| `fatal: not a git repository` | `apps`가 아니라 **`cd todo`(클론한 폴더)** 안에서 실행했는지 확인한다. | | `fatal: not a git repository` | `apps`가 아니라 **`cd todo`(클론한 폴더)** 안에서 실행했는지 확인한다. |
| `git pull`이 안 되거나 안 받아짐 | 10절 순서대로 `git status`·`fetch`·`checkout main`·`pull --ff-only`, 로컬 수정·비공개 저장소 자격 확인 | | `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** 포트로 가는지 확인 | | `ERR_SSL_VERSION_OR_CIPHER_MISMATCH` (`https://api…`) | 11-1절. 프록시 443·인증서·`proxy_pass`가 PB **HTTP** 포트로 가는지 확인 |

View File

@@ -2,7 +2,7 @@
## 현재 버전 ## 현재 버전
- `v0.0.6` - `v0.0.7`
## 스택 ## 스택
@@ -37,7 +37,9 @@
포트를 바꾼 경우 `VITE_POCKETBASE_URL`·`VITE_PUBLIC_APP_URL`의 포트·도메인도 동일하게 맞춘 뒤 이미지를 다시 빌드한다. 포트를 바꾼 경우 `VITE_POCKETBASE_URL`·`VITE_PUBLIC_APP_URL`의 포트·도메인도 동일하게 맞춘 뒤 이미지를 다시 빌드한다.
Compose에서 **`container_name`** 을 고정해 두었다: `todo-pocketbase`, `todo-web`. NAS에 같은 이름의 컨테이너가 이미 있으면 `docker-compose.yaml`에서 바꾼다. 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` 값을 환경에 맞게 바꾼다.
## 버전 정책 ## 버전 정책

View File

@@ -1,5 +1,9 @@
# 업데이트 로그 # 업데이트 로그
## v0.0.7
- ~수정. `docker-compose.yaml` PocketBase를 NAS 검증 설정과 정렬(`user`, `./pb_data`, `command`, `container_name` pocketbase-todo). 미사용 named volume 제거.
## v0.0.6 ## v0.0.6
- ~수정. `docs/nas-deploy-guide.md`: `apps`에서 `git pull``not a git repository`가 나는 이유와 `cd todo`·`.git` 확인 절차, 13절 표 보강. - ~수정. `docs/nas-deploy-guide.md`: `apps`에서 `git pull``not a git repository`가 나는 이유와 `cd todo`·`.git` 확인 절차, 13절 표 보강.

View File

@@ -1,7 +1,7 @@
{ {
"name": "todo", "name": "todo",
"private": true, "private": true,
"version": "0.0.6", "version": "0.0.7",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",