Docker 部署
Docker 部署
Docker 是当前最直接的部署方式。RemoteCI 服务端使用 ASP.NET Core 10 和 SQLite,数据库默认保存在容器内的 /app/data/remoteci.db。仓库根目录自带 compose.yaml,可以直接用于首次部署。
验证边界
本文内容依据当前 Dockerfile 与 compose.yaml 整理,文档站构建已经通过,但未在 RemoteCI 目录内构建镜像或启动服务。真机与生产环境验收清单见开发状态。
前置条件
- 已安装 Docker Engine 24 与 Docker Compose v2 或更新版本。
- 已获取 RemoteCI 源码。
- TCP 8080 未被其他程序占用。
- 公网部署时,已准备域名、HTTPS 证书和反向代理。
使用 Compose 启动
在服务器上创建部署目录,把 RemoteCI 仓库根目录的 compose.yaml 复制进去。该文件默认:
- 只把
127.0.0.1:8080暴露给宿主机。 - 把 SQLite 保存在命名卷
remoteci-data,删除容器不会丢数据。 - 从
.env或环境变量读取REMOTECI_ADMIN_PASSWORD与REMOTECI_PLUGIN_PAIR_CODE。
在同目录创建不提交到 Git 的 .env:
REMOTECI_ADMIN_PASSWORD=请替换为至少8位的强密码
REMOTECI_PLUGIN_PAIR_CODE=请替换为一次性随机配对码两个变量都可以省略;缺省时服务端会各生成一个随机值并只在首次启动日志中显示。
构建镜像并启动:
docker compose up -d --build
docker compose logs -f remoteci不要省略数据卷
删除容器前请确认命名卷 remoteci-data 仍然存在;删除卷会同时丢失账号、设备会话和插件凭据。
也可以单独构建镜像:
docker build --file server/RemoteCI.Server/Dockerfile --tag remoteci-server:local .Dockerfile 会同时复制 shared 和 server,因此必须在 RemoteCI 仓库根目录执行构建。
验证服务
Invoke-RestMethod http://127.0.0.1:8080/api/health正常响应应包含 status 与 protocolVersion。随后打开服务端页面,使用管理员账号登录并立即修改初始密码。
配置 HTTPS
公网环境不要直接暴露 8080 端口。推荐让 Caddy 或 Nginx 终止 TLS,再转发 HTTP 和 WebSocket。
最小 Caddyfile:
remoteci.example.com {
reverse_proxy 127.0.0.1:8080
}Caddy 会自动转发 WebSocket 握手。请把 remoteci.example.com 替换为真实域名,并确认代理发送 X-Forwarded-Proto。
公网必须使用 HTTPS
HTTP 和 WS 不能保护登录密码、访问令牌与课表内容。不要通过端口映射把 8080 直接开放到公网。
获取发布物
正式使用时推荐直接从 GitHub Releases 获取:
- 服务端:
RemoteCI.Server-版本-linux-x64.zip或RemoteCI.Server-版本-win-x64.zip。 - 插件:
RemoteCI.Plugin-版本.cipx与checksums.md。 - 手表:
RemoteCI.Watch-版本.apk。 - 飞牛 fnOS:
RemoteCI-版本.fpk(安装与更新见飞牛 fnOS 安装)。
需要本地构建时:
dotnet publish server/RemoteCI.Server/RemoteCI.Server.csproj -c Release -r win-x64 --self-contained false
dotnet build plugin/RemoteCI.Plugin/RemoteCI.Plugin.csproj -c Release -p:CreateCipx=true
cd wearos
.\gradlew.bat assembleDebug连接插件和手表
- 插件的云端服务地址填写
https://remoteci.example.com。 - 手表的云端服务地址填写同一个地址。
- 不要手写
/api或/ws路径,客户端会自动拼接。
飞牛 fnOS
RemoteCI 同时以飞牛 fnOS 应用(fpk)形式发布,安装、端口配置与更新方式见飞牛 fnOS 安装。