服务器初始化全流程

  1. Linux 内核更新
sudo apt update
sudo apt upgrade
  1. SSH 免密登录+保持连接
# 本机配置免密码连接到服务器
ssh-copy-id root@satori.love

# 服务器设置连接心跳检查
echo 'ClientAliveInterval 60' | sudo tee -a /etc/ssh/sshd_config
echo 'ClientAliveCountMax 3' | sudo tee -a /etc/ssh/sshd_config
sudo service ssh restart
  1. TCP BBR 网络加速
# BBR是一种网络拥塞算法, 需要 Linux 内核 4.9 或更高版本
sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
sudo sysctl -p
sysctl net.ipv4.tcp_congestion_control
  1. Swp 内存交换文件
# 将占据了物理内存却长时间未被使用的数据移入磁盘(这里设4G, 应按需调整大小)
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  1. Prometheus 收集指标
  2. Caddy 部署服务
  3. PM2 管理进程
# 安装 nodejs
sudo apt install nodejs
sudo apt install npm
sudo node -v

# 全局安装 n 模块, 将 nodejs 切换到 v18 版本
sudo npm install n -g -y
sudo n v18

# 如果版本没有变化, 需要重新打开一个终端
sudo node -v

# 全局安装 pm2 模块, 用于管理 nodejs 进程
sudo npm install pm2 -g -y

# 运行 pm2 startup 后,它将显示一个命令,你需要复制并在终端中运行这个命令。这将设置系统启动脚本,使得在系统启动时,PM2 和你的应用程序也会启动
pm2 startup

bash

#!/bin/bash

# 升级 apt
apt update
apt upgrade -y

# 检查 .bashrc 中是否有 "# proxy on" 的注释
# 如果没,则向文件中添加代理设置
if ! grep -q "# proxy on/off" ~/.bashrc; then
    echo """
    # proxy on/off
    function proxy_off() {
      unset http_proxy
      unset https_proxy
      unset no_proxy
      echo -e "Proxy Off"
    }
    function proxy_on(){
      export http_proxy="http://127.0.0.1:7890"
      export https_proxy=$http_proxy
      export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
      echo -e "Proxy On"
    }
    """
    source ~/.bashrc
    echo "添加代理设置开关完毕"

# 检查 .bashrc 中是否有 "alias venv='source venv/bin/activate'"
# 如果没,则向文件中添加虚拟环境开关
if ! grep -q "alias venv='source venv/bin/activate'" ~/.bashrc; then
    echo """
    # venv
    alias venv='source venv/bin/activate'
    """
    source ~/.bashrc
    echo "添加虚拟环境开关完毕"

# 检查 python3 是否安装, 如果没安装则安装
if ! command -v python3 &> /dev/null; then
    apt install python3 -y
    pip3 install --upgrade pip
fi

# 检查 git 是否安装, 如果没安装则安装
if ! command -v git &> /dev/null; then
    apt install git -y
fi


# 检查 ssh 设置中的连接重试次数是否为 30 次, 如果不是则修改
if ! grep -q "ConnectTimeout 30" /etc/ssh/ssh_config; then
    sed -i 's/ConnectTimeout 0/ConnectTimeout 30/g' /etc/ssh/ssh_config
    systemctl restart sshd
    echo "修改 ssh 连接重试次数为 30 次"
fi

# 检查 ssh 设置中的连接超时时间是否为 30 秒, 如果不是则修改
if ! grep -q "ConnectionAttempts 30" /etc/ssh/ssh_config; then
    sed -i 's/ConnectionAttempts 0/ConnectionAttempts 30/g' /etc/ssh/ssh_config
    systemctl restart sshd
    echo "修改 ssh 连接超时时间为 30 秒"
fi

# 检查 caddy 是否安装, 如果没安装则安装
if ! command -v caddy &> /dev/null; then
    wget -O - https://apt.fury.io/caddy/ | bash -s personal
    apt install caddy -y
fi

# 检查 clash 是否安装, 如果没安装则安装
if ! command -v clash &> /dev/null
then
    wget -O clash
    chmod +x clash
    mv clash /usr/local/bin
fi

# 检查主机名是否为 "GPU",修改主机名为 "GPU"
if ! grep -q "GPU" /etc/hostname; then
    echo "GPU" > /etc/hostname
    echo "修改主机名为 GPU"
fi

--- satori ---

Last