- install-master.sh/install-agent.sh: 二进制下载源由已封账号 aaaamoooo/3x-ui-diy 改指本仓 Gitea Releases (tag 沿用 v3.7.0-agent.1); README 同步撤下'暂不可用'标注 - install.sh/update.sh: 未被 fork 部署链引用, 整文件替换为中英双语短桩 (exit 1), 防旧习惯调用时静默装成/更新成上游原版 - x-ui.sh: 保留全部管理功能, 仅中和 install/update/update_dev/update_menu/ legacy_version/update_shell 的上游下载分支与 uninstall 打印的上游命令, 一律改为提示本仓 Gitea Releases 地址后退出该分支 - panel.go: 面板自更新运行时耦合处理 — panelUpdaterURL 与版本检查 API 由 MHSanaei GitHub 改指本仓 Gitea (raw update.sh + /api/v1 releases, 响应字段 tag_name/body/target_commitish 与原解析结构一致); 下载到的将是本仓 update.sh 短桩, 面板更新会安全失败而非覆盖成原版 - deploy/cloud-init: curl 上游 install.sh 改为本仓 install-master.sh (Gitea raw); 头部注明 XUI_* 非交互旋钮与 install-result.env 凭据回显在 fork 安装脚本下无等价物
82 lines
3.6 KiB
YAML
82 lines
3.6 KiB
YAML
#cloud-config
|
|
# ---------------------------------------------------------------------------
|
|
# Generic 3x-ui unattended install via cloud-init user-data.
|
|
#
|
|
# Works on any cloud-init platform: Hetzner, AWS, DigitalOcean, Vultr, GCP,
|
|
# Azure, Oracle. Paste the whole file as the instance "user data".
|
|
#
|
|
# It installs the latest 3x-ui release NON-INTERACTIVELY, generating unique
|
|
# random credentials per instance. Full credentials are surfaced ONLY on the
|
|
# serial console (owner-only); /etc/motd (world-readable) shows just the access
|
|
# URL + username. Nothing is baked in advance — every instance is unique.
|
|
#
|
|
# Fork note (3x-ui-agent): the bootstrap below installs this fork's
|
|
# install-master.sh from its own Gitea repository. The fork installer does
|
|
# NOT consume the XUI_* non-interactive knobs and does NOT write
|
|
# /etc/x-ui/install-result.env, so the XUI_* exports and the credential-
|
|
# surfacing block below are inert leftovers from the upstream installer.
|
|
# ---------------------------------------------------------------------------
|
|
|
|
package_update: true
|
|
package_upgrade: false
|
|
|
|
write_files:
|
|
- path: /opt/xui-bootstrap.sh
|
|
permissions: '0700'
|
|
owner: root:root
|
|
content: |
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
# --- Non-interactive install knobs --------------------------------------
|
|
export XUI_NONINTERACTIVE=1
|
|
# SSL mode: none (plain HTTP, default) | ip | domain
|
|
export XUI_SSL_MODE="${XUI_SSL_MODE:-none}"
|
|
# Pin credentials instead of random (leave unset for secure random values):
|
|
# export XUI_USERNAME="admin2"
|
|
# export XUI_PASSWORD="change-me-please"
|
|
# export XUI_PANEL_PORT="2053"
|
|
# export XUI_WEB_BASE_PATH="panel"
|
|
# Let's Encrypt domain certificate instead of plain HTTP:
|
|
# export XUI_SSL_MODE="domain"
|
|
# export XUI_DOMAIN="panel.example.com"
|
|
# export XUI_ACME_EMAIL="you@example.com"
|
|
# PostgreSQL instead of SQLite:
|
|
# export XUI_DB_TYPE="postgres"
|
|
# export XUI_DB_DSN="postgres://user:pass@host:5432/db?sslmode=disable"
|
|
# ------------------------------------------------------------------------
|
|
|
|
curl -fsSL https://git.881218.xyz/rogue/3x-ui-agent/raw/branch/main/install-master.sh | bash
|
|
|
|
# Surface the generated credentials. Full creds (incl. password + API token)
|
|
# go ONLY to the serial console (/dev/console, owner-only). /etc/motd is
|
|
# world-readable, so it gets just the access URL + username and a pointer
|
|
# to the root-only env file.
|
|
if [ -r /etc/x-ui/install-result.env ]; then
|
|
{
|
|
echo
|
|
echo "=== 3x-ui panel credentials (generated on first boot) ==="
|
|
cat /etc/x-ui/install-result.env
|
|
echo "========================================================"
|
|
echo "Change the password after first login."
|
|
} > /dev/console 2>/dev/null || true
|
|
|
|
# shellcheck disable=SC1091
|
|
. /etc/x-ui/install-result.env
|
|
{
|
|
echo
|
|
echo "=== 3x-ui panel (generated on first boot) ==="
|
|
echo "URL: ${XUI_ACCESS_URL:-unknown}"
|
|
echo "Username: ${XUI_USERNAME:-unknown}"
|
|
echo "Password + API token: sudo cat /etc/x-ui/install-result.env"
|
|
echo "============================================="
|
|
echo "Change the password after first login."
|
|
} >> /etc/motd 2>/dev/null || true
|
|
fi
|
|
|
|
runcmd:
|
|
- [bash, /opt/xui-bootstrap.sh]
|
|
|
|
final_message: "3x-ui installed — full credentials in /etc/x-ui/install-result.env (sudo); /etc/motd shows the URL + username only."
|