DXP4800群晖小记
黑群晖安装步骤略,引导盘+ 关闭内置 EMMC 网上教程比较多,不过多赘述,安装参考
```
绿联nas 关闭watchdog 及修改启动方式教程
[https://post.smzdm.com/p/a3xnev8n/](https://post.smzdm.com/p/a3xnev8n/)
绿联黑群晖
[https://post.smzdm.com/p/a07nw4zr/](https://post.smzdm.com/p/a07nw4zr/)
黑群晖安装教程
[https://post.smzdm.com/p/akk9vpkr/](https://post.smzdm.com/p/akk9vpkr/)
2024 年就 10 月黑群晖 nas 教程
[https://www.bilibili.com/video/BV1XN2QYWEAi](https://www.bilibili.com/video/BV1XN2QYWEAi)
```
## 已解决
1. 解决视频HEIC不能播放问题,需要安装 AME 套件并激活,参见 https://post.smzdm.com/p/a7pw05r9/
2. 更新小红点问题: 更改/etc/host,增加127.0.0.1 update.synology.com(未解决,后续再做)
3. MOV 视频封面不显示问题,升级ffmpeg 套件,从 4 升级到 6 后重建索引解决 ,参见 https://blog.csdn.net/qq_44726883/article/details/140429626
4. 硬盘灯闪烁问题,不影响使用,故暂不解决,参见
```
https://www.langog.com/?p=0f263caf-d8a0-4627-b458-7f1df146b88a
https://github.com/miskcoo/ugreen_leds_controller
```
5. 群晖信息显示监控 ,ssh 安装 sensors 插件即可,[https://post.smzdm.com/p/a8xze450/](https://post.smzdm.com/p/a8xze450/),后期使用hertzbeat 统一监控(11 月 1 日解决问题 3 后,重建索引时,发现 cpu 温度跟面板温度似乎一样
6. 风扇问题,风扇无法自定义调节转速,暂时直接拉风速到 100 参见连接
7. 外网访问,zerotier 已打通内外网访问,自建 planet 来搞定外网访问问题
8. 公网 ip v4 已开通,ddns-go + 端口转发 + Let’s Encrypt 完成整个网络搭建
9. 软件问题,主要设备平台为Android + mac 常用软件下载参考[https://www.synology.cn/zh-cn/support/download?version=7.2#utilities](https://www.synology.cn/zh-cn/support/download?version=7.2#utilities)
10. nas 内置docker 容器跑
1. immich作为群晖相册补充 (因群晖相册已足够,暂时不用)
2. jellyfin
11. 2015mac docker容器
1. heatzbeat 做为整个局域网的监控
2. alist 挂百度网盘,夸克网盘,阿里云网盘
3. gitlab
4. gitlab-runner
经过一系列折腾之后,目前公网访问已经无问题,如果 ddns 挂了,也有自建 zerotier 能作为补充使用,后续考虑加一个 UPS 及两条 512 的 SSD 组 raid1 作为 docker 及虚拟机盘
## 待办
1. 因使用内置ddns 时出现过梅林固件上的 clash 规则问题,导致 ddns 出现错误的 ip(实际为代理的 ip),后续考虑增加一个软路由 (新版 Merlin Clash已支持自定义规则,可以在访问 api.cloudflare.com 时不使用代理)
2. 公网 ipv4 访问不是很安全,考虑后续将 ddns 迁移到群晖中,直接开ipv6 访问
3. 群晖链路聚合开启 (RAX50 不支持链路聚合,lan 口只能到千兆,跑不满绿联 2.5G 带宽)
4. 时间机器构建
5. mac 常用文件自动备份到群晖任务构建
6. 冷备份任务构建
7. 2015mac docker容器配置及配置文件备份
8. 7 中的关键任务自动同步到群晖防丢失
9. 考虑将此次黑裙关键步骤细化,落为文档,防丢失
10. 风扇自动调速脚本配置,目前弄了个简版,后续再配置和优化
## 风扇转速脚本(待测试)
保存为 fan_control.sh,然后执行脚本
chmod +x fan_control.sh
sudo ./fan_control.sh
```
#!/bin/bash
FAN_CONTROL="/sys/devices/platform/it87.2608/hwmon/hwmon2/pwm3"
# 检查必要的命令是否存在
command -v sensors >/dev/null 2>&1 || { echo "需要安装 lm-sensors,请先运行: apt-get install lm-sensors"; exit 1; }
command -v bc >/dev/null 2>&1 || { echo "需要安装 bc,请先运行: apt-get install bc"; exit 1; }
# 检查文件权限和路径
if [ ! -w "$FAN_CONTROL" ]; then
echo "错误: 无法写入风扇控制文件 $FAN_CONTROL"
echo "请确保以root权限运行此脚本"
exit 1
fi
# 检查风扇控制模式设置是否成功
if ! echo 1 > /sys/devices/platform/it87.2608/hwmon/hwmon2/pwm3_enable; then
echo "错误: 无法设置风扇控制模式"
exit 1
fi
# 初始化变量
declare -a temp_history=()
current_pwm=85
NORMAL_INTERVAL=15
HIGH_TEMP_INTERVAL=5
TEMP_THRESHOLD=45
MIN_PWM=55
MAX_PWM=255
LOG_FILE="/var/log/fan_control.log"
# 创建日志文件(如果不存在)
touch "$LOG_FILE" 2>/dev/null || { echo "错误: 无法创建日志文件"; exit 1; }
# 温度读取函数
get_temp() {
local temp
temp=$(sensors | grep "Package id 0:" | awk '{print $4}' | tr -d '+°C')
# 检查温度读取是否成功
if [[ ! $temp =~ ^[0-9]+(.[0-9]+)?$ ]]; then
echo "错误: 无法正确读取温度" >> "$LOG_FILE"
return 1
fi
# 检查温度是否在合理范围内 (-20到100度)
if (( $(echo "$temp < -20 || $temp > 100" | bc -l) )); then
echo "警告: 温度读数异常: ${temp}°C" >> "$LOG_FILE"
return 1
fi
echo "$temp"
return 0
}
# 设置风扇转速函数
set_fan_speed() {
local pwm=$1
# 确保PWM值在有效范围内
if [ $pwm -lt $MIN_PWM ]; then
pwm=$MIN_PWM
elif [ $pwm -gt $MAX_PWM ]; then
pwm=$MAX_PWM
fi
# 尝试设置风扇转速
if ! echo $pwm > "$FAN_CONTROL"; then
echo "错误: 设置风扇转速失败: $pwm" >> "$LOG_FILE"
return 1
fi
return 0
}
# 主循环
while true; do
# 获取CPU温度
TEMP=$(get_temp)
if [ $? -ne 0 ]; then
# 温度读取失败,使用保守的风扇设置
echo "警告: 温度读取失败,使用默认风扇设置" >> "$LOG_FILE"
set_fan_speed 150
sleep $NORMAL_INTERVAL
continue
fi
# 根据温度设置检测间隔
if (( $(echo "$TEMP >= $TEMP_THRESHOLD" | bc -l) )); then
sleep_interval=$HIGH_TEMP_INTERVAL
else
sleep_interval=$NORMAL_INTERVAL
fi
# 设置目标风扇转速
if (( $(echo "$TEMP < 30" | bc -l) )); then
target_pwm=$MIN_PWM
elif (( $(echo "$TEMP >= 30 && $TEMP < 35" | bc -l) )); then
target_pwm=85
elif (( $(echo "$TEMP >= 35 && $TEMP < 40" | bc -l) )); then
target_pwm=120
elif (( $(echo "$TEMP >= 40 && $TEMP < 45" | bc -l) )); then
target_pwm=150
elif (( $(echo "$TEMP >= 45 && $TEMP < 50" | bc -l) )); then
target_pwm=180
elif (( $(echo "$TEMP >= 50 && $TEMP < 55" | bc -l) )); then
target_pwm=200
elif (( $(echo "$TEMP >= 55 && $TEMP < 60" | bc -l) )); then
target_pwm=225
else
target_pwm=$MAX_PWM
fi
# 平滑过渡
if [ $target_pwm -gt $current_pwm ]; then
current_pwm=$(( current_pwm + 8 ))
elif [ $target_pwm -lt $current_pwm ]; then
current_pwm=$(( current_pwm - 3 ))
fi
# 确保PWM值在有效范围内并设置风扇转速
if ! set_fan_speed $current_pwm; then
echo "错误: 风扇控制失败,等待下次尝试" >> "$LOG_FILE"
sleep $NORMAL_INTERVAL
continue
fi
# 记录日志,同时检查日志文件大小
log_size=$(stat -f %z "$LOG_FILE" 2>/dev/null || echo 0)
if [ $log_size -gt 10485760 ]; then # 10MB
mv "$LOG_FILE" "${LOG_FILE}.old"
touch "$LOG_FILE"
fi
echo "$(date '+%Y-%m-%d %H:%M:%S') - Temp: ${TEMP}°C, PWM: ${current_pwm}, Interval: ${sleep_interval}s" >> "$LOG_FILE"
# 使用trap捕获信号
trap 'echo "收到终止信号,设置风扇为默认值并退出..."; set_fan_speed 150; exit 0' SIGTERM SIGINT
sleep $sleep_interval
done
```
岚岚的鱼
校验提示文案
xiaofengli
校验提示文案
雨群
校验提示文案
carlos_f
校验提示文案
Moti
校验提示文案
carlos_f
校验提示文案
Moti
校验提示文案
雨群
校验提示文案
xiaofengli
校验提示文案
岚岚的鱼
校验提示文案