Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

构建与启动

构建

# server feature 必须显式开启
cd path/to/cr4sync
cargo build --release --features server

CLI-only 构建(不含 axum / tower-http / moka 等):

cargo build --release

启动

cr4sync serve                              # 用 [serve] 段配置
cr4sync serve --address 0.0.0.0            # 临时覆盖监听地址
cr4sync serve --port 8080                  # 临时覆盖端口
cr4sync -c /etc/cr4sync.toml serve         # 指定配置文件

命令行参数

参数类型默认说明
--address <IP>string[serve].address127.0.0.1临时覆盖监听地址。必须是合法 IPv4/IPv6。
--port <PORT>u16[serve].port5731临时覆盖监听端口。

必须配置段 (最小启动server所需要的配置)

[serve]
# address = "127.0.0.1"  # 未指定缺省回环地址, 自行按需更改, 比如 0.0.0.0
# port    = 5731   # 未指定缺省 5731, 可以自行指定端口

[serve.cr4]
# 必填, 你的 Cloudreve 后端地址, 必须填写域名, 需校验 license
# 同内网可将域名在 /etc/hosts 中添加映射到 cloudreve 机器的内网ip
server_url = "https://cloudreve.example.com"  
# server_port     = 443
# server_api_path = "/api/v4"

[log]
# server_log_path = "./logs/server.log"

[license]
# 缺省路径, 得到license文件将其重命名为 license.lic 放到二进制同路径的 credential 目录下
# 也可以手动指定路径
# path = "./credential/license.lic"  

[serve.cr4].server_url 缺失时启动失败。其他全部可省。

启动副作用

  1. 打开 / 创建 ./credential/server.db(缺省路径)。首次启动自动执行 migrations(建表 + 索引)。
  2. 构造 AppState:含 ServerDb / AuthValidator / JobManager / reqwest::Client
  3. 组装 router/health 白名单 + 其余路径强制鉴权 + /admin/*require_admin 中间件。
  4. bind + servetokio::net::TcpListener::bind + axum::serve + 优雅关停(Ctrl-C 触发 broadcast cancel,所有运行中的 job 收到 CancellationToken::cancel)。

凭证目录权限

强烈建议:

chmod 0700 ./credential
chmod 0600 ./credential/server.db

server.db 含第三方 refresh_token 用户信息等加密密文, 加密多重防护。管理员无法查看子用户的三方driver敏感信息。日志完全脱敏。

systemd 单元示例

[Unit]
Description=cr4sync HTTP API server
After=network-online.target

[Service]
Type=simple
WorkingDirectory=/opt/cr4sync
ExecStart=/opt/cr4sync/cr4sync -c /opt/cr4sync/cr4sync.toml serve
Restart=on-failure
RestartSec=5
User=cr4sync
Group=cr4sync
UMask=0077

[Install]
WantedBy=multi-user.target

健康检查

curl http://127.0.0.1:5731/api/v4/cr4sync/health
# {"code":0,"msg":"ok","data":{"ok":true,"service":"cr4sync","version":"..."},"request_id":"01J..."}

日志

  • 主日志:[log].log_path(缺省 ./logs/sync_core.log),所有模块。
  • 额外 layer:[log].server_log_path(缺省 ./logs/server.log),过滤 target=cr4sync::server::*,HTTP 访问 + 鉴权 + 路由 + 审计写入轨迹专属。
  • access_log middleware 每个请求会发一条 info 级别记录,含 method / path / status / user_id / request_id / elapsed_ms