# Windows电脑重装Ubuntu服务器操作手册（离线/代理环境版）

> **适用场景**：Ubuntu服务器无法直接VPN科学上网，需借助局域网内可科学上网的Windows电脑作为代理完成安装

---

## 一、准备工作（在可科学上网的Windows电脑上完成）

### 1.1 所需物品清单

| 物品 | 说明 |
|------|------|
| U盘（≥8GB） | 用于制作Ubuntu安装盘 |
| 网线 | 给Ubuntu服务器连接路由器/交换机 |
| 代理电脑（Windows） | 局域网内可科学上网的电脑，作为安装代理 |
| 目标电脑 | 待重装的Windows电脑（将装Ubuntu） |
| 路由器/交换机 | 确保两台电脑在同一局域网内 |

### 1.2 在代理电脑上下载所需文件

**重要：所有下载必须在可科学上网的Windows电脑上提前完成！**

#### 1.2.1 下载Ubuntu Server镜像
- 访问：https://ubuntu.com/download/server
- 下载 **Ubuntu Server 24.04 LTS**（长期支持版，推荐）
- 文件大小约 2-3GB，格式为 `.iso`

#### 1.2.2 下载Rufus（制作启动盘工具）
- 访问：https://rufus.ie
- 下载最新版本 `.exe` 文件

#### 1.2.3 下载Docker离线安装包（关键！）

由于Ubuntu服务器无法直接访问外网，需要提前下载Docker的离线安装包：

**方法一：通过代理电脑下载deb包**

在代理电脑的浏览器中访问以下链接，下载对应版本的deb包（以Ubuntu 24.04 / amd64为例）：

```
https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/
```

必须下载的4个包（版本号可能不同，下载最新版即可）：
- `containerd.io_xxx_amd64.deb`
- `docker-ce_xxx_amd64.deb`
- `docker-ce-cli_xxx_amd64.deb`
- `docker-buildx-plugin_xxx_amd64.deb`
- `docker-compose-plugin_xxx_amd64.deb`

**方法二：使用docker离线包（更简单）**

在代理电脑的PowerShell中执行：
```powershell
# 下载docker静态二进制包（包含所有组件）
Invoke-WebRequest -Uri "https://download.docker.com/linux/static/stable/x86_64/docker-26.1.0.tgz" -OutFile "docker-26.1.0.tgz"
```

> 如果上述链接失效，访问 https://download.docker.com/linux/static/stable/x86_64/ 查看最新版本

#### 1.2.4 整理U盘文件结构

将U盘（除了安装盘外，建议另准备一个U盘或同一个U盘分两个分区）整理如下：

```
U盘/
├── ubuntu-24.04-live-server-amd64.iso    （系统镜像，用于Rufus制作启动盘）
└── docker-offline/                        （Docker离线安装包文件夹）
    ├── containerd.io_xxx_amd64.deb
    ├── docker-ce_xxx_amd64.deb
    ├── docker-ce-cli_xxx_amd64.deb
    ├── docker-buildx-plugin_xxx_amd64.deb
    └── docker-compose-plugin_xxx_amd64.deb
    └── （或 docker-26.1.0.tgz）
```

---

## 二、制作Ubuntu安装U盘

### 2.1 使用Rufus制作启动盘

1. 将U盘插入代理电脑
2. 打开Rufus软件
3. **设备**：选择你的U盘（⚠️ **注意：U盘数据将被清空！**）
4. **引导类型选择**：点击"选择"，找到下载的Ubuntu Server `.iso` 文件
5. **分区类型**：
   - 2015年后购买的电脑 → 选择 **GPT**
   - 较老电脑 → 选择 **MBR**
6. **目标系统类型**：UEFI（非CSM）或 BIOS/UEFI-CSM
7. 点击 **开始** → 选择 **"以ISO镜像模式写入"** → 确认格式化
8. 等待制作完成（约5-15分钟）

### 2.2 将离线安装包复制到U盘

制作完成后，U盘会有剩余空间。将之前下载的Docker离线安装包复制到U盘中：

```bash
# 在U盘根目录创建文件夹并复制
U盘/
└── docker-offline/          （复制到这里）
    └── ...（其他系统文件不要动）
```

---

## 三、安装Ubuntu Server系统

### 3.1 设置BIOS从U盘启动

