可以说是ubuntu基础环境搭建合集,个人学习用,使用sh一键安装,避免复制各种命令
流程主要包括
0. 可选择不同ubuntu版本对应安装(支持 Ubuntu 20.04/22.04/23.04/24.04)
1. apt换源aliyun
2. 时间选择上海时区,安装chrony联网同步时间
3. (可选)安装 Docker + 配置镜像仓库源 + 用户组设置 + 开机自启动
4. (可选)MySQL + Redis + PostgreSQL多版本选择,通过docker安装,附带容器卷映射
5. (可选)戴笠配置(主要解决curl、wget、git clone github.com的连接问题)
使用流程
vim init_ubuntu.sh
新建一个脚本文件
- 把下面的复制进去就行
- 先
sudo -v
,更新用户权限
- 然后
chmod 755 ./init_ubuntu.sh
添加执行权限
- 然后直接
./init_ubuntu.sh
#!/bin/bash
ask_to_run() {
local prompt="$1"
local callback="$2"
read -p "$prompt [y/N]: " user_choice
case "$user_choice" in
[yY][eE][sS]|[yY])
echo "执行:$callback ..."
$callback
;;
*)
echo "跳过:$callback。"
;;
esac
}
update_apt() {
echo "正在更换阿里云软件源..."
codename=$(lsb_release -cs)
case "$codename" in
focal|jammy|lunar|noble)
sudo tee /etc/apt/sources.list > /dev/null <<EOF
deb https://mirrors.aliyun.com/ubuntu/ $codename main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $codename main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ ${codename}-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ ${codename}-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ ${codename}-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ ${codename}-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ ${codename}-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ ${codename}-backports main restricted universe multiverse
EOF
echo "已设置阿里云镜像源,开始更新缓存..."
sudo apt-get update
echo "apt 更新完成。"
;;
*)
echo "当前 Ubuntu 版本($codename)不在支持列表中,未执行换源。"
;;
esac
}
sync_time() {
echo "设置时区为 Asia/Shanghai..."
sudo timedatectl set-timezone Asia/Shanghai
echo "安装并启用 chrony 时间同步服务..."
sudo apt install -y chrony > /dev/null
sudo systemctl enable --now chrony
echo "时间已同步,chrony 已启用。"
}
install_docker() {
echo "开始安装 Docker..."
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
echo "添加 Docker GPG 密钥..."
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
gpg --dearmor | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
codename=$(lsb_release -cs)
echo "添加 Docker 镜像源..."
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$codename stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
echo "写入 Docker 镜像加速器配置..."
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"registry-mirrors": [
"https://hub.xdark.top/",
"https://hub.littlediary.cn/",
"https://dockerpull.org/",
"https://hub.crdz.gq/",
"https://docker.1panel.live/",
"https://docker.unsee.tech/",
"https://docker.udayun.com/",
"https://docker.kejilion.pro/",
"https://registry.dockermirror.com/",
"https://docker.rainbond.cc/",
"https://hub.geekery.cn/",
"https://docker.1panelproxy.com/",
"https://docker.linkedbus.com/",
"https://docker.nastool.de/"
]
}
EOF
echo "重启 Docker 服务并设置开机自启..."
sudo systemctl daemon-reexec
sudo systemctl restart docker
sudo systemctl enable docker
echo "Docker 已设置为开机自启。"
echo "将当前用户 ($USER) 添加到 docker 用户组..."
sudo usermod -aG docker $USER
echo "当前用户已加入 docker 组,请退出终端或重新登录后生效"
echo "Docker 安装并配置完成。可以尝试运行:docker run hello-world"
}
install_common_databases() {
echo "开始通过 Docker 安装常用数据库(使用 root/123456)..."
sudo mkdir -p /opt/docker/mysql /opt/docker/redis /opt/docker/postgres
sudo chown -R $USER:$USER /opt/docker
echo ""
echo "安装 MySQL(推荐版本:5.7 或 8.0)"
read -p "请输入要安装的 MySQL 版本 [默认: 8.0]: " mysql_ver
mysql_ver=${mysql_ver:-8.0}
docker run -d --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /opt/docker/mysql/data:/var/lib/mysql \
-v /opt/docker/mysql/conf:/etc/mysql/conf.d \
--restart unless-stopped \
mysql:$mysql_ver
echo "MySQL 容器已创建,数据挂载至 /opt/docker/mysql,root 密码为 123456。"
echo ""
echo "安装 Redis(推荐版本:6.2 或 7)"
read -p "请输入要安装的 Redis 版本 [默认: 7]: " redis_ver
redis_ver=${redis_ver:-7}
docker run -d --name redis \
-p 6379:6379 \
-v /opt/docker/redis/data:/data \
--restart unless-stopped \
redis:$redis_ver \
redis-server --appendonly yes
echo "Redis 容器已创建,数据挂载至 /opt/docker/redis,无密码(可后续手动配置)。"
echo ""
echo "安装 PostgreSQL(推荐版本:13 或 15)"
read -p "请输入要安装的 PostgreSQL 版本 [默认: 15]: " pgsql_ver
pgsql_ver=${pgsql_ver:-15}
docker run -d --name postgres \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-v /opt/docker/postgres/data:/var/lib/postgresql/data \
--restart unless-stopped \
postgres:$pgsql_ver
echo "PostgreSQL 容器已创建,数据挂载至 /opt/docker/postgres,root 密码为 123456。"
echo ""
echo "所有数据库容器安装完成"
}
configure_proxy() {
echo "请选择代理方式:"
echo "1) Cla Ver (SOCKS5端口7898, HTTP端口7899)"
echo "2) v2r (SOCKS5端口10808, HTTP端口10809)"
read -p "输入选项编号 [1/2]: " proxy_choice
case "$proxy_choice" in
1)
{
echo ""
echo "# === Cla 代理设置 ==="
echo "alias use-proxy='export http_proxy=\"socks5h://192.168.88.1:7897\"; export https_proxy=\"socks5h://192.168.88.1:7897\"'"
echo "alias use-proxy-http='export http_proxy=\"http://192.168.88.1:7897\"; export https_proxy=\"http://192.168.88.1:7897\"'"
echo "alias disable-proxy='unset http_proxy https_proxy'"
} >> ~/.bashrc
echo "已将 Cla 代理命令写入 ~/.bashrc"
;;
2)
{
echo ""
echo "# === v2 代理设置 ==="
echo "alias use-proxy='export http_proxy=\"socks5h://192.168.88.1:10808\"; export https_proxy=\"socks5h://192.168.88.1:10808\"'"
echo "alias use-proxy-http='export http_proxy=\"http://192.168.88.1:10809\"; export https_proxy=\"http://192.168.88.1:10809\"'"
echo "alias disable-proxy='unset http_proxy https_proxy'"
} >> ~/.bashrc
echo "已将 v2 代理命令写入 ~/.bashrc"
;;
*)
echo "无效选项,跳过代理配置。"
;;
esac
source ~/.bashrc
}
main() {
echo "开始初始化 Ubuntu 环境..."
update_apt
sync_time
ask_to_run "是否安装 Docker?" install_docker
if command -v docker &>/dev/null; then
ask_to_run "是否通过 Docker 安装 MySQL / Redis / PostgreSQL?" install_common_databases
else
echo "未检测到 Docker,跳过数据库安装提示。"
fi
configure_proxy
echo "==初始化全部完成=="
}
main
二、具体戴笠命令示例
配置戴笠后你可以直接使用以下命令:
1. git clone
use-proxy
git clone https://github.com/torvalds/linux.git
disable-proxy
2. wget
use-proxy-http
wget https://github.com/
disable-proxy
3. curl
use-proxy
curl https://api.github.com/users/octocat
disable-proxy
https://github.com/0voice