Ubuntu Server 20.04

还是放弃了 Alpine Liunx。系统安装的太慢!对网络要求太高了,还是回到了 Ubuntu Server。


系统安装




















系统设置

在开始时,确保打开光驱,光驱为空。

设置 root 密码

1
sudo passwd
1
2
3
4
5
rahn@virtualbox:~$ sudo passwd
[sudo] password for rahn:
New password:
Retype new password:
passwd: password updated successfully

切换到 root

1
2
su root
cd
1
2
3
4
rahn@virtualbox:~$ su root
Password:
root@virtualbox:/home/rahn# cd
root@virtualbox:~#

安装增强功能

  1. 安装依赖环境
1
2
3
4
5
apt install gcc
apt install make

# 也可以合并为一个命令
apt install -y gcc make
  1. 点击 VirtualBox 菜单栏 - 设备 - 安装增强功能


  1. 点击后,执行挂载命令
1
mount /dev/cdrom /mnt
1
2
root@virtualbox:~# mount /dev/cdrom /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.

提示:如果出现 mount: /mnt: no medium found on /dev/sr0. 错误时,确保打开光驱,光驱为空。再次点击 安装增强功能 ,执行挂载命令。

  1. 开始安装增强工具
1
2
3
4
5
cd /mnt
./VBoxLinuxAdditions.run

# 也可以直接执行
/mnt/VBoxLinuxAdditions.run
  1. 重启
1
reboot

安装基本环境

1
2
apt update
apt install zip unzip git curl wget nmap iptables iptables-persistent -y

一键登录

1
2
3
4
mkdir ~/.ssh
chmod 700 ~/.ssh
cd ~/.ssh
nano authorized_keys
1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMwe3w4S9SI8pjYMVnibPllQ2b33oB8fx8ZIp/GnyDG/qDdvMZcAYy1M+tmnOk9MViKzFu4agNH70GkdHtHeqzntrizVfdD80JTxigKE/35wEnOdk1k6BvpSCYMMBIqPnmjiXYMBbSDryQCixLJw+7LqYSL9C8+mOSlnzWVQfgdd6kmHzgSrlzn0xiiqOMwGZWn50dXSv8EVIHriqzp/IqD4RDWyqEhKolrZcAl3ukYqZTkkpHNF8YNM0cbKIQbFHHsW8LdCUPh+yZ3OTY9wS4nFmj9eVGHZw4lkBGB8vcHnnu69bW0XYQe/9GKQqOCuolNon9zcky0d9wuKp84Jaz rsa-key-20230612
1
chmod 600 authorized_keys

SSH 设置

1
nano /etc/ssh/sshd_config
1
2
3
4
5
6
7
8
Port 22

# 使用密钥登录
PubkeyAuthentication yes

# 端口转发
AllowTcpForwarding yes
GatewayPorts yes
1
systemctl reload sshd

固定 iP

1
nano /etc/netplan/00-installer-config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.6.138/24
gateway4: 192.168.6.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
1
2
3
4
#测试连接
netplan try
#应用
netplan apply

拷贝备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cd /root/shared
cp -r data822 /root/data822

# 一键安装 docker
cd /root/data822/docker
bash install.sh

# 一键安装 docker-compose
cd /root/data822/docker-compose
bash install.sh

docker -v && docker-compose -v

# 加载离线镜像
cd /root/data822/images
bash load.sh

# docker 数据
cp -r /root/Server822/server822.zip /root/server822.zip
cd
unzip server822.zip

# 开启所有容器

cd /root/shell
bash start.sh

docker ps

v2rayA 网络代理

v2rayA

  1. 导入 v2raya 镜像,借助增强工具的共享文件夹
  2. 启动 v2rayA 容器
  3. 在网页 2017 端口使用
1
2
3
4
docker load < v2raya.tar
mkdir -p /root/docker/v2rayA
cd /root/docker/v2rayA
nano docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
services:
v2raya:
image: mzz2017/v2raya
container_name: v2raya
restart: always
privileged: true
network_mode: host
environment:
- V2RAYA_LOG_FILE=/tmp/v2raya.log
volumes:
- /lib/modules:/lib/modules:ro
- /etc/resolv.conf:/etc/resolv.conf
- /etc/v2raya:/etc/v2raya
1
docker-compose up -d
1
2
3
#账号密码
admin
maple9999

配置 docker 网络代理

  1. 20171 端口为 v2raya 的 HTTP 端口
  2. 点击 节点连接 -> 左上角 -> 启动
  3. 设置 -> 透明代理/系统代理 -> 启用:不进行分流 -> 保存并应用
  4. 通过修改 /etc/docker/daemon.json 来设置 docker 代理。
1
2
mkdir -p /etc/docker/ 
nano /etc/docker/daemon.json
1
2
3
4
5
{
"http-proxy": "http://127.0.0.1:20171",
"https-proxy": "http://127.0.0.1:20171",
"no-proxy": "localhost,127.0.0.1"
}
1
systemctl restart docker

配置系统代理

  1. 如果你希望在整个系统中启用 HTTP 代理,你需要设置相应的环境变量。可以通过编辑 /etc/profile 文件来全局配置。
  2. 编辑 /etc/profile 文件,添加代理配置:
  3. 在文件的末尾添加以下内容
  4. 保存并退出文件后,运行以下命令使配置生效
  5. 验证代理
