从零搭建网站(一):域名服务器篇

从零搭建网站(一):域名服务器篇
Azura基于旧硬件与 Cloudflare Tunnel Dashboard 模式的建站实践
本文记录如何利用闲置笔记本电脑,在无公网 IP 的家庭网络环境下,通过 Cloudflare 隧道技术(Cloudflare Tunnel)的远程管理模式,实现多业务并发(Web 博客 + 音乐服务器)的公网部署,并详细解决 Web 服务器的权限冲突与自动化配置问题。
一、 核心资产与环境准备
1. 域名采购与解析托管
- 域名:
cbsbm.cn(原注册商为聚名网)。 - DNS 迁移:为获得更好的自动化支持,需将解析权移交给 Cloudflare。在原注册商后台将 DNS 服务器修改为 Cloudflare 提供的地址(如
alec.ns.cloudflare.com),等待全球生效。
2. 硬件环境
- 设备:废弃旧笔记本(具备功耗低、自带备用电池等天然 UPS 优势)。
- 系统:Ubuntu / Xubuntu。
3. 软件栈
- Apache2 (监听端口 8888):负责托管 Hexo 静态博客。
- Navidrome (监听端口 4533):负责个人音乐流媒体服务。
- Cloudflared:Cloudflare Tunnel 官方客户端,作为内网与公网的加密桥梁。
二、 本地 Web 服务配置 (Apache2)
为了将 Hexo 生成的静态文件通过隧道发布,需配置 Apache 监听非标准端口并准确指向项目路径。
1. 修改监听端口
编辑 /etc/apache2/ports.conf,添加:
1 | Listen 8888 |
2. 配置虚拟主机
编辑 /etc/apache2/sites-available/000-default.conf:
1 | <VirtualHost *:8888> |
三、 权限共治:sky 用户与 www-data 组的完美配合
在 Linux 环境下,Hexo 部署脚本(sky 用户)和 Apache 进程(www-data 用户)常因权限冲突导致页面 403。通过以下步骤实现“共治”:
1. 设置归属权
将博客根目录的所有者设为 sky,所属组设为 Web 服务组 www-data:
1 | sudo chown -R sky:www-data /home/sky/my-blog |
2. 细化权限位 (775)
确保所有者和组均拥有读、写、执行权限,其他人仅限读取:
1 | sudo chmod -R 775 /home/sky/my-blog |
3. 设置 GID 标志(核心技巧)
为了让未来 Hexo 重新生成(Delete & Recreate)的文件自动继承 www-data 组属性,防止权限丢失,执行:
1 | sudo chmod g+s /home/sky/my-blog |
四、 Cloudflare Tunnel 远程模式配置
传统的 YAML 配置文件模式较为繁琐。通过 Cloudflare Zero Trust 仪表盘(Dashboard)配置隧道,可以实现云端实时动态路由。
1. 客户端安装与 Token 部署
在控制台创建隧道并获得 Token 后,在本地执行:
1 | # 下载并安装官方软件包 |
2. 系统服务微调 (Systemd)
若需手动调整,编辑 /etc/systemd/system/cloudflared.service:
1 | [Unit] |
执行 sudo systemctl daemon-reload 确保配置生效。
3. 云端路由配置 (Public Hostname)
登录 Cloudflare Zero Trust,进入 Networks -> Tunnels,点击对应隧道的 Configure,切换到 Public Hostname (公共主机名) 选项卡:
博客业务 (cbsbm.cn):
Domain:
cbsbm.cnService:
HTTP://localhost:8888音乐业务 (music.cbsbm.cn):
Subdomain:
musicDomain:
cbsbm.cnService:
HTTP://localhost:4533
五、 总结与展望
通过上述方案,我们构建了一个高可用的家庭服务器环境:
- 极简运维:无需繁琐的端口转发(Port Forwarding),路由修改云端即时生效。
- 安全加固:隐藏了家庭真实的公网 IP,且利用 Cloudflare WAF 抵御潜在攻击。
- 多业务共存:利用 Apache 虚拟主机与隧道子域名,让多项服务在同一台物理设备上各司其职。




