本地开发启动
这篇教程直接在自己的电脑运行 Go 后端和 Node.js 管理后台,完成首次 Setup,并用自己创建的管理员登录。不需要安装 Docker,也不使用 XDocker。
起点:一台开发电脑,一个全新目录。终点:http://127.0.0.1:3030 可以登录,后端安装状态为 installed。
1. 检查工具
适用 macOS 或 Linux,使用 Bash 终端。本页假设开发工具、PostgreSQL 和 Redis 已安装,只说明如何连接并启动 PowerX,不展开环境安装。使用本地文件存储,不需要 MinIO。
| 工具 | 本教程使用的版本/要求 |
|---|---|
| Git、Make、curl、OpenSSL | 系统可执行命令 |
| Go | 1.26.7,与本次源码 backend/go.mod 一致 |
| Node.js | 22.23.2,使用随附的 npm |
| 数据服务 | 可连接的 PostgreSQL 16 + pgvector、Redis 7;可以是已有服务 |
不确定工具版本?展开检查
在本机终端 A执行:
bash
set -eu
git --version
make --version
go version
node --version看到 Go 1.26.7、Node v22.23.2,且其他工具没有报错即可。
以下命令在本机 Bash 终端运行;不要用 sudo 运行整个开发项目。
2. 获取最新 Release 的源码
页面会自动获取最新可用容器 Release(含预发布),显示实际版本与发布时间。点击“复制克隆命令”,在本机终端 A粘贴执行;~/powerx-local 必须是新目录,不覆盖已有实例。这里只获取源码,不下载镜像,也不需要运行版本解析脚本。
正在从 GitHub 获取最新发布信息(含预发布)…
克隆成功后进入目录:
cd ~/powerx-local复制时选中的版本会固定在这次源码目录中;以后打开页面或点击“重新获取”,会重新查询。获取失败时不会提供旧版命令;可以重试,或从“官方 Releases”查看发行信息。
3. 确认数据库与缓存可连接
已有服务直接用,不需要另建容器。 准备一个仅供本次开发使用的空数据库和账号,确认安装了 pgvector;再准备可使用的 Redis 连接。不要把测试迁移连到客户或正式数据库。
需要记下:数据库主机、端口、库名、用户名、密码,以及 Redis 主机、端口、密码。以下默认用本机 PostgreSQL 127.0.0.1:5432、数据库/账号 powerx,Redis 127.0.0.1:6379。使用其他连接时,下面的检查和 Setup 要同步替换;Redis 还需写入步骤 4 配置。远程服务通过已有可信内网或隧道连接,不为本教程开放数据库公网端口。
已有连接不确定是否可用?展开检查
在本机终端 A检查连接,按提示输入对应密码:
psql -h 127.0.0.1 -p 5432 -U powerx -d powerx -W \
-c "SELECT current_user, extversion FROM pg_extension WHERE extname='vector';"
redis-cli -h 127.0.0.1 -p 6379 --askpass ping通过条件:第一条返回 powerx 和 vector 版本,第二条返回 PONG。已有本机 Redis 未设密码时,去掉 --askpass 再执行,并在后续配置中保持空字符串。psql/redis-cli 使用已有 PostgreSQL/Redis 附带的客户端。缺少服务或扩展时,先由自己的环境维护者补齐,不需要为了这篇教程安装 Docker。
本教程需要 PostgreSQL 和 Redis;MinIO、Kafka、RabbitMQ 和 NATS 不需要安装。
4. 准备自己的运行配置
在本机终端 A执行:
cd ~/powerx-local
test ! -e backend/etc/config.yaml
cp backend/etc/config_example.yaml backend/etc/config.yaml
chmod 600 backend/etc/config.yaml
openssl rand -hex 32最后一条生成上传签名密钥;数据库与 Redis 使用步骤 3 已验证的连接与密码。将值保存到密码管理器,不要提交到 Git 或发送到聊天中。
用编辑器打开 backend/etc/config.yaml,修改已有字段,勿在文件末尾追加同名段落:
先改这几项,其余保留开发模板默认值:
| 要填的内容 | 配置位置 |
|---|---|
| 已有 Redis 连接 | cache 下的 host、port、password;queue.redis.addr 填同一 主机:端口 |
| 仅本机监听 gRPC | server.grpc.host: 127.0.0.1 |
| 本地文件访问地址 | storage.local.public_base_url: http://127.0.0.1:8077/media |
| 刚生成的上传签名密钥 | storage.local.upload_token_secret |
数据库连接稍后在 Setup 填写,不必先手工写 YAML。当前 Setup 的 Redis 连接测试不会把 Redis 值写回运行配置,所以这里仍需填写 cache;不能只凭连接测试成功就跳过它。其余三处 Redis 密码保留模板空值,启动时会继承 cache.password,不用重复填写。如果 Redis 不是本机 6379,还需把 event.fabric.redis_addr、event.fabric.authorization.redis_addr 改为同一个实际地址。
哪些默认值不用改?
本次开发模板已使用 deployment.env: dev、后端 127.0.0.1:8077、database.dsn: ""、本机数据库 ssl_mode: disable、Redis DB 0、storage.default_driver: local、文件目录 ./storage/media 和 install.status: uninstalled。
auth.jwt_secret、server.secret_key 保持空,下一步自动生成。保留允许 http://127.0.0.1:3030 的 http_security.web_admin_origins。不需要填写 S3/MinIO 示例凭据。远程数据库的 TLS 配置需按现有连接要求填写,不能照搬本机的 disable。
5. 初始化密钥并安装前端依赖
仍在本机终端 A,源码根目录执行:
make init-secrets CONFIG=backend/etc/config.yaml
npm --prefix web-admin ci首次会下载 Go/Node 依赖。通过条件:密钥初始化输出 generated(再次执行为 existing),npm 安装成功。命令不会打印 JWT 或服务加密密钥。
此时还没有完成安装,也没有管理员。不要执行 make seed、make db-refresh,也不要手改为 installed。 接下来后端先进入无需连接数据库的 Setup 模式,由向导连接数据库、迁移表结构并收集管理员信息;不需要先执行 make migrate。
6. 分别启动后端和管理后台
本机终端 A:
cd ~/powerx-local
POWERX_ENV=dev make dev保持它运行,看到服务就绪后,打开本机终端 B:
cd ~/powerx-local
POWERX_ENV=dev npm --prefix web-admin run dev -- --host 127.0.0.1 --port 3030看到 Nuxt 显示 http://127.0.0.1:3030 后继续。本教程显式指定 3030;不要把 Nuxt 默认端口或 systemd-dev 的 3001/8081 混进来。
7. 完成首次 Setup
在本机浏览器打开 http://127.0.0.1:3030/setup。按页面顺序填写:
- 系统检查与许可:确认许可,部署环境选
dev。 - 数据库与基础配置:数据库类型 PostgreSQL、版本 16、主机
127.0.0.1、端口5432、库名和用户均为powerx;密码使用步骤 3 已验证的 PostgreSQL 密码。Redis 主机127.0.0.1、端口6379、索引0,填 Redis 密码。两项连接测试成功后再继续。文件存储选local,目录./storage/media(把默认/data/uploads改成这个开发目录)。 - 域名与 HTTPS:系统域名填
127.0.0.1:3030,不带协议;HTTPS 选关闭。后端端口8077,管理端端口3030。 - 管理员与租户:填写你自己的管理员用户名、邮箱、强密码和租户信息。这是以后登录使用的账号,与数据库密码无关。
- 插件与智能体:首次先保留默认选择;本教程不把额外插件或真实 AI 调用作为首装前置。
- LLM:可以选择跳过,安装后再配置模型。点击“完成设置”。
出现“安装已完成,请重启后端”时,在终端 A 按 Ctrl+C,重新执行步骤 6 的后端启动命令,再回页面点击“我已重启,立即检测”。若后端已经自动恢复,也先完成下一步状态验证。
8. 登录并确认结果
打开 http://127.0.0.1:3030,使用刚设置的管理员账号登录。然后在另一个本机终端执行:
curl -fsS http://127.0.0.1:8077/api/v1/health
curl -fsS http://127.0.0.1:8077/api/v1/admin/setup/status完成条件:健康接口成功;状态响应的 data.install_status 为 installed、data.configured 为 true;刷新后台仍能进入自己的租户。restart_required 为 true 时按提示重启并复查端口。
开发结束时,在后端和前端终端按 Ctrl+C,已有数据服务不随开发项目停止。保留数据库数据、私有 config.yaml、原密钥和 backend/storage/。再次开发只需确认依赖可连接并执行步骤 6,不重新首装。
遇到问题
| 现象 | 先检查什么 |
|---|---|
| Go 的 Sonic/ABI 编译错误 | 确认实际使用 Go 1.26.7;不要用旧 Go 编译这个快照 |
| 数据库/Redis 连接失败 | 重新执行步骤 3 的 psql/redis-cli 检查;核对服务是否运行、实际地址/端口和密码 |
| 打开 Setup 不代表安装完成 | 按步骤 7 完成向导;不要用 seed 或改安装标志代替 Setup |
| Setup API 404 或页面连接失败 | 核对后端 8077、前端 3030 和 POWERX_BACKEND;看终端 A、B 的日志 |
| 密钥无效/配置不可写 | 确认启动日志读取的是本次 config.yaml,且归当前用户所有;已有实例恢复原密钥,勿删除配置重建 |
版本与源码依据
步骤 2 在浏览器中实时查询官方发布列表,按发布时间选择含完整容器包与校验文件的非草稿 Release,不限定标签前缀;预发布和未来的正式版本均可选中。查询失败或发布列表未能完整读取时不生成命令。后续工具版本、配置和启动步骤的源码核对基线仍为 PowerX f99333ccd80eb3c2467fe6cc9009917340556424;自动选中新版不代表本页已实测该版本,工具要求以所选源码的 backend/go.mod 和 web-admin/package.json 为准。核对来源包括 Make 迁移入口、开发配置与 Setup 实现。当前源码缓存工厂只注册 Redis,不能把 Setup 中其他缓存选项当成已实现的替代方案;核对了缓存工厂。这些链接用于查阅来源,不是完成本教程的必经步骤。本文命令经过源码静态核对,本次文档修订未重新执行全新机器安装。
