适用于 Debian/Ubuntu 系统的模块化服务器初始化脚本,提供交互式菜单选择,支持一键配置服务器环境。
- 🎯 模块化设计 - 每个功能独立模块,可按需选择
- 🔄 依赖管理 - 自动处理模块间依赖关系,按正确顺序执行
- 🛡️ 安全配置 - SSH 密钥登录、防火墙配置等安全加固
- 🚀 开发环境 - 一键安装常用开发工具(Go、Rust、Node.js)
- ⚡ 性能优化 - CPU 性能模式配置、系统内核参数优化
- 📦 软件安装 - Redis 等常用服务安装
- 🔧 系统调优 - 网络缓冲区、TCP 参数等内核参数优化(适用于 BSC 节点等高性能应用)
server_tools/
├── tools.sh # 主脚本(交互式菜单)
├── modules/ # 功能模块目录
│ ├── create_user.sh # 创建用户模块
│ ├── install_build_tools.sh # 安装构建工具模块
│ ├── install_cpupower.sh # 安装 cpupower 工具模块
│ ├── set_cpu_performance.sh # 设置 CPU 性能模式模块
│ ├── install_redis.sh # 安装 Redis 模块
│ ├── configure_ssh.sh # 配置 SSH 模块
│ ├── configure_firewall.sh # 配置防火墙模块
│ ├── install_golang.sh # 安装 Golang 模块
│ ├── install_rust.sh # 安装 Rust 模块
│ ├── install_node.sh # 安装 Node.js 模块
│ ├── install_fail2ban.sh # 安装 fail2ban 模块
│ └── configure_sysctl.sh # 系统内核参数优化模块
└── README.md # 说明文档
-
创建用户 (
create_user.sh)- 创建新用户并添加到 sudo 组
- 支持自定义用户名(默认:
four) - 用户名会自动保存,后续模块会使用该用户
-
安装构建工具 (
install_build_tools.sh)- 安装基础开发工具包
- 包含: build-essential, git, curl, wget, vim, htop, net-tools 等
-
安装 cpupower (
install_cpupower.sh)- 安装 CPU 频率管理工具
- 用于设置和调整 CPU 性能模式
-
设置 CPU 性能模式 (
set_cpu_performance.sh)- 使用 cpupower 设置 CPU 为 performance 模式
- 依赖:
install_cpupower
- 安装 Redis (
install_redis.sh)- 从 Redis 官方仓库安装最新稳定版
- 自动配置为系统服务
-
配置 SSH (
configure_ssh.sh)- 配置 SSH 仅允许密钥登录
- 禁用密码登录,提高安全性
- 依赖:
create_user - 需要输入 SSH 公钥(支持单行或多行输入)
-
配置防火墙 (
configure_firewall.sh)- 使用 UFW (Uncomplicated Firewall) 配置防火墙
- 支持预定义模板(Geth、Web)和自定义端口
- 默认开放 SSH 端口 (22),确保不会断开连接
-
安装 Golang (
install_golang.sh)- 从官方源下载并安装 Go
- 支持自定义版本号(默认: 1.25.5)
- 自动配置 PATH 环境变量
- 安装路径:
/usr/local/go - 支持为指定用户配置环境变量
-
安装 Rust (
install_rust.sh)- 使用 rustup 安装 Rust 工具链
- 自动安装最新稳定版
- 支持为指定用户安装
- 安装路径:
~/.cargo
-
安装 Node.js (
install_node.sh)- 使用 nvm (Node Version Manager) 安装
- 自动安装最新的 LTS (长期支持) 版本
- 支持为指定用户安装
- 自动配置 nvm 环境变量
-
安装 fail2ban (
install_fail2ban.sh)- 安装并配置 fail2ban 入侵防护系统
- 自动配置 SSH 防护规则
- 防止暴力破解攻击
-
配置系统内核参数优化 (
configure_sysctl.sh)- 优化系统内核参数,适用于高性能应用(如 BSC 节点)
- 配置网络缓冲区、TCP 参数、系统资源等
- 支持立即应用或重启后生效
- 注意: 此模块不在"全部执行"选项中,需要单独选择
# 克隆或下载项目
cd server_tools
# 以 root 权限运行
sudo ./tools.sh运行脚本后会显示交互式菜单:
==========================================
服务器初始化工具
==========================================
目标用户: four (将在创建用户时设置或修改)
请选择要执行的功能(可以多选,用空格分隔,例如: 1 2 3):
[1] 创建用户并添加到 sudo 组
[2] 安装构建相关软件 (build-essential, git, curl, vim 等)
[3] 安装 cpupower 工具
[4] 设置 CPU 模式为 performance
[5] 安装 Redis (从官方仓库)
[6] 配置 SSH (仅允许密钥登录)
[7] 配置防火墙 (UFW)
[8] 安装 Golang
[9] 安装 Rust
[10] 安装 Node.js (使用 nvm)
[11] 安装 fail2ban (入侵防护)
[12] 配置系统内核参数优化 (BSC节点优化)
[A] 全部执行(按依赖顺序)
[Q] 退出
选择方式:
- 单个功能: 输入数字编号,例如
1或8 - 多个功能: 输入多个数字,用空格分隔,例如
1 2 3或8 9 10 - 全部执行: 输入
A或a,将按依赖顺序执行所有功能 - 退出: 输入
Q或q
- 选择功能后,脚本会显示执行顺序(已考虑依赖关系)
- 确认后开始执行
- 如果某个模块失败,可以选择继续执行其他模块
- 执行完成后显示结果
脚本会自动处理模块间的依赖关系,确保按正确顺序执行:
set_cpu_performance→ 依赖于install_cpupowerconfigure_ssh→ 依赖于create_user
全部执行时的顺序:
- create_user
- install_build_tools
- install_cpupower
- set_cpu_performance
- install_redis
- configure_ssh
- configure_firewall
- install_golang
- install_rust
- install_node
- install_fail2ban
注意: configure_sysctl (系统内核参数优化) 不在"全部执行"选项中,需要单独选择执行。
配置 SSH 模块时:
-
输入 SSH 公钥
- 如果直接按回车(不输入任何内容),将跳过整个 SSH 配置
- 如果输入了 SSH 公钥:
- 单行: 直接粘贴公钥内容,然后按回车,在下一行输入
END结束 - 多行: 粘贴第一行后按回车,继续粘贴后续行,最后输入
END结束
- 单行: 直接粘贴公钥内容,然后按回车,在下一行输入
-
自动配置
- SSH 公钥会自动保存到
/home/<用户名>/.ssh/authorized_keys - 同时保存到
/root/.ssh/authorized_keys - 禁用密码登录,仅允许密钥登录
- SSH 公钥会自动保存到
防火墙模块使用 UFW 进行配置,支持预定义模板和自定义端口。
-
Geth (默认)
- SSH: 22 (TCP)
- P2P 端口范围: 30000:31000 (TCP/UDP)
- RPC 端口: 8545 (HTTP), 8546 (WebSocket)
-
Web
- SSH: 22 (TCP)
- HTTP: 80 (TCP)
- HTTPS: 443 (TCP)
- 选择模板: 选择 Geth、Web 或自定义端口配置
- 应用模板端口: 如果选择了模板,会先应用模板的端口配置
- 添加自定义端口: 选择模板后,会询问是否继续添加自定义端口
- 预览规则: 配置完成后会显示所有防火墙规则预览
- 启用防火墙: 确认规则无误后,可选择是否立即启用防火墙
- 单个端口:
8080 - 端口范围:
8000:9000 - 指定协议:
8080/tcp或8080/udp - 多个端口:
8080 9090 10000 - 混合示例:
8080 9090/tcp 10000:10010/udp
- 提示输入版本号(默认: 1.25.5)
- 从
https://go.dev/dl/go{version}.linux-amd64.tar.gz下载 - 安装到
/usr/local/go - 自动添加到系统 PATH 和用户
.bashrc - 验证安装并显示版本信息
- 使用官方 rustup 安装脚本
- 自动安装最新稳定版
- 如果已安装,会提示是否重新安装
- 支持为指定用户安装
- 安装路径:
~/.cargo
- 使用 nvm (Node Version Manager) 安装
- 自动安装最新的 LTS 版本
- 如果已安装 nvm,会检测并询问是否重新安装
- 自动设置默认版本为 LTS
- 支持为指定用户安装
- nvm 配置会自动添加到
.bashrc
环境变量配置:
- 新终端会话需要执行:
source ~/.nvm/nvm.sh(Node.js) - 或重新登录以自动加载环境变量
系统内核参数优化模块 (configure_sysctl.sh) 用于优化高性能应用(如 BSC 节点)的系统参数。
网络缓冲区:
net.core.rmem_default/wmem_default: 32MBnet.core.rmem_max/wmem_max: 128MBnet.ipv4.tcp_rmem/wmem: TCP 接收/发送缓冲区配置
TCP 参数:
net.ipv4.tcp_keepalive_*: TCP 保活配置net.core.default_qdisc: fq (公平队列)net.ipv4.tcp_congestion_control: bbr (拥塞控制算法)net.ipv4.tcp_max_tw_buckets: TIME_WAIT 连接数限制
系统资源:
vm.swappiness: 0 (禁用 swap)fs.file-max: 4194304 (文件描述符上限)fs.nr_open: 4194304 (单进程文件描述符上限)vm.dirty_ratio/dirty_background_ratio: 脏页刷盘配置
- 优先使用:
/etc/sysctl.d/99-bsc-optimization.conf(模块化配置) - 备用:
/etc/sysctl.conf(传统配置文件)
- 立即应用: 脚本会询问是否立即应用配置,选择
y后配置会立即生效 - 重启生效: 如果选择不立即应用,配置会保存到文件,重启后自动生效
- 手动应用:
- 使用
/etc/sysctl.d/:systemctl restart systemd-sysctl或sysctl -p /etc/sysctl.d/99-bsc-optimization.conf - 使用
/etc/sysctl.conf:sysctl -p /etc/sysctl.conf
- 使用
/etc/sysctl.d/目录下的配置文件会在系统启动时由systemd-sysctl.service自动加载- 无需额外配置,系统会自动读取并应用这些配置
脚本执行完成后会自动验证所有配置参数,显示当前值与期望值的对比。
创建用户模块会在执行时提示输入用户名:
- 用户名必须符合 Linux 用户名规范
- 只能包含小写字母、数字、下划线(_)、连字符(-)
- 必须以字母或下划线开头
- 不能以连字符结尾
- 长度限制: 1-32 个字符
- 默认用户名:
four - 如果之前设置过用户名,会自动读取作为默认值
⚠️ 必须以 root 权限运行:sudo ./tools.sh⚠️ 适用于 Debian/Ubuntu 系统⚠️ 需要网络连接(下载软件包和源码)
- 🔒 SSH 配置会禁用密码登录,请确保已准备好 SSH 公钥
- 🔒 防火墙配置默认禁止所有入站连接,请确认端口配置正确
- 🔒 建议在配置防火墙前先测试 SSH 连接
- ✅ 每个模块可以独立运行,也可以跳过
- ✅ 如果某个模块执行失败,可以选择继续执行其他模块
- ✅ 建议先单独测试各个模块,确认无误后再使用"全部执行"
- ✅ 开发环境安装(Go、Rust、Node.js)支持为指定用户安装,建议先创建用户
- Go 安装失败: 检查版本号是否正确,网络连接是否正常
- Rust 安装失败: 检查网络连接,确保可以访问 rustup.rs
- Node.js 安装失败: 检查网络连接,确保可以访问 GitHub 和 nvm 仓库
- SSH 连接断开: 检查防火墙配置,确保 SSH 端口 (22) 已开放
- 环境变量未生效: 执行
source ~/.bashrc或重新登录 - sysctl 配置未生效:
- 检查配置文件是否存在:
ls -l /etc/sysctl.d/99-bsc-optimization.conf - 手动应用:
systemctl restart systemd-sysctl或sysctl -p <配置文件路径> - 检查 BBR 模块:
lsmod | grep tcp_bbr,如未加载则执行modprobe tcp_bbr
- 检查配置文件是否存在:
本项目采用 MIT 许可证。
欢迎提交 Issue 和 Pull Request!