二进制及自命令命名统一简化

This commit is contained in:
2026-09-08 17:01:09 +08:00
parent 6bfe20ee00
commit edfc787e1a
18 changed files with 105 additions and 105 deletions
+15 -15
View File
@@ -11,7 +11,7 @@
- **博客**:首页(置顶优先 + 分页 + 标签云)、详情(上一篇/下一篇)、标签页、RSS、sitemap、SEO meta 注入(仅公开内容)
- **管理**:单管理员口令登录(Argon2id)、会话 7 天滑动续期(CSRF 轮换保持不变)、防爆破限流(per-IP + per-账号)、改密
- **回收站**:删除 = 软删除,30 天内可恢复,`gc` 到期物理清除
- **运维**:`init` / `reset-password`(重设口令并吊销全部会话)/ `serve` / `backup`(在线一致快照)/ `gc`(默认 dry-run)/ `version`
- **运维**:`init` / `passwd`(重设口令并吊销全部会话)/ `start` / `backup`(在线一致快照)/ `gc`(默认 dry-run)/ `version`(亦可 `-v`)
## 快速开始
@@ -20,11 +20,11 @@
make build
# 2. 初始化(设置管理员口令与站点标题)
./pure-note init
# 非交互:PN_ADMIN_PASSWORD=xxx PN_SITE_TITLE=yyy ./pure-note init
./pn init
# 非交互:PN_ADMIN_PASSWORD=xxx PN_SITE_TITLE=yyy ./pn init
# 3. 启动
./pure-note serve --addr 127.0.0.1:8080
./pn start --addr 127.0.0.1:8080
# 4. 访问
# 博客: http://127.0.0.1:8080/
@@ -34,7 +34,7 @@ make build
开发模式(本机调试,Cookie 允许非 Secure,仅限 loopback 监听):
```bash
./pure-note serve --dev --addr 127.0.0.1:8080
./pn start --dev --addr 127.0.0.1:8080
# 前端热重载(另开终端):
cd web && npm install && npm run dev # /api 代理到 127.0.0.1:8080
```
@@ -42,8 +42,8 @@ cd web && npm install && npm run dev # /api 代理到 127.0.0.1:8080
忘记口令(CLI 可达即具备服务器权限,可直接重设;重设后全部会话被吊销):
```bash
./pure-note reset-password
# 非交互:PN_ADMIN_PASSWORD=xxx ./pure-note reset-password
./pn passwd
# 非交互:PN_ADMIN_PASSWORD=xxx ./pn passwd
```
## 测试
@@ -60,25 +60,25 @@ slug 冲突策略、设置白名单(永不泄露口令哈希)、meta 注入
## 部署(生产)
```bash
make linux # 产出 pure-note-linux-amd64
sudo cp pure-note-linux-amd64 /opt/pure-note/pure-note
sudo -u purenote ./pure-note init --data-dir /opt/pure-note/data
sudo cp deploy/pure-note.service deploy/pure-note-maint.{service,timer} /etc/systemd/system/
sudo systemctl enable --now pure-note pure-note-maint.timer
make linux # 产出 pn-linux-amd64
sudo cp pn-linux-amd64 /opt/pure-note/pn
sudo -u purenote ./pn init --data-dir /opt/pure-note/data
sudo cp deploy/pn.service deploy/pn-maint.{service,timer} /etc/systemd/system/
sudo systemctl enable --now pn pn-maint.timer
```
反向代理用 Caddy(自动 TLS),示例见 [deploy/Caddyfile](deploy/Caddyfile);
启动需带 `--behind-proxy`(取 X-Forwarded-For 最右条目)。
**升级 SOP**:`pure-note backup` → 停服 → 换二进制 → 起服(迁移自动执行;
**升级 SOP**:`pn backup` → 停服 → 换二进制 → 起服(迁移自动执行;
库版本高于代码支持范围时拒绝启动,`--allow-newer` 显式放行)。
**恢复 SOP**:停服 → 删除 `data/pure-note.db-wal` 与 `-shm` → 以备份文件替换 `pure-note.db` → 起服。
**恢复 SOP**:停服 → 删除 `data/pn.db-wal` 与 `-shm` → 以备份文件替换 `pn.db` → 起服。
## 架构
```
cmd/pure-note/ CLI(serve/init/reset-password/backup/gc/version)
cmd/pn/ CLI(start/init/passwd/backup/gc/version)
internal/config/ 命令行解析(--dev loopback 守卫)
internal/store/ SQLite(modernc 纯 Go 驱动):迁移(user_version) + DAO + 备份 + gc
internal/auth/ Argon2id(PHC) + 随机 token