Docker · Linux · NAS

部署与配置

单个二进制、内嵌前端、内置 SQLite。五分钟把 Diarum 部署到你的服务器、NAS 或电脑上。

先试试看

不想马上部署?直接打开 在线演示站,使用演示账号 demo / demo@1234 登录体验全部功能。演示站数据公开且会被重置,请不要写入真实内容。

使用 Docker(推荐)

官方镜像 songtianlun/diarum 同时提供 linux/amd64 和 linux/arm64,树莓派、群晖、威联通等 ARM 设备也可以直接运行。

docker run -d \
  --name diarum \
  -p 8090:8090 \
  -v /path/to/your/data:/app/data \
  -e TZ=Asia/Shanghai \
  --restart unless-stopped \
  songtianlun/diarum:latest

然后在浏览器打开 http://服务器IP:8090。

一定要挂载数据目录。 容器内的 /app/data 保存了数据库、图片、审计日志等全部数据,不挂载的话删除容器数据就没了。

镜像标签说明:latest 始终指向最新正式版;每个版本也有对应的标签(如 v0.9.9),需要固定版本时使用。

使用 Docker Compose

创建 docker-compose.yml:

services:
  diarum:
    image: songtianlun/diarum:latest
    container_name: diarum
    ports:
      - "8090:8090"
    volumes:
      - ./data:/app/data
    environment:
      - DIARUM_DATA_PATH=/app/data
      - TZ=Asia/Shanghai
    restart: unless-stopped

启动:

docker compose up -d

首次使用

  1. 打开网页,点击「注册」创建账户。第一个注册的账户自动成为管理员,之后注册的都是普通用户;
  2. 登录后会直接进入今天的日记,开始写吧;
  3. 在「设置」里按需配置:语言与视觉风格、AI 助手、图片存储、自动备份、API 与 MCP;
  4. 管理员可以访问 /admin 系统后台,查看系统概览、管理用户、配置审计日志归档和访客统计。

配置 HTTPS 与域名

建议通过反向代理为 Diarum 配置 HTTPS,PWA 安装、剪贴板等浏览器能力都需要安全上下文,MCP 客户端也更推荐使用 HTTPS 地址。

Caddy(自动申请证书):

diary.example.com {
    reverse_proxy 127.0.0.1:8090
}

Nginx:

server {
    listen 443 ssl http2;
    server_name diary.example.com;
    # ssl_certificate / ssl_certificate_key ...

    client_max_body_size 200m;   # 允许上传大图、实况视频和导入压缩包

    location / {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;     # AI 助手使用流式输出
    }
}

配置项

配置 说明
--data-dir / DIARUM_DATA_PATH 数据目录。优先级:命令行参数 > 环境变量 > 默认值(二进制运行时为 ./diarum_data,Docker 镜像中为 /app/data)
--http 监听地址,默认 :8090,例如 --http=127.0.0.1:8090 只监听本机
TZ 时区,影响定时备份、日志清理等计划任务的执行时间

其余设置(AI、图片存储、备份、API、审计等)都在网页界面中完成,按用户分别保存,无需编辑配置文件。

数据目录里有什么

data/
├── diarum.db              # 主数据库(SQLite):用户、日记、历史版本、设置、AI 对话……
├── storage/               # 本地存储的图片及其缩略图
├── logs/system-audit/     # 系统审计日志,每天一个 JSON Lines 文件
└── visits/visits.db       # 访客统计(开启后),独立的 SQLite 文件

迁移 / 冷备份:停止服务后复制整个数据目录即可。日常备份更推荐在「设置 → 数据管理」中开启 自动备份到 S3。

从旧版本升级时,如果数据目录中存在旧的 data.db 而没有 diarum.db,启动时会自动迁移,旧数据库保持不变。

升级

docker compose pull && docker compose up -d
# 或
docker pull songtianlun/diarum:latest && docker rm -f diarum && docker run ...(同上)

数据库结构会在启动时自动迁移。升级前建议先做一次备份。每个版本的变化请查看 版本发布。

命令行管理用户

diarum users list                    # 查看用户和身份
diarum users list --json
diarum users set-role alice admin    # <user> 可以是用户名、邮箱或 ID;<role> 为 user 或 admin

# Docker 中
docker exec -it diarum /app/diarum users list
docker exec -it diarum /app/diarum users set-role alice admin

服务运行时也可以使用,身份修改立即生效并记入审计日志。忘记哪个账户是管理员时尤其有用。

从源码构建

需要 Go 1.23+ 和 Node.js 20+:

git clone https://github.com/songtianlun/diarum.git
cd diarum
make build          # 先构建前端,再把前端嵌入 Go 二进制
./diarum serve      # 默认监听 :8090,数据保存在 ./diarum_data

开发模式:make dev-frontend 与 make dev-backend 分别启动前后端,make test 运行测试。

遇到问题

  • 在 GitHub Issues 提交问题或建议;
  • 微信搜索 frytea26 添加开发者好友,备注 diarum,加入交流群。