mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-29 09:01:54 +08:00
一些更新
玩客云首次启动生成随机 mac 地址 #113 自签 SSL 证书修改为首次启动时生成,增强安全性 优化整合包镜像构建脚本和 Dockerfile 修复 docker 启动脚本错误
This commit is contained in:
64
build/scripts/generate-random-mac.sh
Normal file
64
build/scripts/generate-random-mac.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 为onecloud平台生成随机MAC地址的一次性脚本
|
||||
# 此脚本在首次开机时执行,为eth0网卡生成并应用随机MAC地址
|
||||
|
||||
set -e
|
||||
|
||||
NETWORK_CONFIG="/etc/systemd/network/99-eth0.network"
|
||||
LOCK_FILE="/var/lib/kvmd/.mac-generated"
|
||||
|
||||
# 检查是否已经执行过
|
||||
if [ -f "$LOCK_FILE" ]; then
|
||||
echo "MAC地址已经生成过,跳过执行"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 生成随机MAC地址 (使用本地管理的MAC地址前缀)
|
||||
generate_random_mac() {
|
||||
# 使用本地管理的MAC地址前缀 (第二位设为2、6、A、E中的一个)
|
||||
# 这样可以避免与真实硬件MAC地址冲突
|
||||
printf "02:%02x:%02x:%02x:%02x:%02x\n" \
|
||||
$((RANDOM % 256)) \
|
||||
$((RANDOM % 256)) \
|
||||
$((RANDOM % 256)) \
|
||||
$((RANDOM % 256)) \
|
||||
$((RANDOM % 256))
|
||||
}
|
||||
|
||||
echo "正在为onecloud生成随机MAC地址..."
|
||||
|
||||
# 生成新的MAC地址
|
||||
NEW_MAC=$(generate_random_mac)
|
||||
echo "生成的MAC地址: $NEW_MAC"
|
||||
|
||||
# 备份原配置文件
|
||||
if [ -f "$NETWORK_CONFIG" ]; then
|
||||
cp "$NETWORK_CONFIG" "${NETWORK_CONFIG}.backup"
|
||||
fi
|
||||
|
||||
# 更新网络配置文件
|
||||
cat > "$NETWORK_CONFIG" << EOF
|
||||
[Match]
|
||||
Name=eth0
|
||||
|
||||
[Network]
|
||||
DHCP=yes
|
||||
|
||||
[Link]
|
||||
MACAddress=$NEW_MAC
|
||||
EOF
|
||||
|
||||
echo "已更新网络配置文件: $NETWORK_CONFIG"
|
||||
|
||||
# 创建锁定文件,防止重复执行
|
||||
mkdir -p "$(dirname "$LOCK_FILE")"
|
||||
echo "MAC地址生成时间: $(date)" > "$LOCK_FILE"
|
||||
|
||||
# 禁用此服务,确保只运行一次
|
||||
systemctl disable kvmd-generate-mac.service
|
||||
|
||||
echo "随机MAC地址生成完成: $NEW_MAC"
|
||||
echo "服务已自动禁用,下次开机不会再执行"
|
||||
|
||||
exit 0
|
||||
34
build/scripts/kvmd-firstrun.sh
Normal file
34
build/scripts/kvmd-firstrun.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# KVMD首次运行初始化脚本
|
||||
# 在首次开机时执行KVMD服务启动前的必要初始化操作
|
||||
|
||||
set -e
|
||||
|
||||
LOCK_FILE="/var/lib/kvmd/.kvmd-firstrun-completed"
|
||||
|
||||
# 检查是否已经执行过
|
||||
[ -f "$LOCK_FILE" ] && { echo "[KVMD-FirstRun] 初始化已完成,跳过执行"; exit 0; }
|
||||
|
||||
echo "[KVMD-FirstRun] 开始KVMD首次运行初始化..."
|
||||
|
||||
# 1. 生成KVMD主证书
|
||||
echo "[KVMD-FirstRun] 生成KVMD主证书..."
|
||||
kvmd-gencert --do-the-thing
|
||||
|
||||
# 2. 生成VNC证书
|
||||
echo "[KVMD-FirstRun] 生成VNC证书..."
|
||||
kvmd-gencert --do-the-thing --vnc
|
||||
|
||||
# 3. 生成nginx配置文件
|
||||
echo "[KVMD-FirstRun] 生成nginx配置文件..."
|
||||
kvmd-nginx-mkconf /etc/kvmd/nginx/nginx.conf.mako /etc/kvmd/nginx/nginx.conf || echo "[KVMD-FirstRun] 警告: nginx配置生成失败"
|
||||
|
||||
# 创建锁定文件
|
||||
mkdir -p "$(dirname "$LOCK_FILE")"
|
||||
echo "KVMD首次运行初始化完成 - $(date)" > "$LOCK_FILE"
|
||||
|
||||
# 禁用服务
|
||||
systemctl disable kvmd-firstrun.service || echo "[KVMD-FirstRun] 警告: 服务禁用失败"
|
||||
|
||||
echo "[KVMD-FirstRun] 初始化完成!"
|
||||
Reference in New Issue
Block a user