一、加SWAP(新手忽略)
注意:此步骤新手可直接跳过,直接进行第二步
若服务器内存 ≤ 1G 可添加 swap虚拟内存,一般为内存的 1-2 倍即可
设置 SWAP 可以用脚本:
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh
填写18后,选择1,填写2048或者1024,然后回车
二、更新工具
2.1、切换到 root 用户
sudo -i
2.2、升级 packages
apt update -y
2.3、安装常用的工具
apt install wget curl sudo vim git -y
这些工具用于:
| 工具 | 作用 |
|---|---|
| wget | 下载文件 |
| curl | 网络请求 |
| vim | 文本编辑 |
| git | 下载项目 |
三、安装 Docker 环境(非大陆)
此步为非大陆vps安装docker的步骤,
大陆服务器的 三、四 步骤请划至最下面 1.7、补充
3.1、安装
curl -fsSL https://get.docker.com | bash
3.2、查看 docker 版本
docker -v
如果出现类似:
Docker version 22.xx
说明安装成功。
3.3、设置开机自动启动
systemctl enable docker
四、安装 Docker-compose(非大陆)
4.1、安装 compose 插件
apt install docker-compose-plugin -y
Docker Compose 用于 管理多个容器服务。
例如这些都可以通过一个配置文件统一启动。
Halo
MySQL
Redis
4.2、查看版本
docker compose version #查看 docker compose 版本
4.3、修改 Docker 配置(可选,新手忽略并跳过此步)
增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘
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
4.4、重启docker
systemctl restart docker
五、安装项目(以halo为例)
Halo 是一个 轻量级博客系统。
我们将使用:Docker + MySQL部署。
如果小伙伴是需要安装其他项目如memos,wordpress,Reubah等,主页搜素对应文章关键词
前3步骤 创建、进入、配置类似,第3步骤根据自己所建项目修改配置
5.1、创建目录
mkdir -p /root/data/docker_data/halo
目录说明:
这样未来安装多个项目时目录不会混乱。
/root
└─ data
└─ docker_data
└─ halo
5.2、进入目录
cd /root/data/docker_data/halo
5.3、配置
nano docker-compose.yml
💡 Nano 编辑器小贴士:
- 粘贴内容: 在终端点击鼠标右键,或使用快捷键
Shift + Insert。- 保存修改: 按
Ctrl + O,然后按Enter确认文件名。- 退出编辑器: 按
Ctrl + X。- 注意: 如果你对文件做了改动,退出时会询问是否保存,输入
y(Yes) 即可。
5.4、nano 编辑器输入:
services:
halo:
image: halohub/halo:2.22.13
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./:/root/.halo2
ports:
- "8090:8090"
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# (需修改处 1/5 )MySQL的密码记得修改,并且与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=123changword1
- --spring.sql.init.platform=mysql
# (需修改处 2/5 )外部访问地址,请根据实际需要修改,如http://102.171.142.32/:8090
- --halo.external-url=http://localhost:8090/
# (需修改处 3/5 )初始化的超级管理员用户名,记得改
- --halo.security.initializer.superadminusername=123changename
# (需修改处 4/5 )初始化的超级管理员密码,记得改
- --halo.security.initializer.superadminpassword=123changword2
halodb:
image: mysql:8.0.36
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# (需修改处 5/5 ) 此密码对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=123changword1
- MYSQL_DATABASE=halo
networks:
halo_network:
保存按 Ctrl + O,然后按 Enter 确认
退出按 Ctrl + X
5.5、启动halo
docker compose up -d
5.6、完成
此时打开浏览器,输入 http://vps_ip:8090 即可访问【vps_ip 改为你购买的 vps 的 ip 地址即可打开自己搭建的网页】
到这搭建网站和访问所有步骤已经完成
下面 六、七 俩章节为进阶操作
通过ip+端口让别人访问,总觉得不够简洁 / 担心隐私泄露?
可以通过反向代理后让别人直接通过你的域名访问你的网站
比如我的名字叫rckin我就可以购买一个 rckin.com 的域名,别人点击一下就能访问了,也不用担心ip暴露
六、购买域名+域名托管
6.1、购买域名
刚开始测试可以只买 .top 后缀的,仅仅需要1美元1年(优惠码:rckin)
可点击前往 namesilo 购买,点击链接购买我可以拿到一点奖励分成,感谢各位小伙伴的支持
购买教程:点击链接视频滑动到视频第3步即可:哔哩哔哩 ,YouTube
6.2、域名托管到cloud flare
托管步骤点击视频链接 哔哩哔哩视频 看7分05秒
cloud flare注册官网:https://dash.cloudflare.com/sign-up
namesilo主页:NS主页
七、域名反代(安装Nginx)
7.1、安装 Nginx Proxy Manager
购买完域名和让域名托管在cloud flare后,我们终于可以回到moabxterm了
现在开始给 VPS 安装 Nginx Proxy Manager 进行域名的反向代理(即将 域名 指向 ip+端口 )
7.1.1、创建文件夹目录
mkdir -p /root/data/docker_data/npm
7.1.2、进入文件夹
cd /root/data/docker_data/npm
7.1.3、配置
nano docker-compose.yml
7.1.4、nano输入①或者②:
①自带拉取当下最新版
services:
app:
image: 'jc21/nginx-proxy-manager:latest' # 使用 latest 以获取最新的安全更新和维护工具
container_name: npm
restart: unless-stopped
ports:
- '80:80' # HTTP 流量
- '443:443' # HTTPS 流量
- '81:81' # 管理后台端口
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
②目前稳定版已更新到 2.13.7 (2026.03.09)
services:
app:
image: jc21/nginx-proxy-manager:2.11.3 #如需升级,请手动修改版本号并重新 docker compose pull
restart: unless-stopped
ports:
- '80:80' # 保持默认即可,不建议修改左侧的80
- '81:81' # 冒号左边可以改成自己服务器未被占用的端口
- '443:443' # 保持默认即可,不建议修改左侧的443
volumes:
- ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
- ./letsencrypt:/etc/letsencrypt # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中
💡 Nano 编辑器小贴士:
- 粘贴内容: 在终端点击鼠标右键,或使用快捷键
Shift + Insert。- 保存修改: 按
Ctrl + O,然后按Enter确认文件名。- 退出编辑器: 按
Ctrl + X。- 注意: 如果你对文件做了改动,退出时可能询问是否保存,输入
y(Yes) 即可。
7.1.5、配置启动
docker compose up -d
7.2、打开 Nginx
此时我们可通过浏览器 http://vps_ip:81 访问 NPM 面板 如 http://102.171.142.32:81
⚠️ 补充(小白暂时别看这句话):生产环境建议不要长期对公网暴露 81 管理端口,域名配置完成后可关闭,可将'81:81'改为'127.0.0.1:81:81',后续访问NPM可通过走 SSH 隧道:ssh -L 81:127.0.0.1:81 root@你的VPS_IP,然后再浏览器http://localhost:81 。
通过 http://vps_ip:81 访问 Nginx 面板后
7.2.1、登录
默认登录账号密码:
默认Email: [email protected] #记得改
默认Password: changeme #记得改
7.2、添加代理主机
7.3、添加域名,开启ip代理
7.4、启动https协议,添加证书,搞定!
此时任何人点击你的域名(如 rckin.com) 即可访问所搭建的网站了
八、补充1:大陆VPS装docker
大陆服务器由于网络原因不能直接访问docker网站,所以我们可以去国内镜像网站拉取docker和compose
大陆服务器1.3,1.4步骤不一样,且要多一步 开通防火墙,国内大厂阿里云,腾讯云等等都自带防火墙
8.1、打开提供商控制台
8.2、找到防火墙设置
必须开放端口:
80
443
81(如未关闭)
8888(本篇项目默认端口)
8.3、安装 Docker 环境(大陆服务器)
8.3.1、安装脚本
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
8.3.2、设置开机启动
systemctl enable docker
8.4、安装 Docker-compose大陆服务器)
apt install docker-compose-plugin -y
8.5、后续步骤与上面相同
回到总文章上面的 第五步、安装项目(马年红包) 即可,(大陆/非大陆后续步骤一样)
评论区