1. 将制作好的U盘插入待重装的目标电脑
2. **关机状态下**，插入网线连接到路由器/交换机
3. 开机时连续按 **F12** 或 **F2** 或 **Del**（不同品牌按键不同）进入BIOS/启动菜单
4. 在启动菜单中选择U盘启动，或在BIOS中将U盘设为第一启动项
5. 保存并退出，电脑将从U盘启动

### 3.2 Ubuntu安装步骤

启动后进入Ubuntu安装界面，按以下步骤操作：

**步骤1：选择语言**
- 选择 **English** 或 **中文（简体）**

**步骤2：键盘布局**
- 默认即可，选择 **Chinese** 或 **English (US)**

**步骤3：选择安装类型**
- 选择 **Ubuntu Server**（非最小安装）

**步骤4：网络配置（⚠️ 关键步骤）**
- 系统会自动检测网线连接
- 选择 **ens33** 或 **eth0** 等有线网卡
- 选择 **DHCP**（自动获取IP地址）
- **务必确认显示 "IP地址已获取"**（会显示类似 `192.168.x.x` 的地址）
- 如果显示未连接，检查网线是否插好，路由器是否正常工作

**步骤5：代理配置（⚠️ 重要：此处留空！）**
- **Proxy address**：留空，直接选择 **Done**
- > 注意：虽然局域网内有代理电脑可以科学上网，但Ubuntu安装阶段不需要配置代理，离线安装包都在U盘上

**步骤6：Ubuntu存档镜像**
- **Archive mirror**：这里需要修改！
- 由于无法访问外网，选择 **手动输入镜像地址**
- 输入局域网内可访问的镜像地址，或暂时跳过（安装后通过U盘安装软件）
- 更好的方案：选择 **Done** 跳过，后续通过离线包安装

**步骤7：磁盘分区（⚠️ 关键步骤）**
- 选择 **Use an entire disk**（使用整个磁盘）
- 选择系统硬盘（⚠️ **注意别选U盘！**）
- 选择 **Set up this disk as an LVM group**（可选，建议勾选）
- 确认分区方案，选择 **Continue**
- 确认 **Destructive action**（将清除所有数据），选择 **Continue**

**步骤8：用户配置（⚠️ 务必记住！）**
```
Your name:     server-admin
Server name:   ubuntu-server
Username:      admin
Password:      设置一个强密码（务必记住！）
Confirm:       再次输入密码
```
- 选择 **Install OpenSSH server**（⚠️ **必须勾选！后续操作全靠SSH**）
- 其他服务不选

**步骤9：开始安装**
- 选择 **Continue** 开始安装
- 等待约10-30分钟（取决于电脑性能）

**步骤10：安装完成**
- 提示 **Installation complete!**
- 拔出U盘，按回车重启
- 电脑重启后进入Ubuntu系统

---

## 四、确认网络连接并获取IP地址

### 4.1 登录系统

重启后显示登录界面：
```
ubuntu-server login:
```
输入用户名 `admin` 和密码（输入密码时不显示字符，直接按回车）

### 4.2 查看本机IP地址

登录成功后，输入以下命令查看IP：
```bash
ip addr show
```
或
```bash
hostname -I
```

**找到类似以下信息：**
```
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
    inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic ens33
```
**`192.168.1.105` 就是本机的IP地址**，请记录下来！

### 4.3 测试网络连通性

```bash
ping -c 4 www.baidu.com
```

**预期结果**：如果显示 `ping: unknown host` 或超时，说明无法访问外网（正常情况，因为我们没有VPN）。

**测试局域网连通性**：
```bash
ping -c 4 192.168.1.1    # 替换为你的网关地址
```
如果返回正常，说明局域网连接正常。

---

## 五、安装Docker（离线方式）

> ⚠️ **重要**：由于Ubuntu无法访问外网，必须使用U盘中的离线安装包！

### 5.1 插入U盘并挂载

将包含离线安装包的U盘插入Ubuntu服务器：

```bash
# 查看U盘设备名
lsblk
```

找到类似 `sdb1` 或 `sdc1` 的设备（容量匹配U盘大小）：
```
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  500G  0 disk 
├─sda1   8:1    0    1G  0 part /boot/efi
├─sda2   8:2    0    2G  0 part /boot
└─sda3   8:3    0  497G  0 part /
sdb      8:16   1   16G  0 disk 
└─sdb1   8:17   1   16G  0 part          ← 这就是U盘分区
```

