本文最后更新于 2024年10月20日 下午
1. 前言
由于手动配置服务器环境LNMP和LAMP好像有点麻烦诶,所以我干脆就使用Docker来部署服务啦,剩下不能用Docker部署的项目就用宝塔海外版本aapanel留作备用来部署(别问为什么不用国内版,因为加入了强制手机登陆验证)。
4. 环境说明
- 服务器:我自己搭建用的是 Racknerd 的VPS,最好是选 非大陆(香港)的服务器
- 系统:Debian10或以上(Ubuntu 20.04以上)
3. BBR
新的 TCP 拥塞控制算法 BBR (Bottleneck Bandwidth and RTT)
可以让服务器的带宽尽量跑满,并且尽量不要有排队的情况,让网络服务更佳稳定和高效。
Linux Kernel 内核升级到 4.9
及以上版本可以实现 BBR 加速(Ubuntu 18.04 默认的内核是 4.15
版本的内核,Ubuntu 20.04 默认的内核是 5.4
版本的内核,并已经默认编译了 TCP BBR 模块,可以直接通过参数开启)。
目前 Debian10 自带的内核版本一般是4.19,我们可以查看一下内核版本(如果是 5.6 及以上内核则集成了WireGuard)

我们选择更新到新的稳定版本的5.1
内核(目前为止),再开启BBR
。
3.1 给 Debian 10 添加官方backports源,获取更新的软件库
1
| sudo nano /etc/apt/sources.list
|
说明:本文以 Debian 10 为例,所以使用 /etc/apt/sources.list
仍无问题,但如果你并不是根据本文从头开始,或者使用了其他 Linux 发行版,那么建议你建立 /etc/apt/sources.list.d/
文件夹,并在这个文件夹内建立自己的配置文件,例如 /etc/apt/sources.list.d/vpsadmin.list
,以此保证兼容性,也可避免默认文件在不可预见的情况下被覆盖而导致配置丢失
然后把下面这一条加在最后,并保存退出
1
| deb http://archive.debian.org/debian buster-backports main
|

3.2 刷新软件库并查询 Debian 官方的最新版内核并安装
请务必安装你的 VPS 对应的版本(本文以比较常见的 amd64
为例)
1
| sudo apt update && sudo apt -t buster-backports install linux-image-amd64
|
说明 如果你的 VPS 支持,可以尝试【云服务器专用内核】linux-image-cloud-amd64
,优点就是精简、资源占用低,缺点嘛,不支持的系统强行安装会导致无法开机(Kernel 无法识别)。
为了避免无法识别的悲剧,请确保:
- 尝试前做一个系统快照
- 你有
vnc
可以救场(并且你知道怎么用)
3.3 修改 kernel 参数配置文件 sysctl.conf 并指定开启 BBR
1
| sudo nano /etc/sysctl.conf
|
说明:本文以 Debian 10 为例,所以使用 /etc/sysctl.conf
仍无问题,但如果你并不是跟着本文从头开始,或者使用了其他 Linux 发行版,那么建议你建立 /etc/sysctl.d/
文件夹,并在这个文件夹内建立自己的配置文件,例如 /etc/sysctl.d/vpsadmin.conf
,以此保证兼容性,因为部分发行版在 systemd
207 版本之后便不再从 /etc/sysctl.conf
读取参数。使用自定义配置文件也可避免默认文件在不可预见的情况下被覆盖而导致配置丢失。
把下面的内容添加进去
1 2
| net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr
|

重启 VPS、使内核更新和BBR
设置都生效
说明:因为我使用的 VPS 支持云服务器专用内核,所以我使用了 linux-image-cloud-amd64
。如果你不确定你的 VPS 是否支持,那请务必按照 3.2 的命令,使用常规内核 linux-image-amd64
3.3 确认BBR开启
如果你想确认 BBR
是否正确开启,可以使用下面的命令:
此时应该返回这样的结果:
如果你想确认 fq
算法是否正确开启,可以使用下面的命令:
此时应该返回这样的结果:

可以看到,内核版本已经变成了5.10
4. 修改时间
首先,我们需要修改服务器的时间与我们本地的时间一致
香港的服务器的话时间是一样的,如果是海外的服务器,可以通过下面的方式修改
先查看时间:
可以看到我们的时间是洛杉矶时区,这边需要修改改一下

把时区改成上海
1
| sudo timedatectl set-timezone Asia/Shanghai
|

5. 安装Docker、Docker-compose
5.1 非大陆Docker安装
1
| wget -qO- get.docker.com | bash
|
5.2 查看版本
5.3 开机自启
5.4 卸载Docker
1
| sudo apt-get purge docker-ce docker-ce-cli containerd.io
|
1 2
| sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
|
6. 安装Docker-compose
6.1 非大陆Docker-compose安装
1
| sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
6.2 修改权限
1
| sudo chmod +x /usr/local/bin/docker-compose
|
6.3 查看版本

6.4 修改Docker配置(来自烧饼博客)
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘 (泪的教训)
1 2 3 4 5 6 7 8 9 10 11 12 13
| cat > /etc/docker/daemon.json <<EOF { "log-driver": "json-file", "log-opts": { "max-size": "20m", "max-file": "3" }, "ipv6": true, "fixed-cidr-v6": "fd00:dead:beef:c0::/80", "experimental":true, "ip6tables":true } EOF
|
然后重启 Docker 服务
1
| systemctl restart docker
|
7. 文件管理
建议专门给Docker的数据、配置文件新建一个文件夹
1
| mkdir -p data/docker_data
|
这样换服务器或者备份都会方便一点
8.1 Docker挂载目录打包
查看Mounts
,就可以看到映射到本地的目录
然后直接用下面这个命令:
1
| docker run --rm --volumes-from CONTAINER -v $(pwd):/backup busybox tar cvfz /backup/backup.tar CONTAINERPATH
|
更改CONTAINER
(容器名)和 CONTAINERPATH
(容器内部路径)
1
| docker run --rm --volumes-from bitwarden -v $(pwd):/backup busybox tar cvfz /backup/backup.tar /data
|
8.2 SCP传输文件到另一台服务器
1
| scp /root/backup/backup.tar adminuser@198.171.214.58:/root/data/docker-data
|
8.2 其他常用命令
8.2.1 解压
1
| tar -zxvf /root/data/docker-data/remark42/backup.tar
|
8.2.2 重命名