1
nano /etc/profile
1
2
3
4
export HTTP_PROXY="http://127.0.0.1:20171"
export HTTPS_PROXY="http://127.0.0.1:20171"
export SOCKS5_PROXY="socks5://127.0.0.1:20170"
export NO_PROXY="localhost,127.0.0.1"
1
2
3
4
5
6
7
source /etc/profile

echo $HTTP_PROXY
echo $HTTPS_PROXY
echo $SOCKS5_PROXY

wget google.com

初始化网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash

# 清空现有的所有规则
echo "清空现有的所有规则"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# 设置默认策略:接受所有传入流量,允许所有出去流量
echo "设置默认策略:接受所有传入流量,允许所有出去流量"
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 允许本机之间的通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 限制每秒最大 SYN 包数(防止端口扫描)
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 开启 docker 网络
iptables -A FORWARD -o docker0 -j ACCEPT
iptables -A FORWARD -i docker0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# SSH 访问
echo "允许端口 22 (SSH) 访问 "
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# http https
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 保存 iptables 规则
#iptables-save > /etc/iptables/rules.v4:这个命令会将当前的 iptables 配置保存到文件 /etc/iptables/rules.v4 中。
#cat /etc/iptables/rules.v4:显示文件 /etc/iptables/rules.v4 的内容,即当前保存的防火墙规则。
#systemctl enable iptables:这个命令将 iptables 服务添加到系统的启动项中,确保每次启动时防火墙规则都会自动加载。
#systemctl start iptables:启动 iptables 服务,使得防火墙规则立即生效。
#stemctl status iptables:显示当前服务的状态,可以查看哪些服务正在运行或已启动。

iptables-save > /etc/iptables/rules.v4
cat /etc/iptables/rules.v4
systemctl enable iptables
systemctl start iptables
# 查看 iptables 状态
# systemctl status iptables
echo "保存 iptables 规则"

# 重启 docker
systemctl restart docker
# 查看 docker 状态
# systemctl status docker
echo "重启 docker 完毕!"

离线安装 docker 与 docker-compose

docker 离线下载

docker-compose

1
cp -r /root/shared/docker/install /root/install

安装 OpenList

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
services:
openlist:
restart: always
volumes:
- ./data:/opt/openlist/data
- /root:/root
ports:
- 5244:5244
- 5245:5245
user: 0:0
environment:
- UMASK=022
- TZ=Asia/Shanghai
container_name: openlist
image: openlistteam/openlist:latest
1
apt install unzip

NPM 本地 https

使用 mkcert 实现本地 https 访问。
明明是简单的几步,硬控了我几个月!!!
在测试的时候,千万不要开代理!!!

mkcert 在文件夹内打开 cmd 输入。

1
mkcert.exe -install *.rahn.top

来到 C:\Windows\System32\drivers\etc\hosts 编写 hosts

1
2
3
192.168.6.101 npm.rahn.top
192.168.6.101 wp.rahn.top
192.168.6.101 pw.rahn.top

更新 DNS

1
ipconfig /flushdns

来到 Nginx Proxy Manager 点击 SSL Certificates -> Add SSL Certificate -> Custom -> 导入生成的文件。

来到 Proxy Hosts -> Add Proxy Host -> 添加 NPM 时,写本地地址为 127.0.0.1:81。别的均为服务器桥接 IP 地址(192.168.6.101)。

1
2
3
mkcert.exe -install *.rahn.top -install
# 这个命令不仅生成了证书,还会将生成的根证书(rootCA.pem)安装到系统和浏览器的信任存储中。这样,生成的证书就会被系统和浏览器信任,不会出现证书不受信任的警告。
# 该命令适用于需要让系统或浏览器信任生成的证书,通常在首次使用 mkcert 时需要加上 -install 选项。
1
2
3
mkcert.exe *.rahn.top
# 没有 -install 选项:这个命令只会生成证书文件,而不会自动将根证书安装到系统的信任存储中。生成的证书依然可以在本地使用,但浏览器和操作系统可能会提示证书不受信任,除非你手动将根证书添加到信任列表中。
# 这个时候需要修改 raye.com.pem 文件,修改为 raye.com.crt 右键,安装证书。

github 环境

镜像制作

1
2
3
4
docker exec -it message2025 sh
apk add bash git openssh
bash git.sh
exit
1
2
3
4
5
6
7
8
git config --global user.name "message2026"
git config --global user.email "message2026@nnc.life"

ssh-keygen -t rsa -C "message2026@nnc.life"

cd /root/.ssh
cp id_rsa.pub id_rsa /blog
cat id_rsa.pub
1
2
docker commit 475774f8b45f raye2025/github:message2025
docker push raye2025/github:message2025
1
2
3
4
5
6
rm -rf /root/docker/Trilium/trilium-data/log/* && zip -r data.zip /root/docker/Trilium/trilium-data
docker exec -it comeyna bash -c "hexo clean && hexo generate && hexo deploy"
docker exec -it message2025 bash -c "hexo clean && hexo generate && hexo deploy"
docker exec -it steps bash -c "hexo clean && hexo generate && hexo deploy"

chmod +x steps.sh message2025.sh data.sh comeyna.sh

虚拟机扩容到整盘 60G

先查看磁盘和分区:

1
2
lsblk
fdisk -l
1
2
3
4
5
# 1. 把卷组里的空闲空间全部分配给根分区
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

# 2. 扩展文件系统 (默认 Ubuntu 是 ext4)
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv