74 lines
2.1 KiB
Bash
74 lines
2.1 KiB
Bash
#!/bin/bash
|
||
set -e
|
||
|
||
INSTALL_DIR="/opt/lan-manager"
|
||
SERVICE_NAME="lan-manager"
|
||
USER_NAME="lanmgr"
|
||
|
||
echo "=== LAN Manager Debian 12 安装脚本 ==="
|
||
|
||
# 1. 检查 root 权限
|
||
if [ "$EUID" -ne 0 ]; then
|
||
echo "请使用 root 权限运行:sudo bash install.sh"
|
||
exit 1
|
||
fi
|
||
|
||
# 2. 创建用户(如果不存在)
|
||
if ! id "$USER_NAME" &>/dev/null; then
|
||
echo "[1/7] 创建运行用户 $USER_NAME ..."
|
||
useradd --system --no-create-home --shell /usr/sbin/nologin "$USER_NAME"
|
||
else
|
||
echo "[1/7] 用户 $USER_NAME 已存在,跳过"
|
||
fi
|
||
|
||
# 3. 停止服务(如果正在运行)以便覆盖二进制
|
||
echo "[2/7] 停止现有服务(如果正在运行)..."
|
||
if systemctl is-active --quiet "$SERVICE_NAME" 2>/dev/null; then
|
||
systemctl stop "$SERVICE_NAME"
|
||
sleep 1
|
||
fi
|
||
|
||
# 4. 复制程序文件
|
||
echo "[3/7] 复制程序文件到 $INSTALL_DIR ..."
|
||
mkdir -p "$INSTALL_DIR"
|
||
cp lan-manager "$INSTALL_DIR/"
|
||
cp lan-manager.env "$INSTALL_DIR/"
|
||
|
||
# 5. 创建数据目录并授权
|
||
echo "[4/7] 创建数据目录 ..."
|
||
mkdir -p "$INSTALL_DIR/data"
|
||
chown -R "$USER_NAME:$USER_NAME" "$INSTALL_DIR"
|
||
chmod +x "$INSTALL_DIR/lan-manager"
|
||
|
||
# 6. 安装 systemd 服务
|
||
echo "[5/7] 安装 systemd 服务 ..."
|
||
cp lan-manager.service /etc/systemd/system/
|
||
chmod 644 /etc/systemd/system/lan-manager.service
|
||
systemctl daemon-reload
|
||
|
||
# 7. 启动并设置开机自启
|
||
echo "[6/7] 启动服务并设置开机自启 ..."
|
||
systemctl enable --now lan-manager
|
||
|
||
# 8. 检查状态
|
||
echo "[7/7] 检查服务状态 ..."
|
||
sleep 2
|
||
if systemctl is-active --quiet lan-manager; then
|
||
echo "✅ 服务已正常启动"
|
||
else
|
||
echo "❌ 服务启动失败,请查看日志:journalctl -u lan-manager -n 50"
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
echo "=== 安装完成 ==="
|
||
echo "访问地址: http://$(hostname -I | awk '{print $1}'):8080"
|
||
echo ""
|
||
echo "⚠️ 重要提示:"
|
||
echo " 1. 默认管理员账号: admin / changeme"
|
||
echo " 2. 请务必修改 $INSTALL_DIR/lan-manager.env 中的 ADMIN_PASS 和 SESSION_SECRET"
|
||
echo " 3. 修改配置后执行: systemctl restart lan-manager"
|
||
echo " 4. 查看日志: journalctl -u lan-manager -f"
|
||
echo " 5. 如需开放防火墙端口: ufw allow 8080/tcp"
|
||
echo ""
|