基于 Tor 的隐藏服务部署指南
该网站现已通过 Tor 网络作为隐藏服务(Hidden Service)运行。在此模式下,域名仅在 Tor 网络内部解析,用户需使用 Tor 浏览器访问。这种架构无需证书授权机构(CA)、DNS 服务器或暴露的公网 IP 地址。连接由 Tor 协议本身提供端到端加密,数据流经成千上万个志愿者运营的中继节点进行传输和加密,从而将匿名性扩展至服务器端。

配置 Tor 隐藏服务
部署过程涉及安装 Tor 并将隐藏服务指向本地端口。首先编辑 /etc/tor/torrc 配置文件:
HiddenServicePort 80 127.0.0.1:8080
指定的目录必须是专用路径且由 Tor 拥有,而非直接指向 Web 根目录。Tor 会将服务的私钥和主机名文件存储于此,并要求严格的权限控制(chmod 700,所有者为 debian-tor)。若权限设置不当导致 Tor 启动失败,Web 文件可能被错误指向。重启 Tor 服务并读取生成的 .onion 地址:
$ sudo systemctl restart tor@default
dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion
Web 服务器配置
由于 Tor 使用简单的 TCP 连接并提供自身加密机制,Web 服务器无需配置 TLS、HTTP/2 或 QUIC。以 Nginx 为例,配置如下:
server {
listen 127.0.0.1:8080;
server_name dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion;
root /srv/tor.david.alvarezrosa.com;
index index.html;
error_page 404 /404/index.html;
location / {
try_files $uri $uri/ =404;
}
}
重新加载 Nginx 后,网站即可在 Tor 网络上提供服务。
静态站点构建与自动化部署
对于静态网站,基础 URL 通常被编译为绝对链接。若仅针对清网(Clearnet)构建,即使通过 Tor 访问,链接仍会指向清网域名。解决方案是构建第二个副本,将 .onion 地址设为基础 URL:
$ hugo --minify --baseURL="http://dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion/"
部署管道可实现自动化:每次代码推送时,系统同时为清网和 Tor 目标构建网站,并将各自同步至对应的网络根目录,确保两者内容一致且无需手动干预。底层机器配置参考“新服务器的第一步”,完整配置存储在实验室仓库中,网站仓库包含 GitHub Actions 工作流程。
目前,该网站可在 Tor 地址 dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion 访问。





