Skip to content

Commit c7dad3a

Browse files
committed
2 parents 807604c + 42a2913 commit c7dad3a

3 files changed

Lines changed: 78 additions & 26 deletions

File tree

docker-compose.yml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ services:
124124
- "MODBUS_MQTT_QOS=0"
125125
- "MODBUS_EXCEPTION_REPORT_ENABLED=true"
126126
networks:
127-
thingspanel_network:
128-
ipv4_address: 172.20.0.10
127+
- thingspanel_network
129128
depends_on:
130129
- backend
131130
- gmqtt
@@ -143,8 +142,7 @@ services:
143142
- "P_PLATFORM_URL=http://backend:9999"
144143
- "P_PLATFORM_MQTT_BROKER=tcp://gmqtt:1883"
145144
networks:
146-
thingspanel_network:
147-
ipv4_address: 172.20.0.11
145+
- thingspanel_network
148146
depends_on:
149147
- backend
150148
- gmqtt
@@ -205,8 +203,3 @@ volumes:
205203
networks:
206204
thingspanel_network:
207205
driver: bridge
208-
ipam:
209-
driver: default
210-
config:
211-
- subnet: 172.20.0.0/16
212-
gateway: 172.20.0.1

index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<div class="max-w-7xl mx-auto px-4 py-16">
3434
<div class="text-center mb-16 animate-fade-in-up">
3535
<h2 id="main-title" class="text-4xl md:text-5xl text-gray-900 font-extrabold mb-6 tracking-tight">Deploy Enterprise IoT Platform</h2>
36-
<p id="main-subtitle" class="text-xl text-gray-500 font-medium">Select your operating system for an automated and secure installation experience.</p>
36+
<p id="main-subtitle" class="text-xl text-gray-500 font-medium">Choose your system and install ThingsPanel on your computer or server in minutes.</p>
3737
</div>
3838