挂载U盘：
```bash
# 创建挂载点
sudo mkdir -p /mnt/usb

# 挂载U盘（将sdb1替换为实际的设备名）
sudo mount /dev/sdb1 /mnt/usb

# 查看内容
ls /mnt/usb
```

### 5.2 方案A：使用deb包安装Docker（推荐）

如果U盘中有 `.deb` 格式的Docker安装包：

```bash
# 进入Docker离线包目录
cd /mnt/usb/docker-offline

# 安装所有deb包
sudo dpkg -i *.deb

# 如果提示依赖错误，修复依赖
sudo apt --fix-broken install -y

# 或者手动安装依赖后再次安装
sudo apt install -f -y
```

### 5.3 方案B：使用静态二进制包安装Docker

如果U盘中有 `docker-xxx.tgz` 文件：

```bash
# 进入U盘目录
cd /mnt/usb/docker-offline

# 解压到/usr/bin/
sudo tar -xzf docker-26.1.0.tgz -C /usr/bin/ --strip-components=1

# 创建docker组
sudo groupadd -f docker

# 创建systemd服务文件
sudo tee /etc/systemd/system/docker.service > /dev/null <<'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

# 创建docker.socket文件
sudo tee /etc/systemd/system/docker.socket > /dev/null <<'EOF'
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF
```

### 5.4 启动Docker并设置开机自启

```bash
# 重新加载systemd
sudo systemctl daemon-reload

# 启动Docker
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 验证安装
sudo docker info
sudo docker version
```

只要显示版本信息，即表示Docker安装成功。

### 5.5 配置用户权限（免sudo使用docker）

```bash
# 将当前用户加入docker组
sudo usermod -aG docker $USER

# 重新登录使权限生效（或执行）
newgrp docker
```

---

## 六、配置代理上网（可选但推荐）

如果后续需要让Ubuntu服务器临时访问外网（如下载更新），可以通过代理电脑设置代理：

### 6.1 在代理电脑（Windows）上设置代理共享

**方案A：使用Clash/V2Ray等工具的局域网代理**

1. 打开Clash/V2Ray等代理工具
2. 进入设置 → 允许局域网连接
3. 记录代理地址和端口（如：`192.168.1.100:7890`）

**方案B：使用CCProxy等代理软件**

1. 在Windows上安装CCProxy
2. 设置HTTP/SOCKS5代理
3. 记录代理地址和端口

### 6.2 在Ubuntu服务器上配置代理

```bash
# 临时设置环境变量（当前终端有效）
export http_proxy=http://192.168.1.100:7890
export https_proxy=http://192.168.1.100:7890

# 测试代理是否生效
curl -I https://www.google.com
```

**永久配置代理（写入配置文件）：**
```bash
# 编辑环境变量文件
sudo nano /etc/environment
```

添加以下内容：
```
http_proxy="http://192.168.1.100:7890"
https_proxy="http://192.168.1.100:7890"
no_proxy="localhost,127.0.0.1,::1,192.168.0.0/16"
```

保存后退出（Ctrl+O，回车，Ctrl+X），重启后生效。

### 6.3 为Docker配置代理（如需拉取镜像）

```bash
# 创建docker代理配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d

# 创建代理配置文件
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null <<'EOF'
[Service]
Environment="HTTP_PROXY=http://192.168.1.100:7890"
Environment="HTTPS_PROXY=http://192.168.1.100:7890"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF

# 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
```

---

## 七、卸载U盘并清理

完成所有安装后：

```bash
# 退出U盘目录
cd ~

# 卸载U盘
sudo umount /mnt/usb

# 安全拔出U盘
```

---

## 八、最终确认清单

完成以上步骤后，请确认以下信息并提供给我：

| 检查项 | 执行命令 | 预期结果 |
|--------|----------|----------|
| 本地IP地址 | `hostname -I` | 记录第一个IP地址（如192.168.x.x） |
| 局域网连通 | `ping -c 4 192.168.1.1` | 显示4个回复 |
| Docker版本 | `docker --version` | 显示版本号如 `Docker version 26.x.x` |
| Docker运行状态 | `sudo systemctl status docker` | 显示 `active (running)` |
| SSH服务状态 | `sudo systemctl status ssh` | 显示 `active (running)` |

