歌词尚未加载



已完成的部署步骤
1. 环境准备
- 主机商:RackNerd
- 系统:Linux amd64
- 面板:1Panel
- 工作目录:
/home/xiazhiauth
2. 安装前端依赖
1 | cd /home/xiazhiauth/yuanma/xiazhi-auth-studio/frontend |
说明:
pnpm— Node.js 包管理器install— 安装依赖--frozen-lockfile— 按pnpm-lock.yaml锁定版本安装,不更新锁文件- 结果:552 个依赖安装成功
3. 构建二进制
授权版(交付客户用)
1 | cd /home/xiazhiauth/yuanma/xiazhi-auth-studio |
| 步骤 | 命令 | 说明 |
|---|---|---|
| 前端构建 | tsc -b && vite build |
TypeScript 类型检查 + Vite 打包,产出 frontend/dist |
| 嵌入前端 | cp -a frontend/dist -> backend/internal/web/dist |
把前端文件嵌入 Go 代码 |
| 编译后端 | CGO_ENABLED=0 go build -ldflags="-s -w" |
编译为静态二进制,产出 release/xiazhi-auth |
无授权版(自用)
1 | make build-noauth |
产物:release/xiazhi-auth-noauth,37MB 单二进制。
| 授权版 | 无授权版 | |
|---|---|---|
| 启动授权检查 | ✅ 需要授权码 + 域名 | ❌ 跳过 |
| 用途 | 交付给客户 | 自己开发/测试/自用 |
| 业务功能 | 完全一致 | 完全一致 |
4. 部署二进制
1 | cp /home/xiazhiauth/yuanma/xiazhi-auth-studio/release/xiazhi-auth-noauth /home/xiazhiauth/ |
最终目录结构:
1 | /home/xiazhiauth/ |
5. 生成配置
1 | cd /home/xiazhiauth |
生成结果:
- 配置文件:
/home/xiazhiauth/config.yaml - 管理员账号:
admin - 管理员密码:
Ar35ErvmoLe2YfXzwzc5b2cA(仅显示一次,已保存) - 所有密钥均为自动生成的随机值
6. 修改配置
根据 1Panel 环境修改以下关键项:
1 | # PostgreSQL — 1Panel 创建数据库后填写 |
查看 Redis 数据库占用情况
在为项目选择 Redis 数据库编号前,建议先检查当前已经有哪些 DB 存在数据,避免和其他项目使用同一个 DB。
执行下面的命令进入 Redis:
1 | docker exec -it 1Panel-redis-AzYr redis-cli -a 'redis_F3cfmD' |
其中1Panel-redis-AzYr为我部署的redis容器名称。redis_F3cfmD为redis密码。
进入 Redis 命令行后执行:
1 | INFO keyspace |
返回结果类似:
1 | # Keyspace |
出现在结果中的 DB 表示当前已经存在 Key。
根据上面的结果,已经存在数据的数据库有:
1 | db0 |
没有出现在结果中的 DB 当前为空:
1 | db4 |
因此,本次为夏稚 Auth Studio 选择 db10:
1 | keydb: |
还可以在 Redis 命令行中执行下面的命令,确认 Redis 一共配置了多少个逻辑数据库:
1 | CONFIG GET databases |
默认一般会返回:
1 | 1 "databases" |
这表示 Redis 当前共有 16 个逻辑数据库,可以使用的编号为 db0 至 db15。
项目停止运行后,只会断开与 Redis 的连接,不会自动清空项目写入的数据。
没有设置过期时间的 Key 会一直保留;设置了 TTL 的 Key 才会在到期后自动删除。因此,即使某个项目已经停止,也不能仅凭项目状态判断对应的 Redis DB 已经可以重新使用。
Redis 的不同 DB 只是逻辑分区,并不具备真正的权限隔离。除了给不同项目选择不同的 DB,还建议设置独立的 Key 前缀。本项目使用的前缀为
basicauth:,可以减少与其他项目的 Key 发生冲突。
7. 前台启动验证
1 | CONFIG_PATH=/home/xiazhiauth/config.yaml /home/xiazhiauth/xiazhi-auth-noauth |
成功日志:
1 | PostgreSQL ✅ 已连接 |
验证:
1 | curl -fsS http://127.0.0.1:9091/healthz |
确认后 Ctrl+C 停止。
8. 配置 1Panel 进程守护
1Panel 面板 → 面板设置 → 进程守护,创建守护进程:
| 字段 | 值 |
|---|---|
| 名称 | auth-xiazhi |
| 启动用户 | root |
| 运行目录 | /home/xiazhiauth |
| 启动命令 | /home/xiazhiauth/xiazhi-auth-noauth |
| 进程数量 | 1 |
| 环境变量 | CONFIG_PATH=/home/xiazhiauth/config.yaml |
| 自动重启 | 开启 |
| 自动启动 | 开启 |
| 停止信号 | TERM |
| 停止等待 | 20 秒 |
9. 配置 1Panel 反向代理 + HTTPS
1Panel 面板 → 网站 → 创建网站 → 反向代理:
| 字段 | 值 |
|---|---|
| 域名 | 用户自己的域名(如 auth.example.com) |
| 代理地址 | http://127.0.0.1:9091 |
| HTTPS | 勾选,自动申请 Let’s Encrypt 证书 |
创建完成后,在网站 设置 → 配置文件 的 server 块中可根据需要添加:
1 | client_max_body_size 2048m; |
这个配置的作用:系统支持上传软件安装包/更新包(如 .exe、.zip 等),默认最大允许 2048MB。但 Nginx 默认限制上传只有 1MB,不加这行的话上传大文件会被 Nginx 拦截。
如果你用不到上传安装包的功能,可以不配这行,不影响正常使用。
10. 访问入口
| 入口 | 地址 |
|---|---|
| 用户前端 | https://域名/ |
| 管理后台 | https://域名/admin/login |
默认管理员账号:
- 用户名:
admin - 密码:
Ar35ErvmoLe2YfXzwzc5b2cA
后续建议
- 绑定 TOTP 二因素认证,保存恢复码
- 从
config.yaml中删除bootstrap_admin整个配置段 - 删除后重启进程守护
- 配置 CORS(如有跨域需求)
- 配置站点信息、邮件、支付等业务设置
附录:常用管理操作
修改管理员密码
方式一:CLI 命令(忘记密码登不进去时用)
1 | cd /home/xiazhiauth |
按提示输入新密码即可,会自动撤销该账号的所有现有登录会话。
一行搞定(不交互):
1 | printf '%s\n' '新密码' | CONFIG_PATH=/home/xiazhiauth/config.yaml ./xiazhi-auth-noauth admin password --login admin --password-stdin |
方式二:后台网页(已登录时用)
登录后台 → 右上角头像 → 修改密码 → 输入旧密码和新密码 → 保存
修改管理员用户名
CLI 没有改用户名的命令,需在后台网页操作:
- 登录后台 → 左侧菜单 管理员
- 找到要改的账号,点击编辑
- 修改用户名 → 保存
如果改的是首次引导管理员(
bootstrap_admin),改完后建议去config.yaml中删除整个bootstrap_admin配置段,然后重启进程守护,此后账号信息完全以数据库为准。
评论