Skip to content

脚本介绍

本文档详细介绍 DebNAS 自动化脚本的所有功能模块,既是功能说明,也是使用手册。脚本采用模块化设计,每个功能均可独立运行,支持多选批量执行。

💡 快速索引:如需快速查找功能,请查看 项目概览 文档。


使用说明

基本特性

  • 模块化设计:每个功能模块均可独立运行,互不依赖
  • 批量执行:支持多选批量执行,提高配置效率
  • 交互式操作:提供友好的交互界面,操作简单直观
  • 自动依赖处理:自动检测并安装缺失的依赖工具

推荐使用流程

  • 新手用户:建议使用「七、一键部署」功能,快速完成环境配置
  • 进阶用户:可根据需求选择「一、基础配置」→「二、管理面板」→「五、容器管理」的顺序逐步配置
  • 安全优先:建议配置「三、通知服务」和「四、安全防护」模块,提升系统安全性

功能详情

一、基础配置

1.1、配置软件源

功能说明:使用 chsrc 工具进行软件源管理,支持 Debian 12/13 系统。自动将旧版 sources.list 转换为 DEB822 格式(/etc/apt/sources.list.d/debian.sources)。

使用方式

  • 测速换源:自动测速并切换至最快的镜像源(推荐)
  • 自选镜像源:从可用镜像源列表中选择指定镜像源
  • 自定义镜像源:手动输入自定义镜像源 URL(必须包含 /debian,格式:https://镜像域名/debian

特殊模式

  • 支持无人值守模式(--auto),自动使用维护团队测速第一的镜像源,适用于一键部署场景

注意事项

  • 脚本会自动备份旧版 sources.list 文件
  • 转换后的 DEB822 格式包含 main、contrib、non-free、non-free-firmware 组件
  • 自动配置安全更新源(${CODENAME}-security

1.2、安装基础工具

功能说明:安装系统运行所需的基础软件包,并配置用户权限。

安装的软件包

  • sudo - 权限管理工具
  • curlwget - 网络下载工具
  • git - 版本控制工具
  • vim - 文本编辑器
  • exim4 - 邮件服务(用于系统通知)
  • gnupg - GPG 加密工具
  • apt-transport-httpsca-certificates - HTTPS 支持
  • smartmontools - 硬盘健康监测工具

自动配置

  • 自动将第一个创建的普通用户(UID >= 1000,排除 nobody)加入 sudo 组
  • 自动执行 apt update 更新软件包列表

使用场景:系统初始化时首先执行,为后续功能提供基础环境。

二、管理面板

2.1、安装 Cockpit

功能说明:安装 Cockpit Web 管理面板及其扩展组件,提供图形化的系统管理界面。

系统支持

  • Debian 12 (bookworm):通过 45Drives 官方软件源安装组件
  • Debian 13 (trixie):手动下载并安装 45Drives 组件(.deb 包)

安装的组件

  • 核心组件:cockpit、pcp、python3-pcp、tuned
  • 45Drives 扩展组件
    • Navigator - 文件浏览器
    • File Sharing - 文件共享管理
    • Identities - 用户身份管理

智能下载

  • 自动选择最优 GitHub 镜像源下载组件(支持多个镜像站,自动测速)
  • 支持镜像站:ghfast.top、gitproxy.click、hubproxy.jiaozi.live、gh.llkk.cc、gh-proxy.top

自动配置

  • 配置 Cockpit 首页展示信息
  • 设置自动注销闲置会话(15 分钟)
  • 配置登录界面公告
  • 获取外网访问真实 IP 地址
  • 设置登录屏幕的浏览器标题为 "HomeNAS"
  • 配置 APT Pinning,确保从 backports 仓库安装最新版本

访问方式:安装完成后,通过 https://服务器IP:9090 访问 Cockpit 管理界面。

注意事项

  • Cockpit 默认禁用 root 账户登录,建议使用普通用户账户登录
  • 首次登录建议使用系统安装时创建的第一个用户账户

2.2、安装虚拟机组件

功能说明:安装 cockpit-machines 组件,在 Cockpit 中提供虚拟机管理功能。

安装内容

  • 安装 cockpit-machines 组件(虚拟机管理组件)
  • 启用 IP 包转发功能(net.ipv4.ip_forward = 1),解决虚拟机 IP 分配问题
  • 自动配置 APT Pinning(如未配置)
  • 自动重启 Cockpit 服务使新组件生效

使用场景:需要在 Cockpit 中管理虚拟机时使用。

注意事项

  • 需要系统支持虚拟化(CPU 支持 vmx 或 svm)
  • IP 包转发配置写入 /etc/sysctl.d/99-debnas.conf
  • 自动注释 /etc/sysctl.conf 中的重复配置项

2.3、启用外网访问

功能说明:配置 Cockpit 允许通过外网域名访问,提升远程管理便利性。

配置方式

  • 输入外网访问域名(如 baidu.combaidu.com:9090,无需包含协议前缀)
  • 脚本自动配置 Origins 参数,同时保留内网 IP 访问权限
  • 配置写入 /etc/cockpit/cockpit.conf

配置效果

  • 可通过外网域名访问:https://your-domain.com:9090
  • 可通过内网 IP 访问:https://内网IP:9090
  • 自动重启 Cockpit 服务使配置生效

使用场景:需要通过外网访问 Cockpit 管理界面时使用。

注意事项

  • 启用外网访问后,Cockpit 只能通过配置的域名和内网 IP 访问
  • 如需修改域名,可先执行「2.4、禁用外网访问」,再重新配置

2.4、禁用外网访问

功能说明:删除 Cockpit 外网访问限制,恢复为仅内网访问模式。

操作内容

  • 删除 /etc/cockpit/cockpit.conf 中的 Origins 配置
  • 删除后可通过内网任意 IP 地址访问
  • 自动重启 Cockpit 服务使配置生效

使用场景

  • 外网访问域名变更,需要重新配置时
  • 内网 IP 地址变更,导致无法访问时
  • 需要取消外网访问限制时

2.5、面板管理网络

功能说明:将系统网络管理工具切换为 NetworkManager,使 Cockpit 能够管理网络配置。

操作内容

  • 将系统网络管理工具从 network 切换为 NetworkManager
  • 注释 /etc/network/interfaces 中的配置,避免与 NetworkManager 冲突
  • 配置 NetworkManager 的 managed=true
  • 重启 NetworkManager 和 Cockpit 服务

使用场景:需要在 Cockpit 面板中管理网络配置时使用。

注意事项

  • ⚠️ 重要:更换网络管理工具可能会产生 IP 变动
  • 如更换后原 IP 无法正常访问服务,请确认是否分配了新 IP 地址
  • 建议在本地控制台或通过其他方式保持连接的情况下执行

2.6、面板必应壁纸

功能说明:配置 Cockpit 登录界面自动使用必应每日壁纸作为背景,提升界面美观度。

功能特性

  • 自动下载并应用必应每日壁纸
  • 支持自定义 Cron 表达式设置壁纸更新频率(默认每天 0 点更新)
  • 支持启用、禁用、查看定时任务功能
  • 自动生成登录页样式文件,优化视觉效果
  • 自动更新 /etc/cockpit/issue.cockpit 显示壁纸信息

使用方式

  • 启用:配置 Cron 表达式(默认 0 0 * * * 表示每天 0 点更新)
  • 禁用:移除定时任务和壁纸文件
  • 查看:查看当前配置的定时任务

技术要求

  • 需要 Cockpit 版本 >= 347
  • 自动检测 Cockpit 版本,版本过低会提示错误

注意事项

  • 首次启用时会立即下载并应用壁纸
  • 脚本会复制到 /etc/cockpit/branding/ 目录,支持定时任务自动运行

三、通知服务

3.1、配置邮件账户

功能说明:配置 exim4 邮件服务,使系统能够发送邮件通知。

邮箱要求

配置内容

  • 配置 SMTP 服务器:smtp.qq.com:587
  • 设置系统通知接收邮箱地址(用于接收系统告警邮件)
  • 配置 exim4 为 satellite 模式
  • 自动发送测试邮件验证配置是否成功

配置文件位置

  • /etc/exim4/update-exim4.conf.conf - exim4 主配置
  • /etc/exim4/passwd.client - SMTP 认证信息
  • /etc/email-addresses - 系统邮件地址映射
  • /etc/exim4/notify_email - 通知接收邮箱地址

使用场景:需要接收系统告警、登录通知等邮件时,必须先配置此功能。

注意事项

  • 授权密码不是 QQ 邮箱登录密码,需要在 QQ 邮箱设置中单独生成
  • 配置完成后会自动发送测试邮件,请检查接收邮箱

3.2、启用登录通知

功能说明:实现系统用户登录时自动发送邮件告警通知,及时发现异常登录行为。

工作原理

  • 通过 PAM 脚本(/etc/pam.d/login-notify.sh)在用户登录时自动触发
  • 集成到 /etc/pam.d/common-session,支持 SSH、Cockpit 等所有登录方式

邮件内容

  • 用户信息:登录用户名
  • 来源信息:来源 IP 地址、地理位置(自动识别)
  • 系统信息:主机名、登录时间、服务类型、终端类型
  • 处置指引:提供锁定账户、断开连接、查看登录记录等操作建议
  • Trace ID:8 位追踪 ID,便于问题定位

地理位置识别

  • 自动识别本地登录(127.0.0.1、localhost)
  • 自动识别局域网登录(192.168.x.x、10.x.x.x、172.16-31.x.x)
  • 外网登录自动通过 IP-API 获取地理位置信息(国家、城市)

使用场景

  • 安全监控:及时发现异常登录行为
  • 访问审计:记录所有用户登录活动
  • 账户安全:快速响应账户泄漏事件

前置条件:必须先执行「3.1、配置邮件账户」功能。

注意事项

  • 登录通知脚本需要 curl 工具获取地理位置信息(如未安装会自动降级处理)
  • 邮件发送失败不会影响用户登录(使用 || true 确保脚本不中断登录流程)

3.3、禁用登录通知

功能说明:移除登录邮件通知功能,停止发送登录告警邮件。

操作内容

  • /etc/pam.d/common-session 中移除登录通知配置
  • 删除登录通知脚本文件 /etc/pam.d/login-notify.sh

使用场景:不再需要登录通知功能时使用。

四、安全防护

4.1、基础安全配置

功能说明:配置系统基础安全策略,包括权限限制、会话管理和操作审计。

安全策略

  1. 限制 su 命令

    • 限制非 sudo 组用户使用 su 命令切换到 root 用户
    • 配置位置:/etc/pam.d/su
    • 只有 sudo 组成员才能使用 su 命令
  2. 超时自动注销

    • 设置 15 分钟无操作自动退出登录(TMOUT=900)
    • 配置位置:/etc/profile
    • 适用于所有用户会话
  3. 操作日志记录

    • 记录所有用户的登录和操作日志到 /var/log/history/ 目录
    • 每个用户有独立的日志目录:/var/log/history/${LOGNAME}/
    • 日志文件命名格式:${USER}@${USER_IP}_${时间戳}
    • 目录权限:1733(sticky bit,所有用户可写,防止互删)
  4. 命令历史增强

    • 启用命令历史时间戳(HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S ")
    • 设置命令历史大小为 4096

使用场景:系统安全加固,提升系统安全性和可审计性。

注意事项

  • 操作日志目录会自动创建,权限设置为 1733
  • 日志文件包含用户 IP 地址,便于追踪操作来源

4.2、安装 Firewalld

功能说明:安装并配置 firewalld 防火墙服务,提供网络访问控制。

安装内容

  • 安装 firewalld 防火墙服务
  • 自动禁用 UFW 防火墙(如存在),避免冲突
  • 配置默认放行端口

默认放行端口

  • 22 - SSH 服务
  • 546 - dhcpv6-client 服务
  • 9090 - Cockpit 管理面板

管理方式

  • 可通过 Cockpit 面板网络选项手动添加其他端口
  • 支持通过命令行 firewall-cmd 管理

配置文件

  • /etc/firewalld/zones/public.xml - 公共区域配置

使用场景:需要控制网络访问,防止未授权访问时使用。

注意事项

  • ⚠️ 重要:安装防火墙后需重启系统以确保服务正常
  • 安装完成后,firewalld 服务会停止,需要手动启动或重启系统
  • 可通过 systemctl status firewalld 查看服务状态

4.3、安装 Fail2ban

功能说明:安装并配置 Fail2ban 防暴力攻击服务,自动封禁恶意 IP。

防护机制

  • 触发条件:登录失败 5 次
  • 封禁时长:1 小时
  • 防护服务:SSH、Cockpit(通过 pam-generic)

告警通知

  • 自动读取邮件配置(/etc/exim4/notify_email),发送告警通知
  • 告警邮件包含:
    • 被攻击服务名称
    • 主机信息(主机名、外网 IP)
    • 攻击者 IP 地址
    • 攻击次数
    • 攻击者 IP 详细信息(通过 API 获取)

封禁方式

  • 使用 firewallcmd-ipset 作为封禁动作(适配 Firewalld)
  • 通过 Firewalld 的 ipset 功能实现 IP 封禁

配置文件

  • /etc/fail2ban/jail.local - 主配置文件
  • /etc/fail2ban/action.d/mail-whois.local - 邮件告警配置
  • /etc/fail2ban/jail.d/defaults-debian.conf - PAM 通用配置

使用场景:需要防止暴力破解攻击时使用。

前置条件

  • 建议先配置「4.2、安装 Firewalld」(Fail2ban 使用 Firewalld 进行封禁)
  • 建议先配置「3.1、配置邮件账户」(用于接收告警邮件)

注意事项

  • Fail2ban 使用 systemd 作为后端(backend = systemd)
  • 默认忽略本地 IP(127.0.0.1/8、::1),避免误封

4.4、IP 封禁工具

功能说明:安装并配置基于 IPThreat 威胁情报的 IP 封禁工具,自动封禁已知威胁 IP。

功能特性

  • 基于 IPThreat 威胁情报数据库,自动获取威胁 IP 列表
  • 支持自动更新威胁 IP 列表,通过 Firewalld 实现 IP 封禁
  • 支持 IPv4 和 IPv6 封禁
  • 自动管理 ipset 集合,支持大量 IP 地址封禁(最多 65536 个 IP)

配置选项

  • 威胁等级:可配置威胁等级(默认 50,范围 0-100)
  • 更新频率:可配置更新频率(默认每天 0、6、12、18 点更新)
  • 封禁区域:使用 Firewalld 的 drop 区域进行封禁

工作流程

  1. 从 IPThreat 下载威胁 IP 列表(根据威胁等级)
  2. 验证 IP 地址有效性
  3. 处理 IP 范围和 CIDR 格式
  4. 通过 Firewalld 的 ipset 功能封禁 IP
  5. 自动创建定时任务,定期更新威胁列表

配置文件

  • /etc/firewalld/ipthreat/ipthreat.conf - 主配置文件
  • /etc/firewalld/ipthreat/firewalld_ipthreat.sh - 更新脚本
  • /var/log/firewalld_ipthreat.log - 操作日志

使用场景:需要主动防护,封禁已知威胁 IP 时使用。

前置条件:必须先安装 Firewalld(「4.2、安装 Firewalld」)。

注意事项

  • 威胁等级数值越高,筛选越严格,最终封禁的 IP 数量越少;数值越低,策略越宽松,封禁的 IP 数量越多
  • 首次运行会下载并封禁威胁 IP,可能需要一些时间
  • 支持手动执行更新脚本:/etc/firewalld/ipthreat/firewalld_ipthreat.sh

五、容器管理

5.1、安装 Docker

功能说明:安装 Docker CE 社区版及相关组件,提供容器运行环境。

智能镜像源选择

  • 自动检测系统配置的镜像源,优先使用系统镜像源
  • 如果系统使用 Debian 官方源,则使用 Docker 官方源
  • 如果系统使用国内镜像源,则尝试使用对应的 Docker 镜像源
  • 支持多个备用镜像源(清华大学、中科大、阿里云、腾讯云、华为云)
  • 自动测试镜像源可用性,选择最优镜像源

安装的组件

  • docker-ce - Docker 社区版引擎
  • docker-ce-cli - Docker 命令行工具
  • containerd.io - 容器运行时
  • docker-buildx-plugin - 构建扩展插件
  • docker-compose-plugin - Docker Compose 插件

自动配置

  • 自动将第一个创建的普通用户(UID >= 1000)加入 docker 组
  • 自动启动 Docker 服务并设置为开机自启

系统要求

  • 支持 Debian 12/13 系统
  • 建议内存 >= 1GB,磁盘空间 >= 10GB

使用场景:需要运行 Docker 容器时使用。

注意事项

  • 安装前会自动检查系统兼容性和资源情况
  • 用户加入 docker 组后,需要重新登录才能使用 docker 命令(无需 sudo)

5.2、镜像加速

功能说明:配置 Docker 镜像加速地址,提升国内镜像拉取速度。

镜像加速地址

  • https://docker.m.ixdev.cn
  • https://docker.1ms.run
  • https://docker.1panel.live

功能特性

  • 自动合并多个镜像加速地址(自动去重)
  • 自动保留已有镜像加速配置
  • 自动重启 Docker 服务使配置生效

配置文件/etc/docker/daemon.json

使用场景:国内环境需要加速 Docker 镜像拉取时使用。

注意事项

  • 配置会合并到现有配置中,不会覆盖其他 Docker 配置
  • 如果已有镜像加速配置,新配置会追加到列表中

5.3、安装应用

功能说明:交互式批量安装常用 Docker 容器应用,简化容器部署流程。

功能特性

  • 交互式菜单选择,支持多选批量安装
  • 支持安装全部应用(选择 99)
  • 应用列表按字母顺序排序显示
  • 仅支持 Docker Compose 方式部署
  • 自动检测容器是否已存在,避免重复部署

容器应用

  • 具体应用列表见 config/containers.conf 配置文件
  • 包括但不限于:dockge、portainer 等常用容器应用

部署方式

  • 使用 docker compose 命令部署
  • Compose 文件位于 docker-compose/ 目录
  • 每个容器使用独立的项目名称(project name)

使用场景:需要快速部署常用 Docker 容器应用时使用。

前置条件:必须先安装 Docker(「5.1、安装 Docker」)。

注意事项

  • 如果容器已存在,会跳过部署
  • 部署过程中会显示详细的日志信息

5.4、备份恢复

功能说明:Docker 容器与数据卷的备份与恢复工具,支持灵活的备份策略。

备份功能

  • 备份目录

    • 默认备份:/var/lib/docker/etc/docker/opt/docker
    • 支持自定义备份目录(通过配置文件)
    • 支持排除指定目录
  • 备份流程

    • 备份前自动停止 Docker 服务(确保数据一致性)
    • 使用 tar 和 rsync 进行备份
    • 备份后自动启动 Docker 服务
    • 生成操作日志文件
  • 备份管理

    • 支持自定义备份文件存储路径
    • 自动版本管理(备份目录命名:docker_v1docker_v2 等)
    • 生成详细的备份统计信息(文件数量、大小等)
  • 配置文件

恢复功能

  • 恢复模式

    • 清空恢复:先清空目标目录再恢复(完全覆盖)
    • 增量恢复:覆盖同名文件,保留目标目录中备份源没有的文件
  • 恢复流程

    • 恢复前自动停止 Docker 服务
    • 使用 rsync 进行文件同步
    • 恢复后自动启动 Docker 服务
    • 生成操作日志文件

使用场景

  • 系统迁移:备份 Docker 数据以便迁移到新系统
  • 数据保护:定期备份 Docker 数据,防止数据丢失
  • 灾难恢复:系统故障后快速恢复 Docker 环境

注意事项

  • ⚠️ 重要:备份和恢复会停止 Docker 服务,期间所有容器将不可用
  • 备份前请确保有足够的磁盘空间
  • 恢复操作会覆盖目标目录,请谨慎操作
  • 建议在系统维护时间窗口执行备份恢复操作

六、系统工具

6.1、检查兼容性

功能说明:系统兼容性检查工具,检查系统是否符合脚本运行要求,帮助提前发现潜在问题。

检查模式

  1. 基础检查

    • 系统信息:操作系统版本、架构、主机名、内核版本
    • 运行指标:系统负载、内存使用、磁盘使用、运行时长
    • 硬件信息:CPU 型号、核心数、总内存、磁盘分区
    • 网络状态:网络连通性测试、DNS 解析测试
    • 资源检查:内存是否 >= 512MB、磁盘空间是否 >= 5GB
  2. 增强检查(在基础检查基础上增加):

    • 时间同步:NTP 同步状态检查
    • 虚拟化支持:CPU 虚拟化能力检查(vmx/svm)
    • 服务状态:SSH、Cron 等服务运行状态
    • 安全模块:AppArmor 启用状态
    • 磁盘健康:SMART 健康状态检查

输出内容

  • 详细的系统信息报告
  • 检查结论(适合/存在风险)
  • 发现的问题列表

使用场景

  • 脚本运行前检查系统环境
  • 系统迁移前评估兼容性
  • 故障排查时收集系统信息

6.2、检查系统更新

功能说明:系统更新检查与邮件通知工具,自动检测系统可用更新并发送邮件通知。

功能模式

  1. 立即执行检测

    • 检查系统可用的软件包更新
    • 区分安全更新和常规更新
    • 显示更新列表和统计信息
    • 格式:包名 旧版本 → 新版本
  2. 定时检测

    • 每日检测:每天 00:00 执行
    • 每周检测:每周一 00:00 执行
    • 自定义检测:支持自定义 Cron 表达式

邮件通知

  • 自动发送邮件通知(需要先配置邮件账户)
  • 邮件内容包含:
    • 更新摘要(总更新数、安全更新数、常规更新数)
    • 安全更新列表(详细版本信息)
    • 常规更新列表(详细版本信息)
    • 检测时间

定时任务管理

  • 支持查看当前定时任务
  • 支持移除定时任务
  • 定时任务脚本:~/.system-update-checker.sh

使用场景

  • 定期检查系统更新,及时获取安全补丁
  • 自动化更新通知,无需手动检查

前置条件:建议先配置「3.1、配置邮件账户」,以便接收更新通知。

注意事项

  • 定时任务使用独立的轻量脚本,不依赖项目目录
  • 仅在检测到更新时才发送邮件通知

6.3、查询服务状态

功能说明:查询通过脚本安装的服务的访问地址及端口,快速了解服务运行状态。

检查内容

  1. 系统服务

    • Cockpit 服务状态检查
    • 如未运行则尝试启动
    • 显示访问地址:https://服务器IP:9090
  2. Docker 容器

  3. 安全服务提示

    • Firewalld 防火墙安装状态
    • Fail2ban 服务安装状态

使用场景

  • 快速查看所有服务的访问地址
  • 检查服务运行状态
  • 系统维护时确认服务可用性

注意事项

  • 服务地址使用服务器第一个 IP 地址(hostname -I | awk '{print $1}'
  • 容器检查基于容器名称,如果容器名称不同则不会显示

6.4、更新 Hosts 文件

功能说明:自动更新 /etc/hosts 文件,解决 GitHub、Docker、TMDB 等服务的访问问题。

支持的域名

  • GitHub 相关:github.com、raw.githubusercontent.com、github.io 等 30+ 个 GitHub 域名
  • TMDB 相关:themoviedb.org、api.themoviedb.org 等 TMDB 服务域名
  • 其他服务:OpenSubtitles、Fanart 等

智能 IP 选择

  • 通过多 DNS 并行解析(AliDNS、TencentDNS、BaiduDNS、DNS114)
  • 三级连通性检测(DNS 解析 → HTTP 连接 → 内容验证)
  • 自动选择最优 IP 地址(每个域名最多保留 1 个 IP)

更新方式

  • 单次更新:立即执行一次更新
  • 定时更新:支持自定义 Cron 表达式设置定时更新

文件管理

  • 自动管理 hosts 文件中的 DebNAS 标记区域
  • 标记区域:# DebNAS Hosts Start# DebNAS Hosts End
  • 更新时自动替换标记区域内容,不影响其他配置

使用场景

  • 国内环境访问 GitHub、Docker 等服务时使用
  • 解决 DNS 解析问题,提升访问速度

注意事项

  • 更新会替换标记区域内容,请勿在标记区域内手动添加配置
  • 定时更新需要配置 Cron 任务

6.5、安装 Tailscale

功能说明:安装并配置 Tailscale 内网穿透服务,实现安全的点对点网络连接。

安装内容

  • 添加 Tailscale 的包签名密钥
  • 添加 Tailscale 软件源(bookworm 版本)
  • 安装 tailscale 软件包

后续操作

  • 安装完成后,需要手动运行 tailscale up 进行身份验证
  • 访问 Tailscale 官网完成设备认证
  • 认证后即可通过 Tailscale 网络访问服务器

使用场景

  • 需要从外网安全访问内网服务器时使用
  • 建立安全的点对点网络连接
  • 无需公网 IP 和端口转发

注意事项

  • Tailscale 是免费服务,但需要注册账户
  • 安装后需要手动完成身份验证才能使用

6.6、ACL 权限管理

功能说明:交互式 ACL(访问控制列表)权限管理工具,提供灵活的权限控制。

功能特性

  • 查看 ACL:查看文件或目录的 ACL 权限
  • 设置用户 ACL:为指定用户设置 ACL 权限(支持递归)
  • 设置组 ACL:为指定组设置 ACL 权限(支持递归)
  • 设置默认 ACL:为目录设置默认 ACL(新建文件继承)
  • 删除 ACL:删除文件或目录的 ACL 权限(支持递归)
  • 批量操作:支持递归设置,批量处理目录树

权限格式

  • 支持标准权限格式:r(读)、w(写)、x(执行)
  • 支持组合权限:rwxrwr
  • 自动验证权限格式有效性

操作日志

  • 所有 ACL 操作记录到 /var/log/homenas_acl_manager.log
  • 日志包含:操作类型、路径、用户/组、权限、时间戳

自动依赖处理

  • 自动检测并安装缺失的 ACL 工具(getfacl、setfacl)
  • 如未安装,自动执行 apt install -y acl

使用场景

  • 需要为不同用户/组设置不同的文件访问权限时使用
  • 实现细粒度的权限控制
  • 共享目录权限管理

注意事项

  • ACL 权限需要文件系统支持(ext4、xfs 等)
  • 递归设置会影响目录下所有文件和子目录
  • 操作前会要求确认,避免误操作

6.7、BBR 算法管理

功能说明:BBR(Bottleneck Bandwidth and Round-trip propagation time)拥塞控制算法管理工具,优化网络传输性能。

功能模式

  • 启用 BBR:临时启用或永久启用 BBR 算法
  • 禁用 BBR:临时禁用或永久禁用 BBR 算法
  • 查看状态:查看当前拥塞控制算法和队列规则

BBR 优势

  • 提升网络传输速度,特别是在高延迟网络中
  • 减少网络拥塞,提高带宽利用率
  • Google 开发的现代拥塞控制算法

配置内容

  • 设置 net.ipv4.tcp_congestion_control = bbr
  • 设置 net.core.default_qdisc = fq
  • 自动加载 BBR 内核模块(tcp_bbr)

配置位置

  • 永久配置:/etc/sysctl.d/99-debnas.conf
  • 自动注释 /etc/sysctl.conf 中的重复配置项

使用场景

  • 需要优化网络传输性能时使用
  • 特别是在高延迟网络环境中
  • 提升下载、上传速度

注意事项

  • BBR 需要内核支持(Linux 4.9+)
  • 永久启用需要重启系统或重启网络服务
  • 临时启用立即生效,但重启后失效

七、一键部署

一键部署功能可以自动执行多个模块,快速完成系统环境配置,适合新手用户或需要快速部署的场景。

7.1、一键部署基础环境

功能说明:自动执行基础环境配置,快速搭建可用的 NAS 系统。

执行流程(按顺序自动执行):

  1. 配置软件源(无人值守模式)- 使用维护团队测速第一的镜像源
  2. 安装基础工具 - 安装必备软件包并配置 sudo 权限
  3. 安装 Cockpit 面板 - 安装 Web 管理界面
  4. 设置 Cockpit 网络访问 - 切换为 NetworkManager 网络管理
  5. 安装 Docker - 安装容器运行环境
  6. 添加 Docker 镜像加速 - 配置国内镜像加速
  7. 安装服务查询工具 - 安装服务状态查询脚本

适用场景

  • 快速搭建基础 NAS 环境
  • 新手用户首次部署
  • 测试环境快速配置

执行时间:约 10-20 分钟(取决于网络速度)

注意事项

  • 执行过程中如遇到错误会自动中断
  • 建议在网络稳定的环境下执行
  • 执行完成后会显示服务访问地址

7.2、一键部署安全环境

功能说明:自动执行完整的安全环境配置,包含基础环境 + 安全防护 + 邮件通知。

执行流程(按顺序自动执行):

  1. 配置软件源(无人值守模式)
  2. 安装基础工具
  3. 安装 Cockpit 面板
  4. 设置 Cockpit 网络访问
  5. 设置发送邮件账户 - ⚠️ 需要交互输入 QQ 邮箱信息
  6. 启用登录邮件通知 - 配置登录告警
  7. 配置基础安全防护 - su 限制、超时注销、操作日志
  8. 安装防火墙服务 - Firewalld 防火墙
  9. 安装 Fail2ban 自动封锁 - 防暴力攻击
  10. 安装 Docker
  11. 添加 Docker 镜像加速
  12. 安装服务查询工具

适用场景

  • 生产环境部署
  • 需要安全防护的场景
  • 需要邮件通知的场景

执行时间:约 15-25 分钟(取决于网络速度和交互输入)

注意事项

  • ⚠️ 需要交互输入:执行到「设置发送邮件账户」时需要输入 QQ 邮箱信息
  • 执行过程中如遇到错误会自动中断
  • 安装防火墙后需要重启系统(脚本会提示)
  • 建议在网络稳定的环境下执行

与基础版的区别

  • 增加了邮件通知配置(步骤 5-6)
  • 增加了安全防护配置(步骤 7-9)
  • 更适合生产环境使用

零、退出

退出脚本,返回系统命令行。