Ubuntu 初始化流程
该教程以 ubuntu 22.04 为例,介绍如何初始化一个 ubuntu 系统。

基础配置
-
更换主机名
sudo hostnamectl set-hostname <new-hostname> -
更换用户
# 添加用户 sudo adduser libaoy sudo usermod -aG sudo libaoy -
生成 SSH 密钥
ssh-keygen -t ed25519 -C "libaoyang1997@gmail.com" -
将公钥添加到
~/.ssh/authorized_keys文件中# 本机免密登录 cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys -
配置 git 用户信息
git config --global user.name "Libao Yang" git config --global user.email "libaoyang1997@gmail.com"
更换 apt 源
-
备份原始文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak -
运行更换命令
cat <<EOF | sudo tee /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse EOFcat <<EOF | sudo tee /etc/apt/sources.list deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse EOF -
更新索引
sudo apt update sudo apt upgrade
安装常用工具
sudo apt install -y vim curl wget git net-tools tree tmux
Docker 安装
-
安装基础依赖
sudo apt update sudo apt install -y ca-certificates curl gnupg -
添加 Docker 官方密钥与软件源
# 创建密钥目录 sudo install -m 0755 -d /etc/apt/keyrings # 从阿里云镜像下载密钥 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # 添加阿里云软件源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
安装 Docker & Compose
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
免 sudo 运行(可选但强烈建议)
sudo usermod -aG docker $USER newgrp docker -
验证安装
docker --version docker compose version
Docker 代理设置
-
创建并编辑配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf -
配置
[Service] Environment="HTTP_PROXY=http://127.0.0.1:7890/" Environment="HTTPS_PROXY=http://127.0.0.1:7890/" Environment="NO_PROXY=localhost,127.0.0.1" -
重启 Docker 服务
sudo systemctl daemon-reload sudo systemctl restart docker
Zsh 安装配置
-
安装基础工具
sudo apt install wget git curl vim -y # 安装 Zsh sudo apt install zsh -y -
安裝 Oh My Zsh
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -
安装 PowerLevel10k 主题
git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k -
安装 zsh-autosuggestions 和 zsh-syntax-highlighting 插件
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting -
配置 Zsh
vim ~/.zshrc修改配置项如下:
ZSH_THEME="powerlevel10k/powerlevel10k" ... plugins=(git zsh-autosuggestions zsh-syntax-highlighting)重启 Zsh
source ~/.zshrc -
配置快捷命令到
$ZSH_CUSTOM目录中, 详细请参考 leo-ops/zsh 。在
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}目录下创建文件PROXY_HOST="http://127.0.0.1:7890" proxy() { export http_proxy="$PROXY_HOST" export https_proxy="$PROXY_HOST" export HTTP_PROXY="$PROXY_HOST" export HTTPS_PROXY="$PROXY_HOST" export ALL_PROXY="$PROXY_HOST" export no_proxy="localhost,127.0.0.1,192.168.*,10.*,*.local" export NO_PROXY="localhost,127.0.0.1,192.168.*,10.*,*.local" echo "🟢 Proxy is enabled: $PROXY_HOST 🚀" } noproxy() { unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY no_proxy NO_PROXY echo "🔴 Proxy is disabled 🚫" }llm-api-env() { # Claude code api key export ANTHROPIC_BASE_URL="" export ANTHROPIC_AUTH_TOKEN="" } home-server-env() { # CUDA 12.8 export PATH=/usr/local/cuda-12.8/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH # Rust export PATH=$HOME/.cargo/bin:$PATH # Golang export GOPATH=$HOME/tools/go export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin # Vcpkg export VCPKG_ROOT=$HOME/tools/vcpkg export PATH=$VCPKG_ROOT:$PATH } # Load e based on hostname case $(hostname) in "home-server") llm-api-env home-server-env ;; "tencent-server") ;; esack8s-alias() { alias k='kubectl' alias kgp='kubectl get pods' } home-server-alias() { alias lr='cd ${HOME}/learnhub/learning_ray' # ... } common-alias() { alias ops='cd ${HOME}/leo-ops' alias note='cd ${HOME}/learnhub/Leo_Note' } # Load aliases based on hostname case $(hostname) in "home-server") k8s-alias home-server-alias common-alias ;; "tencent-server") common-alias ;; esac