RawMark
纯 Markdown 笔记网页编辑器:所见即所得(类 Obsidian Live Preview)、文件即真源、Docker 部署、浏览器访问。
部署
本机部署沿用 /srv/AlphaPulse/deploy 的目录约定,端口按 /docker/main/.env 的个人项目范围(21000–21999)分配为 RAWMARK_PORT=21000:
cd deploy
install -d -m 750 -o 65532 -g 65532 data
docker compose --env-file /docker/main/.env up -d --build --wait
持久化数据位于 deploy/data/,与 .dev-data/ 独立。首次初始化的启动码位于 deploy/data/setup-code.txt。
宿主机 Nginx 配置为 deploy/nginx/raw.134333.xyz.conf,复用现有通配证书及 WebSocket 升级映射;安装到 /etc/nginx/conf.d/134333.xyz/ 后,先执行 nginx -t 再重载。
域名 raw.134333.xyz 在 DNSPod 设置 CNAME 指向 cdn.134333.xyz(与 AlphaPulse 一致);还需在 Cloudflare for SaaS 的 unino.top 区域添加该自定义域名,并等待域名与托管证书均为 active。仅设置 CNAME 或旧区域中的 A 记录不足以完成 CDN 接入。访问地址为 https://raw.134333.xyz。修改端口时需同步端口登记和 Nginx 上游。
其他服务器也可直接构建并运行:
mkdir -p ~/rawmark-data
docker build -t rawmark .
docker run -d --name rawmark \
--user "$(id -u):$(id -g)" \
-p 8080:8080 \
-v ~/rawmark-data:/data \
--restart unless-stopped \
rawmark
- 首次打开需要输入启动码,位于数据目录的
setup-code.txt(如~/rawmark-data/setup-code.txt),设置密码后自动删除。 - 笔记以普通
.md文件保存在数据目录/vault/,图片按 Typora 习惯存放在同级的笔记名.assets/,可直接用 Typora 等编辑器打开;外部修改会实时同步到网页。 --user让容器以宿主机用户身份读写数据目录;不指定时容器以 UID 65532 运行,需要该用户对目录有写权限。- 请通过 HTTPS 反向代理(Caddy、Nginx 等)访问,并转发 WebSocket(
/api/v1/events)。 - 分享:命令面板(F1)中「分享当前笔记」生成只读链接
/s/…,可设访问密码与有效期;「管理分享链接」查看与撤销。 - 自动化:「API 令牌」中创建只读或读写令牌,以
Authorization: Bearer <令牌>调用 REST API,接口说明见/api/v1/openapi.json。
| 环境变量 | 默认值 | 说明 |
|---|---|---|
RAWMARK_DATA |
/data |
数据目录(数据库、可重建的搜索索引 index.db、默认笔记仓库) |
RAWMARK_VAULT |
$RAWMARK_DATA/vault |
笔记仓库目录,可指向已有的笔记文件夹 |
RAWMARK_ADDR |
:8080 |
监听地址 |
开发
需要 Go 1.27+ 与 Node 24+。开发时不必构建前端或 Docker 镜像,一键启动:
scripts/dev.sh # 后端 go run -tags dev + 前端 Vite 热更新,Ctrl+C 同时退出
scripts/dev.sh --host # 前端监听所有网卡,手机访问 http://<电脑 IP>:5173
浏览器打开 http://localhost:5173 ,启动码在 .dev-data/setup-code.txt。端口与数据目录可用 API_PORT、WEB_PORT、RAWMARK_DATA 覆盖,详见 scripts/dev.sh --help。
检查:
cd web && npm run typecheck && npm test
go vet -tags dev ./... && go test ./internal/...