托管在 Web 服务器上的 uTorrent 或 Transmission Web 界面

托管在 Web 服务器上的 uTorrent 或 Transmission Web 界面

是否可以在我的 Web 服务器上托管 Transmission 或 uTorrent Web 界面?它们有一个本地网络 Web 界面,而我不想进行端口转发...我能否以某种方式对其进行配置,以便登录到我的服务器并在那里托管界面?

答案1

好的,既然大家都要求一个解决方案,那就在这里。

您可以进行设置,以便可以访问 Web 界面通过您的网络托管帐户,具有以下限制:

  • 实际界面仍将由您的 torrent 客户端托管,但您将能够通过您的网站访问它。
  • 您的主机必须允许远程端口转发 ( ssh -R)。大多数 VPS 主机都允许此功能;共享主机可能不允许。
  • 您的主机必须允许您使用指令配置 Apache ProxyPass,这意味着您必须对 Apache 配置的某些部分(不是.htaccess文件)具有写权限,并且您的主机必须加载(或允许您加载)mod_proxy到 Apache 中。
  • 您的主人应该允许安装 SSH 公钥,这样您就可以在 ssh 断开连接后无需输入密码重新连接。

这是基本思路。我们将本地提供 Web 界面的端口称为 L 端口。在 49152-65535 范围内随机选择某个端口并将其称为 S;这是服务器将要监听的端口。

为该设置创建一个 SSH 密钥,并且不要使用密码加密私钥(出现提示时按 Enter)。ssh-keygen为此使用。(ssh-keygen -f $KEY_OUTPUT_PATH-- 选择一些文件$HOME/torrentproxy.key作为输出路径。)然后在服务器上安装公钥:ssh-copy-id -i $KEY_OUTPUT_PATH.pub user@yourwebhost

torrent-ssh-proxy.sh创建一个包含以下内容的shell 脚本:

#!/bin/sh

while true; do
    # Replace S and L with the ports chosen above.
    # Replace $KEY_OUTPUT_PATH with the path to your SSH private key.
    ssh -i $KEY_OUTPUT_PATH -R S:localhost:L user@yourwebhost

    echo 'Disconnected from server.'
    sleep 5
done

运行此脚本时,您应该会收到来自服务器的 shell 提示,无需输入密码;这很好。让此脚本继续运行。

(此时,您可以通过netstat -tnlp | grep :S在服务器 shell 中运行来验证远程主机是否确实在监听端口 S。)

现在我们需要配置 Apache。你只需要将其添加到你的 Apache 配置中(它不能从.htaccess文件中运行):

ProxyPass /torrentweb http://localhost:S/

再次,用所选的监听端口替换 S。重新启动 Apache。

如果这一切都成功了,当您去的时候http://yourwebsite.example.com/torrentweb您应该会看到您的 torrent 客户端的 Web 界面。

请注意,您可以在与 Web 主机不同的机器上运行 ssh 客户端;只需调整脚本中的“localhost”行ssh以匹配运行 torrent Web 界面的机器的 IP 地址或主机名。


关于加载mod_proxy,这是在 Debian 上模块的加载方式:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so

mod_proxy.so根据发行版在文件系统中排列包内容的方式,路径可能会有所不同。

答案2

端口转发本来是一个合适的答案...它运行完美。

相关内容