3939
<!-- 3 Columns Grid -->
@@ -134,7 +134,7 @@ <h3 class="text-2xl font-bold text-center mb-3">macOS</h3>
134134
en: {
135135
langBtn: "中文",
136136
title: "Deploy Enterprise IoT Platform",
137-
subtitle: "Select your operating system for an automated and secure installation experience.",
137+
subtitle: "Choose your system and install ThingsPanel on your computer or server in minutes.",
138138
badge: "SERVER",
139139
linuxDesc: "Supports CentOS, Ubuntu, Debian and macOS via SSH.",
140140
cmdHint: "Run the following command:",
@@ -149,7 +149,7 @@ <h3 class="text-2xl font-bold text-center mb-3">macOS</h3>
149149
zh: {
150150
langBtn: "English",
151151
title: "一键部署企业级 IoT 平台",
152-
subtitle: "选择您的操作系统,获取安全、自动化、全封装的安装体验。",
152+
subtitle: "选择你的系统,几分钟内把 ThingsPanel 安装到电脑或服务器上。",
153153
badge: "推荐 (服务器)",
154154
linuxDesc: "支持 CentOS, Ubuntu, Debian 及通过 SSH 访问的 macOS。",
155155
cmdHint: "执行该命令一键部署:",

install.bash

Lines changed: 73 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ HTTP_PORT="${HTTP_PORT:-8080}"
1818
MQTT_PORT="${MQTT_PORT:-1883}"
1919
MIN_DOCKER_VERSION="20.10"
2020
MIN_COMPOSE_VERSION="2.0"
21+
SUDO_CMD=""
2122

2223
# ── 颜色输出 ──────────────────────────────────────────────────────────────────
2324
RED='\033[0;31m'; YELLOW='\033[1;33m'; GREEN='\033[0;32m'
@@ -36,6 +37,74 @@ version_gte() {
3637
printf '%s\n%s\n' "$2" "$1" | sort -V -C
3738
}
3839

40+
run_privileged() {
41+
if [ -n "$SUDO_CMD" ]; then
42+
"$SUDO_CMD" "$@"
43+
else
44+
"$@"
45+
fi
46+
}
47+
48+
ensure_install_dir_access() {
49+
step "检查安装目录权限"
50+
51+
if [ "$(id -u)" -eq 0 ]; then
52+
success "当前用户可写入 $INSTALL_DIR"
53+
return
54+
fi
55+
56+
if [ -d "$INSTALL_DIR" ] && [ -w "$INSTALL_DIR" ]; then
57+
success "当前用户可写入 $INSTALL_DIR"
58+
return
59+
fi
60+
61+
local parent_dir
62+
parent_dir="$INSTALL_DIR"
63+
while [ ! -d "$parent_dir" ]; do
64+
local next_parent
65+
next_parent="$(dirname "$parent_dir")"
66+
if [ "$next_parent" = "$parent_dir" ]; then
67+
break
68+
fi
69+
parent_dir="$next_parent"
70+
done
71+
72+
if [ ! -d "$INSTALL_DIR" ] && [ -d "$parent_dir" ] && [ -w "$parent_dir" ]; then
73+
success "当前用户可创建 $INSTALL_DIR"
74+
return
75+
fi
76+
77+
if ! command_exists sudo; then
78+
error "当前用户没有权限写入 ${INSTALL_DIR},且未找到 sudo。请使用有权限的用户运行,或设置 INSTALL_DIR 到可写目录。"
79+
fi
80+
81+
SUDO_CMD="sudo"
82+
info "${INSTALL_DIR} 需要管理员权限,接下来会通过 sudo 创建和写入安装文件。"
83+
run_privileged -v || error "无法获取 sudo 权限,安装已停止"
84+
success "已获得安装目录写入权限"
85+
}
86+
87+
download_file() {
88+
local url="$1"
89+
local target="$2"
90+
local mode="$3"
91+
local tmp_file
92+
93+
tmp_file="$(mktemp "${TMPDIR:-/tmp}/thingspanel.XXXXXX")"
94+
95+
if command_exists curl; then
96+
curl -fsSL "$url" -o "$tmp_file"
97+
elif command_exists wget; then
98+
wget -qO "$tmp_file" "$url"
99+
else
100+
rm -f "$tmp_file"
101+
error "未找到 curl 或 wget,无法下载安装文件"
102+
fi
103+
104+
run_privileged install -m "$mode" "$tmp_file" "$target"
105+
rm -f "$tmp_file"
106+
}
107+
39108
# ── Banner ────────────────────────────────────────────────────────────────────
40109
print_banner() {
41110
echo -e "${BOLD}"
@@ -142,7 +211,7 @@ resolve_version() {
142211
# ── 创建目录结构 ───────────────────────────────────────────────────────────────
143212
setup_directories() {
144213
step "创建目录结构"
145-
mkdir -p "$INSTALL_DIR"
214+
run_privileged mkdir -p "$INSTALL_DIR"
146215
success "目录: $INSTALL_DIR"
147216
}
148217

@@ -151,26 +220,15 @@ download_docker_compose() {
151220
step "下载 docker-compose.yml"
152221
local compose_url="${RAW_BASE}/docker-compose.yml"
153222

154-
if command_exists curl; then
155-
curl -fsSL "$compose_url" -o "${INSTALL_DIR}/docker-compose.yml"
156-
elif command_exists wget; then
157-
wget -qO "${INSTALL_DIR}/docker-compose.yml" "$compose_url"
158-
else
159-
error "未找到 curl 或 wget,无法下载配置文件"
160-
fi
223+
download_file "$compose_url" "${INSTALL_DIR}/docker-compose.yml" "0644"
161224
success "配置文件已下载到 $INSTALL_DIR"
162225
}
163226

164227
# ── 下载管理脚本 ────────────────────────────────────────────────────────────────
165228
download_management_scripts() {
166229
step "下载管理脚本"
167230
for script in upgrade.sh uninstall.sh; do
168-
if command_exists curl; then
169-
curl -fsSL "${RAW_BASE}/${script}" -o "${INSTALL_DIR}/${script}"
170-
else
171-
wget -qO "${INSTALL_DIR}/${script}" "${RAW_BASE}/${script}"
172-
fi
173-
chmod +x "${INSTALL_DIR}/${script}"
231+
download_file "${RAW_BASE}/${script}" "${INSTALL_DIR}/${script}" "0755"
174232
done
175233
success "管理脚本已就绪"
176234
}
@@ -255,6 +313,7 @@ main() {
255313
check_ports
256314
check_memory
257315
resolve_version
316+
ensure_install_dir_access
258317
setup_directories
259318
download_docker_compose
260319
download_management_scripts

0 commit comments

Comments
 (0)