我最近为我的网站创建了一个.onion镜像。
\ 为什么?因为为什么不呢?而且因为我能做到。哦,还有言论自由、反审查和所有那些东西。
\ 我想假装这是一个宏大的技术挑战,但如果我完全坦诚的话,它只需要3个命令和4行配置。
\ 如果你也想成为暗网的一员,以下是我的做法:
在我们深入了解"如何"做这一切之前,我应该先简要概述一下我进入洋葱宇宙之前的技术栈是什么样的:
首先,我们需要安装Tor。在Debian上,它就在默认仓库中:
sudo apt update sudo apt install tor
接下来,我们需要配置Tor为我们的网站创建一个隐藏服务。在你喜欢的CLI文本编辑器中打开Tor配置文件(/etc/tor/torrc)(最好是vim,否则你对我来说就是死人)。我对在我的VPS上运行中继或出口节点没有兴趣,所以我对配置文件做了一些最小的更改,它应该看起来像这样(为了清晰起见,注释已删除):
# 禁用SOCKS代理,因为我们不通过Tor进行出站连接 SocksPort 0 # 确保Tor作为守护进程运行(即在后台) RunAsDaemon 1 # 在端口80上设置隐藏服务,这是我们告诉Tor为我们的网络服务器创建.onion服务的地方 HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 80 # 禁用入站连接,因为我们不运行中继或出口节点 ORPort 0 # 禁用目录服务,因为我们不会将目录信息镜像到其他Tor节点 DirPort 0
\ 就是这样。其他所有内容都应该使用#字符注释掉。
现在,我们需要重启Tor服务以应用我们的更改:
sudo systemctl restart tor
Tor重启后,它将为我们生成一个新的隐藏服务。我们可以在我们之前指定的HiddenServiceDir(/var/lib/tor/hidden_service/)中找到我们的新.onion地址。这个目录只有debian-tor用户可读,所以我们需要使用sudo来读取里面的hostname文件:
sudo cat /var/lib/tor/hidden_service/hostname
\ 终端上打印的将是你的新.onion地址。它应该看起来像这样:
jytkco7clxwj4hhzaydhk4kr3hwzsdzyvtsc6zn2ivog5uma5pxowzad.onion
我的Caddy服务器在端口80上提供我的网站,没有任何IP或域名限制,所以我不需要对我的Caddy配置做任何更改,但是,如果你明确设置你的Caddy服务器只响应某些域名或IP地址,你需要为你的.onion地址添加一个新的站点块,它看起来会像这样:
http://jytkco7clxwj4hhzaydhk4kr3hwzsdzyvtsc6zn2ivog5uma5pxowzad.onion:80 { # 设置反向代理,或提供静态文件等 }
\ 因为你无法为.onion地址获取HTTPS证书,所以你需要通过普通HTTP提供你的网站。我不确定这在Tor网络中是否普遍被认为是可接受的(也许我的几十个读者中的一个可以启发我),但无论如何我不需要为我的网站使用HTTPS,所以它适合我的目的。
如果你希望人们找到你的.onion网站,你需要在某处宣传它。我喜欢微妙的方式,所以我在我的主站点上设置了一个指向我的.onion地址的Onion-Location头。这样,任何使用支持Tor的浏览器访问我的常规网站的人都会自动被告知我的.onion镜像的存在,而不会有任何侵入性的弹出窗口、横幅或额外的UI元素。
\ 要做到这一点,你需要在你的主Caddy站点块中添加一个头,如下所示:
header { Onion-Location http://jytkco7clxwj4hhzaydhk4kr3hwzsdzyvtsc6zn2ivog5uma5pxowzad.onion{uri} }
\ 我在末尾添加{uri}的原因是,如果有人访问我的主站点上的特定页面(例如https://flower.codes/some-post),Onion-Location头将指向他们到我的.onion站点上的等效页面(http://jytkco7clxwj4hhzaydhk4kr3hwzsdzyvtsc6zn2ivog5uma5pxowzad.onion/some-post),这(至少对我来说)为体验增添了一些光彩。
开玩笑的。
\ 此时,你的.onion镜像应该已经启动并运行。你可以通过在任何支持Tor的浏览器(如Tor浏览器,甚至是内置Tor支持的Brave)中访问你的.onion地址来测试它。


