Можно ли разместить мой веб-интерфейс Transmission или uTorrent на моем веб-сервере? У них есть веб-интерфейс локальной сети, и я не хочу портировать вперед ... Можно ли как-то настроить его для входа на мой сервер и размещения там интерфейса?
2 ответа
Хорошо, так как вы все попросили об этом, вот оно.
Вы можете настроить его, чтобы получить доступ к веб-интерфейсу через учетную запись веб-хостинга, со следующими ограничениями:
- Фактический интерфейс будет по-прежнему размещаться на вашем торрент-клиенте, но вы сможете получить к нему доступ через свой веб-сайт.
- Ваш хост должен разрешить удаленный порт перенаправления (
ssh -R
). Большинство хостов VPS позволят это; общего хостинга, вероятно, не будет. - Ваш хост должен позволять вам настраивать Apache с помощью директивы
ProxyPass
, что означает, что у вас должен быть доступ на запись к некоторой части конфигурации Apache (не к файлам.htaccess
), а ваш хост должен загружать (или позволять загружать)mod_proxy
в Apache. - Ваш хост должен разрешить установку открытого ключа SSH, чтобы вы могли пережить отключение ssh без необходимости ввода пароля для повторного подключения.
Вот основная идея. Давайте назовем порт, которым ваш веб-интерфейс обслуживается локально через порт 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
со следующим содержимым:
#!/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
Когда вы запустите это, вы должны получить приглашение оболочки с сервера без ввода пароля; это хорошо. Оставьте этот скрипт запущенным.
(На этом этапе вы можете проверить, действительно ли удаленный хост прослушивает порт S, запустив netstat -tnlp | grep :S
в оболочке сервера.)
Теперь нам нужно настроить Apache. Вам просто нужно добавить это в вашу конфигурацию Apache (она не будет работать с файлами .htaccess
):
ProxyPass /torrentweb http://localhost:S/
Снова замените S выбранным портом прослушивания. Перезапустите Apache.
Если это все сработало, когда вы заходите на http://yourwebsite.example.com/torrentweb
вы должны увидеть веб-интерфейс вашего торрент-клиента.
Обратите внимание, что вы можете запустить клиент ssh в другом окне, чем веб-хостинг; просто настройте "localhost" в строке ssh
скрипта, чтобы он соответствовал IP-адресу или имени хоста машины, на которой запущен веб-интерфейс torrent.
Что касается загрузки mod_proxy
, вот как модуль загружается в Debian:
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
Путь к mod_proxy.so
может отличаться в зависимости от того, как ваш дистрибутив размещает содержимое пакета в файловой системе.
Переадресация порта послужила бы подходящим ответом ... Работает без нареканий.