---

## 九、重要信息记录表

请填写以下信息并反馈：

```
═══════════════════════════════════════════════════════
                    服务器信息登记表
═══════════════════════════════════════════════════════

【基本信息】
服务器本地IP地址：_______________
网关地址：_______________
子网掩码：_______________

【登录信息】
登录用户名：admin
登录密码：_______________________（你设置的密码）
SSH端口：22

【代理信息】（如配置了代理）
代理服务器IP：_______________
代理端口：_______________

【硬件信息】
CPU型号：_______________
内存大小：_______________
硬盘容量：_______________
═══════════════════════════════════════════════════════
```

---

## 十、常见问题排查

| 问题 | 可能原因 | 解决方案 |
|------|----------|----------|
| 安装时无法获取IP | 网线未插好/DHCP未开启 | 检查网线、路由器DHCP设置，尝试更换网口 |
| U盘无法挂载 | 设备名错误 | 执行 `lsblk` 确认正确的设备名 |
| Docker deb安装依赖错误 | 缺少依赖包 | 执行 `sudo apt --fix-broken install -y` |
| 代理配置后不生效 | 代理地址错误 | 确认代理电脑的IP和端口是否正确 |
| Docker拉取镜像失败 | 未配置代理 | 按6.3节配置Docker代理 |
| 忘记密码 | - | 开机时按Shift进入GRUB，选择recovery mode重置密码 |
| SSH无法连接 | 防火墙阻止 | 执行 `sudo ufw allow 22/tcp` |

---

## 十一、远程协助准备

如果你需要我远程指导，请确保：

1. **记录好所有IP地址**：
   - 服务器本地IP（如 `192.168.1.105`）

2. **确保OpenSSH已安装并运行**（安装时已勾选）

3. **如果在同一局域网**：
   - 直接提供本地IP `192.168.x.x`
   - 确保SSH端口22未被防火墙阻止

4. **紧急联系方式**：
   - 如果操作遇到问题，可以拍照或截图发给我
   - 或者通过代理电脑的微信/QQ发送信息

---

## 附录：代理电脑辅助操作指南

### A.1 在代理电脑上准备离线包（提前完成）

如果你需要我帮你下载最新的离线包，请告诉我：
1. Ubuntu版本（如24.04）
2. 系统架构（通常是amd64/x86_64）

### A.2 通过代理电脑传输文件到Ubuntu

如果U盘不方便，可以通过SCP/WinSCP传输：

**在代理电脑（Windows）上使用WinSCP：**
1. 下载WinSCP：https://winscp.net
2. 打开WinSCP，选择SFTP协议
3. 主机名：Ubuntu的IP地址（如 `192.168.1.105`）
4. 用户名：`admin`
5. 密码：你设置的密码
6. 端口：22
7. 登录后拖拽文件传输

**或者使用命令行（Windows PowerShell）：**
```powershell
# 从Windows复制文件到Ubuntu
scp C:\path	oile.deb admin@192.168.1.105:/home/admin/

# 输入密码后完成传输
```

### A.3 代理电脑共享网络给Ubuntu（高级）

如果Ubuntu完全无法上网，可以设置代理电脑为网关：

**在Windows代理电脑上（需要双网卡或WiFi+有线）：**
1. 打开"网络和共享中心"
2. 找到可以科学上网的网络连接（如WiFi）
3. 右键 → 属性 → 共享 → 勾选"允许其他网络用户通过此计算机的Internet连接"
4. 选择Ubuntu连接的有线网卡
5. Ubuntu将自动获取新的IP地址，可以共享上网

---

**操作人签名：_______________ 日期：_______________**

**完成后请将"重要信息记录表"内容发给我！**

---

> 📌 **特别提醒**：
> 1. 所有离线安装包必须提前在可科学上网的电脑上下载好
> 2. U盘制作和文件复制建议在操作前一天完成
> 3. 操作过程中有任何不确定的步骤，请暂停并拍照问我
> 4. 系统安装会清空硬盘所有数据，请确认目标电脑无重要数据！
═══════════════════════════

【基本信息】
服务器本地IP地址：_______________
网关地址：_______________
子网掩码：_______________

【ZeroTier信息】
ZeroTier网络ID：__________________
ZeroTier虚拟IP地址：_______________

