Files
setup/setup.sh
2025-11-14 09:30:35 +00:00

137 lines
4.8 KiB
Bash

#!/bin/bash
ARCH=$(uname -m)
echo "请选择要执行的脚本(可多选,用空格分隔):"
echo "1. 安装docker"
echo "2. 设置Swap大小"
echo "3. 配置常用alias缩写"
echo "4. apt安装常用软件"
echo "5. 配置防火墙"
echo "6. 安装公钥"
echo "7. 安装conda"
echo "8. 安装rust"
echo "9. 开启bbr"
echo "10. 安装rust"
echo "11. 安装uv管理器"
read -p "输入你的选择: " choices
# 处理选择
for choice in $choices; do
case $choice in
1)
echo "安装docker"
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm ./get-docker.sh
;;
2)
echo "输入Swap内存大小(MB) [默认: 2048]: "
read -t 30 -p "> " swap_size
if [ $? -ne 0 ] || [ -z "$swap_size" ]; then
swap_size=2048
echo -e "\n使用默认值: ${swap_size}MB"
fi
dd if=/dev/zero of=/swapfile bs=1M count=$swap_size
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap defaults 0 0" | tee -a /etc/fstab
;;
3)
echo "配置常用alias缩写"
wget https://git.nvme.cc/adminroot/setup/raw/branch/main/src/alias.txt -qO ~/.alias.txt
echo -e 'if [ -f ~/.alias.txt ]; then\n . ~/.alias.txt\nfi' >>~/.bashrc
;;
4)
echo "即将安装htop cbm tree ufw curl wget lsof micro git git-lfs 7z zellij build-essential ffmpeg"
apt update -y
apt install -y htop cbm tree ufw curl wget lsof micro git git-lfs build-essential ffmpeg
wget https://git.nvme.cc/adminroot/auto-update/raw/branch/main/app/zellij_$ARCH -O /usr/local/bin/zellij
wget https://git.nvme.cc/adminroot/auto-update/raw/branch/main/app/7z_$ARCH -O /usr/local/bin/7z
chmod +x /usr/local/bin/7z /usr/local/bin/zellij
git config --global credential.helper store # git记住用户名密码
;;
5)
echo "配置防火墙"
apt update -y
apt install -y ufw
ufw allow 22
ufw allow 80
ufw allow 443
ufw allow 13576
ufw allow 24687
echo "y" | ufw enable
# Check if Docker rules already exist
if grep -q "BEGIN UFW AND DOCKER" /etc/ufw/after.rules; then
echo "UFW Docker规则已存在, 跳过..."
else
echo "下载并追加UFW Docker配置规则..."
if curl -fsSL https://git.nvme.cc/adminroot/setup/raw/branch/main/src/ufw-docker.txt | tee -a /etc/ufw/after.rules > /dev/null; then
echo "UFW Docker规则已成功追加到文件末尾"
else
echo "错误: 无法下载UFW Docker规则"
exit 1
fi
fi
ufw reload
ufw status
;;
6)
echo "安装公钥"
mkdir -p ~/.ssh
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIDtyoFZlC25rUrOyGgkxd4xO3DgcJy751y6w0d6Rbx4 eureka" >>~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
;;
7)
read -t 30 -p "Conda安装路径 (默认: ~/.miniconda3): " CONDA_PATH
CONDA_PATH=${CONDA_PATH:-"$HOME/.miniconda3"}
PROFILE="$HOME/.bashrc"
case $ARCH in
x86_64)
MINICONDA_INSTALLER="Miniconda3-latest-Linux-x86_64.sh"
;;
aarch64|arm64)
MINICONDA_INSTALLER="Miniconda3-latest-Linux-aarch64.sh"
;;
*)
echo "不支持的架构: $ARCH"
echo "支持的架构: x86_64, aarch64, armv7l"
exit 1
;;
esac
echo "检测到系统架构: $ARCH"
echo "将下载: $MINICONDA_INSTALLER"
mkdir -p "$CONDA_PATH"
wget "https://repo.anaconda.com/miniconda/$MINICONDA_INSTALLER" -O "$CONDA_PATH/miniconda.sh"
bash "$CONDA_PATH/miniconda.sh" -b -u -p "$CONDA_PATH"
rm -f "$CONDA_PATH/miniconda.sh"
echo "source $CONDA_PATH/bin/activate" >> "$PROFILE"
;;
8)
echo "安装rust"
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
;;
9)
echo "开启bbr..."
echo -e "net.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf
sysctl -p
10)
echo "安装rust"
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
11)
echo "安装uv管理器"
curl -LsSf https://astral.sh/uv/install.sh | sh
*)
echo "无效的选择: $choice"
;;
esac
done
echo " ============= Copy and run ============"
echo "| |"
echo "| |"
echo "| source ~/.bashrc |"
echo "| |"
echo "| |"
echo " ======================================="