跳到主要内容

实用命令

XLADA 日常运维命令合集。除非另有说明, 示例均在面板服务器上的 /opt/xlada 目录中执行,docker-compose.yml 就放在那里。

服务在同一个 compose 文件中描述:xpanel(面板)、xpanel-db (PostgreSQL)、xpanel-redis(Valkey)以及可选的 xpanel-subpage (订阅页面)。面板和订阅页面的端口绑定到 127.0.0.1 —— 由 nginx 对外提供。

面板​

cd /opt/xlada

docker compose ps # xpanel、xpanel-db、xpanel-redis 服务状态
docker compose logs -f xpanel # 实时查看面板日志
docker compose logs --tail=100 xpanel-db
docker compose restart xpanel # 仅重启面板
docker compose up -d # 应用 .env 中的更改

不用 compose 直接查看同样的日志也很方便:

docker logs -f xpanel
docker logs --since 30m xpanel

完整重启整个栈且不丢失数据:

docker compose down && docker compose up -d
危险

切勿给 docker compose down 加上 -v 标志:它会连同数据库和 所有用户一起删除卷。安全更新顺序见 更新 一节。

紧急操作(例如重置超级管理员密码)由面板 CLI 执行:

docker exec -it xpanel cli

完整列表见 Rescue CLI 一节。

说明

修改 .env 后请执行 docker compose up -d:compose 会重新创建 发生变化的容器并重新读取变量。命令 docker compose restart 不会重新读取环境变量 —— 如果你 改了 METRICS_USER 或域名,这样做是不够的。

内部服务​

面板将数据存储在 PostgreSQL 中,缓存存储在 Valkey 中。检查两者:

docker exec -it xpanel-db pg_isready -U xpanel -d xpanel
docker exec -it xpanel-redis valkey-cli ping

预期的响应是 accepting connections 和 PONG。

数据库​

更新或手动修改前先做转储 —— 这是唯一可靠的 回滚方式。转储在容器内进行,因此无需在宿主机上 安装 pg_dump 和 psql,而 backup-...sql 文件会出现在当前目录中。

docker exec xpanel-db pg_dump -U xpanel xpanel > backup-$(date +%F).sql

恢复:

docker exec -i xpanel-db psql -U xpanel -d xpanel < backup-2026-01-01.sql

交互式控制台:

docker exec -it xpanel-db psql -U xpanel -d xpanel
任务查询
有多少用户SELECT count(*) FROM users;
数据库大小SELECT pg_size_pretty(pg_database_size('xpanel'));
最近的审计记录SELECT * FROM admin_audit_log LIMIT 10;
说明

查看操作日志时,按管理员和结果筛选在 界面中更方便 —— 即 Audit Log 页面,而不是在 psql 中。

节点​

节点是代理服务器上的独立容器,因此命令要在它 运行的地方执行:

docker logs -f xpanel-node # 节点日志并检查 SECRET_KEY
docker exec -it xpanel-node xlogs # Xray-core 日志
docker exec -it xpanel-node cli --clear-logs

清理 Xray 日志也可以从面板启动:Logs 页面, “Node system logs” 部分。节点会轮转文件,不会重启 Xray —— 活动连接不会中断。详情见 安装节点 一节。

端口​

ss -tlnp | grep -E ':(3000|3001|3010|2222)\b' # 谁在监听 XLADA 的端口
nc -vz 203.0.113.10 2222 # 从面板服务器测试 NODE_PORT

在本地和外部检查面板:

curl -sI http://127.0.0.1:3000
curl -s -o /dev/null -w '%{http_code}\n' https://panel.example.com/api/auth/status

端口 2222 不需要对全互联网开放:只需一条针对面板 IP 的防火墙规则即可。相反,代理端口由 Xray 配置决定,并且必须 对客户端开放。

提示

请在面板服务器上检查 NODE_PORT,而不是从浏览器:面板自己 访问节点,端口能否从互联网访问并不能说明什么。

证书​

certbot certificates # 已签发了什么、到期日期
certbot renew --dry-run # 检查自动续期
certbot --nginx -d panel.example.com # 签发证书
systemctl list-timers | grep certbot # 续期定时器是否启用

修改 nginx 配置后,务必检查语法:

nginx -t && systemctl reload nginx

指标​

Prometheus 指标在 127.0.0.1:3001 上以 basic auth 方式提供。登录名和 密码取自与启动面板时相同的变量 METRICS_USER 和 METRICS_PASS:

source /opt/xlada/.env
curl -s http://127.0.0.1:3001/metrics -u "$METRICS_USER:$METRICS_PASS" | head
注意

端口 3001 不应对外开放。如果指标由外部 Prometheus 采集,请通过 SSH 隧道或单独的 代理将它指向 127.0.0.1:3001,而不要在防火墙中开放端口。

接下来​

  • 更新 —— 更新顺序以及从转储回滚。
  • Rescue CLI —— 面板的紧急命令。
  • 常见错误 —— 命令没有生效时该怎么办。