在暗网(Tor)上自托管网站
本站现在可以通过 Tor 以隐藏服务的方式访问,地址是一个只有在 Tor 网络内才能解析的 .onion 地址。1 1
用
Tor Browser 打开即可。这里没有证书颁发机构,没有 DNS,也不暴露 IP——地址直接由公钥派生,连接由 Tor 本身进行端到端加密。
Tor
会让你的流量经过数千台志愿者运营的服务器进行中转和加密,从而让任何一方都无法把你的身份和你在做什么联系起来;而隐藏服务则把这种匿名性延伸到了服务器一端。
Tor 由非营利组织 Tor Project 开发,他们通过自由软件和开放网络推动人权与自由,让每个人都能在不受跟踪、监控和审查的情况下使用互联网。这个网络之所以能运转,正是因为有人在使用它,所以不妨考虑 捐助 或运行一个中继节点——你的贡献能帮助数百万人每天在网上保持安全和隐私。
隐藏服务 §
安装 Tor,把一个隐藏服务指向本地端口。编辑
/etc/tor/torrc
HiddenServiceDir /var/lib/tor/blog/
HiddenServicePort 80 127.0.0.1:8080
该目录必须是 Tor 专用的路径,不能是网站根目录。2 2
Tor 会把服务的私钥和 hostname 文件存放在这里,并坚持独占该目录(chmod 700,属主为
debian-tor)。如果把它指向你的网站文件,Tor 会拒绝启动。
重启 Tor,读取生成的地址
$ sudo systemctl restart tor@default
$ sudo cat /var/lib/tor/blog/hostname
dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion
提供网站服务 §
Tor 会把 onion 地址的 80 端口转发到 127.0.0.1:8080,所以 Web 服务器只需监听这个端口即可。为它添加一个 nginx server 块——不需要 TLS、HTTP/2 或 QUIC,因为 Tor 只走普通 TCP,并自带加密。
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 访问。
为 Onion 构建网站 §
静态站点会将基础 URL 烘焙到绝对链接中,因此为 Clearnet 构建的版本即使通过 Tor 提供,也会将访客引回 Clearnet 域名。解决方法是构建一份以 Onion 地址为基础 URL 的副本。
$ hugo --minify --baseURL="http://dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion/"
部署流水线会自动完成这一过程:每次推送都会为每个目标——Clearnet 和 Tor——构建一次网站,并分别通过 rsync 同步到各自的 Web 根目录,从而无需手动操作即可保持两者同步。3 3 底层机器配置详见 《新服务器入门指南》;完整配置位于我的 Homelab 仓库中,而构建并部署 Tor 副本的 GitHub Actions 工作流则保存在站点自身的仓库里。
就这样。你可以通过 Tor 在 dhevt6e4rtgbtr3jh53xrpwmgtilkah6nyjujocsspssrsexc7omxhid.onion 上阅读本站。