腾讯云轻量应用服务器部署个人博客全指南:一站式 Docker Compose 搭建 Caddy、Halo、Certimate、Watchtower 与 Bing 壁纸 API。
前言
又好久没写博客了,毕业了事情比较多,而且因为经济上的原因,托管服务器的经济压力较大,托管后操作起来没有云服务器方便,同时大量的配置空闲,比较浪费。本着降本增效的原则,再加上最近 EdgeOne 大火,所以又上云了。
本文将详细介绍如何在腾讯云服务器上购买2C2G3M的云服务器,并使用 Docker Compose 运行 Caddy、Halo、Certimate、Watchtower、bing-wallpaper-api,最终搭建起一个功能完善的个人博客网站。
简介
对于个人博客而言,2核2G3M的配置是一个非常经济且性能足够的选择。它能够满足日常访问需求,同时避免了资源浪费。腾讯云作为国内领先的云服务提供商,其稳定性和网络质量都有保障。
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 docker-compose.yml
文件,我们可以轻松地配置、启动和管理所有服务,大大简化了部署和维护的复杂度。
⚠️ 注意
阅读本文你只需要:有手就行😜
准备工作
相信再看这篇教程的,你肯定有自己的服务器,可以点击 这里 直达教程,如果没有可以点击 https://curl.qcloud.com/Tkb1BeLp获取更多优惠!
为什么选择腾讯云轻量应用服务器?
LH(Lighthouse)相较于CVM,具有更简单灵活的创建以及服务面板,对于博客这样的轻量需求能够更好的适配。
对比项
轻量应用服务器
传统VPS
虚拟主机
云服务器CVM
适用场景
中小企业、开发者、轻量级应用(博客、小程序、测试环境等)
需要完整服务器权限的中小型项目
仅支持基础建站功能
中大型企业、高并发/复杂架构场景(视频处理、AI训练等)
资源管理
套餐式整体售卖(计算+存储+网络),性价比高
独立分配资源,需自行组合
共享底层资源,无独立管理权限
灵活选配各资源,按需计费
应用部署
支持一键部署应用模板(如 WordPress、LAMP)
需手动安装环境
仅支持预装环境建站
需完全手动配置
网络配置
自动创建网络,简化操作
需手动配置网络
无独立网络配置权限
需管理 VPC、安全组等复杂配置
功能支持
完整生命周期管理 + 防火墙 + 监控
基础管理功能
仅 FTP 文件管理
支持高阶功能(如弹性伸缩、GPU 等)
安全防护
默认免费提供 DDoS 防护和主机安全
需自行部署安全措施
依赖服务商基础防护
支持自定义高级安全策略
腾讯云轻量应用服务器购买指南
-
登录腾讯云官网:访问 http://cloud.tencent.com 并登录您的账号。如果没有账号,请先注册。
-
**进入购买页面:**点击 https://curl.qcloud.com/Tkb1BeLp选择一块适合你配置的服务器下单购买。
-
设置登录方式:选择“密码登录”或“SSH密钥登录”,并设置好密码或绑定密钥。
-
确认订单并支付:核对所有配置信息,确认无误后提交订单并完成支付。
搭建个人博客服务
接下来,我们将使用 Docker Compose 搭建各个服务。
Docker 及 Docker Compose 安装配置
购买并登录到您的腾讯云服务器后,我们需要安装 Docker 和 Docker Compose。以下是详细步骤:
-
更新系统软件包:
sudo apt update && sudo apt upgrade -y
-
安装 Docker:
点击查看安装即配置 docker:
https://www.anye.xyz/archives/SoizHNTd#docker
Watchtower 配置
Watchtower 可以帮助我们自动更新 Docker 容器镜像。在 docker-compose.yml
中添加 Watchtower 服务:
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 3600 --cleanup
说明:
-
container_name: watchtower
:指定容器名称为watchtower
。 -
containrrr/watchtower
:使用 Watchtower 官方镜像。 -
volumes/var/run/docker.sock:/var/run/docker.sock
:将 Docker Socket 挂载到容器内,以便 Watchtower 可以与 Docker Daemon 通信,监控和更新其他容器。 -
command: --cleanup --interval 3600
:-
--cleanup
:更新后自动清理旧的镜像。 -
--interval 3600
:每 3600 秒(1 小时)检查一次更新。您可以根据需要调整检查间隔。
-
CAW 代理加速
参考下面的教程获取 token:
https://www.anye.xyz/archives/VbiODlkV
在 docker-compose.yml
中添加 CAW 代理:
services:
cdm:
container_name: caw
image: docker.cnb.cool/anyexyz/tools/cnb-accelerates-web:latest
network_mode: bridge
ports:
- 172.17.0.1:3128:3128
environment:
- CNB_TOKEN=xxxxxxxxxxxxxxx
- CNB_REPO=Anyexyz/Temp/runtime
说明:
-
container_name: caw
:指定容器名称为caw
,便于在 Docker CLI 中识别和操作该容器。 -
image: docker.cnb.cool/anyexyz/tools/cnb-accelerates-web:latest
:使用来自docker.cnb.cool
镜像仓库的加速代理服务镜像,适用于访问加速。 -
ports:
:将宿主机的172.17.0.1:3128
端口映射到容器的3128
端口,用于提供代理服务。
Docker Mirror 加速
https://www.anye.xyz/archives/VbiODlkV
Certimate 配置
Certimate 是一个自动化 SSL 证书管理工具。在 docker-compose.yml
中添加 Certimate 服务:
services:
certimate:
container_name: certimate
image: certimate/certimate:latest
ports:
- 127.0.0.1:8091:8090
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./data:/app/pb_data
environment:
- http_proxy=http://172.17.0.1:3128
- https_proxy=http://172.17.0.1:3128
说明:
-
certimate/certimate:latest
:使用最新版 Certimate 镜像。 -
container_name: certimate
:指定容器名称为certimate
。 -
ports
:将容器的 8090 端口映射到主机的 8091 端口。您可以根据需要调整主机端口。 -
.data:/app/data
:将 Certimate 的数据目录持久化到本地的certimate_data
文件夹。 -
添加环境变量以使用 caw 提供的代理。
Caddy 配置
Caddy 将作为我们的反向代理服务器,负责处理 HTTPS 证书和流量转发。在 docker-compose.yml
中添加 Caddy 服务:
services:
caddy:
container_name: caddy
image: caddy:latest
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./conf:/etc/caddy
- ./site:/srv
- ../ssl:/ssl:ro
同时,创建 Caddyfile
文件:
https://anye.xyz {
tls /ssl/anye.xyz/cert.crt /ssl/anye.xyz/cert.key
redir https://www.anye.xyz{uri} permanent
}
https://www.anye.xyz {
tls /ssl/anye.xyz/cert.crt /ssl/anye.xyz/cert.key
handle_path /bg-image* {
reverse_proxy http://172.17.0.1:9000
}
reverse_proxy http://172.17.0.1:8090
}
说明:
-
caddy:latest
:使用最新版 Caddy 镜像。 -
ports
:映射 80 和 443 端口,用于 HTTP 和 HTTPS 访问。
Halo 配置
Halo 是本站使用的开源博客系统。在 docker-compose.yml
中添加 Halo 服务:
https://docs.halo.run/getting-started/install/docker-compose
services:
halo:
container_name: halo
image: registry.fit2cloud.com/halo/halo-pro:2
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "172.17.0.1:8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
restart: on-failure:5
environment:
- JVM_OPTS=-Xmx512m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
- --halo.external-url=https://www.anye.xyz/
halodb:
image: postgres:15.4
restart: on-failure:3
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=openpostgresql
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
bing-wallpaper-api 配置
bing-wallpaper-api 提供 Bing 每日壁纸的 API 接口。在 docker-compose.yml
中添加 bing-wallpaper-api 服务:
services:
bing-wallpaper-api:
container_name: bing-wallpaper-api
image: docker.cnb.cool/anyexyz/bing-wallpaper-api:latest
ports:
- 172.17.0.1:9000:9000
restart: unless-stopped
说明:
-
docker.cnb.cool/Anyexyz/bing-wallpaper-api:latest
:使用 bing-wallpaper-api 镜像。 -
container_name: bing-wallpaper-api
:指定容器名称为bing-wallpaper-api
。 -
ports
:将容器的 9000 端口映射到主机的 9000 端口。这是 bing-wallpaper-api 的默认访问端口。
各组件协同工作
现在,我们已经配置了所有必要的服务。它们将协同工作,共同搭建您的个人博客网站:
-
Caddy:作为反向代理服务器,监听 80 和 443 端口。当用户访问您的域名时,Caddy 会根据
Caddyfile
中的配置,将请求转发到 Halo 或 bing-wallpaper-api 服务。 -
Halo:博客系统本身,运行在 Docker 容器中,并通过 Caddy 暴露到公网。
-
Certimate:证书管理工具,可以帮助您自动化管理和续期 SSL 证书。虽然 Caddy 已经内置了自动证书管理功能,但 Certimate 可以提供更灵活的证书管理方案,例如支持更多的 DNS 提供商,或者用于管理其他服务的证书。
-
Watchtower:监控所有 Docker 容器的镜像更新。一旦发现有新版本,它会自动拉取最新镜像并重启相应的容器,确保您的服务始终保持最新状态。
-
bing-wallpaper-api:提供 Bing 每日壁纸的 API 接口,您可以将其集成到您的博客中,例如作为背景图片或提供壁纸下载功能。
启动所有服务
在各应用目录下,运行以下命令启动服务:
docker-compose up -d
如果所有服务都正常运行,您现在应该可以通过您的域名访问 Halo 博客了。首次访问 Halo,您需要进行初始化设置。
总结
通过本文的指引,您应该已经成功在腾讯云服务器上搭建了一个基于 Docker Compose 的个人博客网站,集成了 Caddy 进行反向代理和 SSL 证书管理,Halo 作为博客系统,Certimate 进行更灵活的证书管理,Watchtower 自动化更新容器,以及 bing-wallpaper-api 提供额外的功能。
这种部署方式不仅充分利用了云服务器的资源,实现了“降本增效”的目标,还通过 Docker Compose 极大地简化了服务的部署和管理。希望这篇博文能帮助您轻松拥有自己的个人博客,并享受技术带来的乐趣!
如果您在搭建过程中遇到任何问题,欢迎在评论区留言交流。