新增 CT124 PocketBase 操作手冊

systemd 服務操作、collections/rules、升級與備份;對外 pb.lotimmy.com。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-22 21:52:44 +08:00
parent 441c2d5a24
commit c36922cf6f
2 changed files with 77 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
# CT124 PocketBase(自架 BaaS)— 操作手冊
> 主機:CT124192.168.42.124Ubuntu 24.04 LXC | 位置:`/opt/pocketbase`
> 用途:單一 binary 的後端服務(SQLite + REST/realtime + admin UI + 靜態託管)
---
## 一、基本資訊
- 版本:**v0.39.4**(單一 binary,**非 docker**)
- 執行:systemd 服務 `pocketbase.service`(開機自啟、當掉自動重啟 `Restart=always`)
- 監聽:`192.168.42.124:18090`
- 對外:**NPM 反代 `https://pb.lotimmy.com`**(Let's Encrypt,TLS 在 NPM 終結,強制 HTTP→HTTPS)
- 後台:`https://pb.lotimmy.com/_/` | 官方文件:https://pocketbase.io/docs/
## 二、目錄
```
pocketbase 主程式 (binary)
pb_data/ 資料庫(SQLite,所有資料在此;目前 ~1.6M)
pb_public/ 對外靜態網站(放這裡的檔會掛在 https://pb.lotimmy.com/<檔名>)
pb_migrations/ 資料表結構變更紀錄
```
## 三、服務操作
```bash
systemctl status pocketbase # 狀態
systemctl restart pocketbase # 重啟
journalctl -u pocketbase -f # 看 log
```
systemd unit:`/etc/systemd/system/pocketbase.service`
`ExecStart=/opt/pocketbase/pocketbase serve --http 192.168.42.124:18090`
## 四、帳號
- 後台管理員(superuser):`loyangchun@gmail.com`(密碼見密碼管理器,勿寫入本檔)
- 重設管理員密碼:`./pocketbase superuser upsert loyangchun@gmail.com <新密碼>`
- demo 範例使用者(可重建,僅供 `demo.html` 練習):
- `demo@pb.local` / `demo12345` — role=**admin**
- `demo2@pb.local` / `demo12345` — role=**user**(只能改自己的)
## 五、Collections
- **users**(auth,內建):已開放公開註冊;登入者可見彼此 name;有 `role` 欄位(user / editor / admin)。
- **notes**(base,示範待辦):
- 欄位:`title`(text,必填)、`done`(bool)、`priority`(select: high/normal/low)、`owner`(relation→users,必填,cascadeDelete)、`created`/`updated`(autodate)
- API Rules:
- list / view:`@request.auth.id != ""`
- create:`@request.auth.id != "" && @request.body.owner = @request.auth.id`(owner 須為自己,防偽造)
- update / delete:`owner = @request.auth.id || @request.auth.role = "admin"`
## 六、demo.html
對外範例:**https://pb.lotimmy.com/demo.html**(檔案 `pb_public/demo.html`,改它即時生效)。
原生 fetch + EventSource,含登入/註冊、權限控管、搜尋篩選、行內編輯、realtime(SSE)即時同步,無外部套件。
## 七、升級流程(換 binary)
```bash
systemctl stop pocketbase
cp -a pb_data pb_data.preupgrade.$(date +%s) # 先備份資料
cp -a pocketbase pocketbase.<舊版>.bak # 備份舊 binary
curl -fsSL -o /tmp/pb.zip https://github.com/pocketbase/pocketbase/releases/download/v<版本>/pocketbase_<版本>_linux_amd64.zip
unzip -o /tmp/pb.zip pocketbase -d /opt/pocketbase
systemctl start pocketbase # 啟動時自動套用內部 migration
./pocketbase --version
```
升級後驗證資料/規則無誤再刪備份。
## 八、注意事項
- **公開註冊已開**:users collection 可自由註冊,且服務對外(`pb.lotimmy.com`)。不要的話到後台關掉 users 的 create rule。
- **備份**:整個 `pb_data/`(SQLite)即全部資料,停服務或趁低流量 `cp -a pb_data <備份>` 即可;升級流程已含。
- 對外 443 經 NPM → 依賴 docker daemon 與 NPM 容器(見 [`CT124_故障復原_20260529.md`](CT124_故障復原_20260529.md));NPM 掛了 `pb.lotimmy.com` 不通,但內網 `:18090` 仍可用(PocketBase 本身是 systemd,不隨 docker 起落)。

View File

@@ -15,3 +15,4 @@ Claude Code 工作規範見 [`CLAUDE.md`](CLAUDE.md)。
| [CT124_Registry操作手冊_20260622.md](CT124_Registry操作手冊_20260622.md) | CT124 | 私有 Docker Registry(`registry.lotimmy.com` / UI)推拉、刪除回收、維運說明 |
| [CT124_Browserless操作手冊_20260622.md](CT124_Browserless操作手冊_20260622.md) | CT124 | 自架 headless Chromium(`:13000`,僅 LAN)截圖/PDF/抓取/Puppeteer 端點與維運 |
| [CT124_Gitea操作手冊_20260622.md](CT124_Gitea操作手冊_20260622.md) | CT124 | 自架 Gitea(`:31337` Web / `:31338` SSH,本 repo 的家)操作、clone、備份、設定 |
| [CT124_PocketBase操作手冊_20260622.md](CT124_PocketBase操作手冊_20260622.md) | CT124 | 自架 PocketBase(systemd,`:18090` / `pb.lotimmy.com`)服務操作、collections、升級、備份 |