【登录信息】
登录用户名：admin
登录密码：_______________________（你设置的密码）
SSH端口：22

【代理信息】（如配置了代理）
代理服务器IP：_______________
代理端口：_______________

【硬件信息】
CPU型号：_______________
内存大小：_______________
硬盘容量：_______________
═══════════════════════════════════════════════════════
```

---

## 十一、常见问题排查

| 问题 | 可能原因 | 解决方案 |
|------|----------|----------|
| 安装时无法获取IP | 网线未插好/DHCP未开启 | 检查网线、路由器DHCP设置，尝试更换网口 |
| U盘无法挂载 | 设备名错误 | 执行 `lsblk` 确认正确的设备名 |
| Docker deb安装依赖错误 | 缺少依赖包 | 执行 `sudo apt --fix-broken install -y` |
| ZeroTier无法启动 | 依赖库缺失 | 执行 `sudo apt install -f -y` 修复依赖 |
| ZeroTier无法加入网络 | 网络ID错误 | 确认16位网络ID是否正确 |
| ZeroTier显示OFFLINE | 后台未授权 | 在 https://my.zerotier.com 后台勾选Auth |
| 代理配置后不生效 | 代理地址错误 | 确认代理电脑的IP和端口是否正确 |
| Docker拉取镜像失败 | 未配置代理 | 按7.3节配置Docker代理 |
| 忘记密码 | - | 开机时按Shift进入GRUB，选择recovery mode重置密码 |
| SSH无法连接 | 防火墙阻止 | 执行 `sudo ufw allow 22/tcp` |

---

## 十二、远程协助准备

如果你需要我远程指导，请确保：

1. **记录好所有IP地址**：
   - 服务器本地IP（如 `192.168.1.105`）
   - ZeroTier虚拟IP（如 `172.28.x.x`）

2. **确保OpenSSH已安装并运行**（安装时已勾选）

3. **如果我在外网访问**：
   - 确保ZeroTier已连接并授权
   - 提供ZeroTier虚拟IP给我
   - 确保你的电脑也加入了同一个ZeroTier网络

4. **如果在同一局域网**：
   - 直接提供本地IP `192.168.x.x`
   - 确保SSH端口22未被防火墙阻止

5. **紧急联系方式**：
   - 如果操作遇到问题，可以拍照或截图发给我
   - 或者通过代理电脑的微信/QQ发送信息

---

## 附录：代理电脑辅助操作指南

### A.1 在代理电脑上准备离线包（提前完成）

如果你需要我帮你下载最新的离线包，请告诉我：
1. Ubuntu版本（如24.04）
2. 系统架构（通常是amd64/x86_64）

### A.2 通过代理电脑传输文件到Ubuntu

如果U盘不方便，可以通过SCP/WinSCP传输：

**在代理电脑（Windows）上使用WinSCP：**
1. 下载WinSCP：https://winscp.net
2. 打开WinSCP，选择SFTP协议
3. 主机名：Ubuntu的IP地址（如 `192.168.1.105`）
4. 用户名：`admin`
5. 密码：你设置的密码
6. 端口：22
7. 登录后拖拽文件传输

**或者使用命令行（Windows PowerShell）：**
```powershell
# 从Windows复制文件到Ubuntu
scp C:\path	oile.deb admin@192.168.1.105:/home/admin/

# 输入密码后完成传输
```

### A.3 代理电脑共享网络给Ubuntu（高级）

如果Ubuntu完全无法上网，可以设置代理电脑为网关：

**在Windows代理电脑上（需要双网卡或WiFi+有线）：**
1. 打开"网络和共享中心"
2. 找到可以科学上网的网络连接（如WiFi）
3. 右键 → 属性 → 共享 → 勾选"允许其他网络用户通过此计算机的Internet连接"
4. 选择Ubuntu连接的有线网卡
5. Ubuntu将自动获取新的IP地址，可以共享上网

---

**操作人签名：_______________ 日期：_______________**

**完成后请将"重要信息记录表"内容发给我！**

---

> 📌 **特别提醒**：
> 1. 所有离线安装包必须提前在可科学上网的电脑上下载好
> 2. U盘制作和文件复制建议在操作前一天完成
> 3. 操作过程中有任何不确定的步骤，请暂停并拍照问我
> 4. 系统安装会清空硬盘所有数据，请确认目标电脑无重要数据！
