腾讯云轻量应用服务器部署个人博客全指南:一站式 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
文件,我们可以轻松地配置、启动和管理所有服务,大大简化了部署和维护的复杂度。
⚠️ 注意
阅读本文你只需要:有手就行😜
准备工作
相信再看这篇教程的,你肯定有自己的服务器,可以点击 这里 直达教程,如果没有可以点击
为什么选择腾讯云轻量应用服务器?
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:
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:
在 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 加速
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 服务:
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 极大地简化了服务的部署和管理。希望这篇博文能帮助您轻松拥有自己的个人博客,并享受技术带来的乐趣!
如果您在搭建过程中遇到任何问题,欢迎在评论区留言交流。