Плейлист на Youtube
https://www.youtube.com/playlist?list=PLOp6AT9LJS_OZK4LbRV9WpJXFRbmSg9Mh
Это видео на Дзен
https://dzen.ru/video/watch/6526e8994d4ed96c760a5d01
Плейлист на RUTUBE
https://rutube.ru/plst/328739
Виртуальный сервер, желательно выбрать с двумя ядрами, двумя гигабайтами памяти, диск не важно.
Желательно проверить наличие IPv6, это может помочь работе торрентов.
ping -c3 -6 google.com
Обязательно добавьте swap, часто на VDS нет подкачки, а без него может не работать.
dd if=/dev/zero of=/swapfile bs=1M count=2048
chown root:root /swapfile && chmod 0600 /swapfile
mkswap /swapfile && swapon /swapfile
free -h
echo -e '/swapfile swap swap defaults 0 0' >> /etc/fstab
Для того, что бы боты не пытались подбирать пароль от вашего сервера, давайте поменяем порт SSH на другой
nano /etc/ssh/sshd_config
Port 122
systemctl restart sshd
Сразу настроим nftables. В нашем случае, TorrServer будет слушать все сетевые интерфейсы на порту 8090. Без логина и пароля, ваш сервер будет доступен всему миру и это плохо. Мы откроем только те порты нам потребуются для SSH и nginx, а уже в nginx настроим авторизацию.
В случае с Debian и Ubuntu, конфигурационный файл nftables.conf находится в одном и том же месте.
nano /etc/nftables.conf
Сейчас копирование работает нормально.
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state vmap { invalid : drop, established : accept, related : accept } comment "Разрешим established,related и удалим invalid, входящие"
meta l4proto { tcp, udp } th dport { 80, 122, 443 } ct state new counter accept comment "Разрешим TCP и UDP"
icmp type { destination-unreachable, 9-12 } accept comment "Разрешим не все ICMP"
icmpv6 type { 1-4, 130-136, 141-143 } accept comment "Разрешим не все ICMP6"
iifname lo accept
}
}
В нашем случае, мы настроили только входящий трафик (INPUT), но больше нам и не потребуется ни чего настраивать.
Включаем nftables
systemctl enable --now nftables.service
Проверяем
nft list ruleset
Обновим систему
apt update && apt -y dist-upgrade
И давайте сразу установим все нужные пакеты.
apt -y install wget curl htop nginx certbot apache2-utils logrotate
По желанию, можно немного раскрасить консоль, так будет чутка удобнее пользоваться сервером. Это не обязательно.
wget https://gitlab.com/edmitry2010/bash-scripts/-/raw/main/bash.mody.sh
echo 1 | bash bash.mody.sh; rm -f bash.mody.sh
Если модифицировали bash, тогда надо будет пере логиниться на сервере.
Для получения сертификата, нам потребуется домен, предлагаю сделать его бесплатно и привязать его к нашему серверу.
Переходим на сайт https://freemyip.com/ в белом поле пишем какой хотим домен третьего уровня и жмём кнопочку ниже. Только не используйте мой torrser, а придумайте свой, т.к. даже если я его освобожу, то он может быть занять кем-то ещё.
После этого, вам выдадут ссылку которая потребуется нам на сервере.
curl https://freemyip.com/update?token=368f61???9ad???ce97&domain=torrser.freemyip.com
Проверить можно так
nslookup torrser.freemyip.com
Когда домен уже привязан к нашему серверу, можно настроить nginx и получить Let’s Encrypt сертификат.
Сделаем папочку для получения сертификата
mkdir -p /var/lib/letsencrypt/.well-known
Укажем этой папочке нужные права. Но для начала нужно посмотреть от какого пользователя запускается nginx в файле /etc/nginx/nginx.conf
chown www-data:www-data /var/lib/letsencrypt/.well-known
Удалим дефолтный сайт nginx
rm -f /etc/nginx/sites-enabled/default
Создаём/заполняем файл, где у нас будет описание домена в nginx
nano /etc/nginx/sites-enabled/torrser.freemyip.com
server {
listen 80;
server_name torrser.freemyip.com;
# Это нужно для получения/обновления сертификата
location ^~ /.well-known/acme-challenge {
allow all;
root /var/lib/letsencrypt/.well-known;
default_type "text/plain";
try_files $uri =404;
}
}
Проверяем всё ли правильно заполнили
nginx -t
И если всё ОК, можно перезапустить nginx
systemctl restart nginx
Получаем сертификат
certbot certonly --webroot --agree-tos --email etest@mailoe.ru --webroot-path /var/lib/letsencrypt/.well-known -d torrser.freemyip.com
В дальнейшем, служба certbot будет обновлять ваш сертификат самостоятельно, каждые три месяца вроде).
Однако, что бы новый сертификат подгружался в nginx, nginx потребуется перечитать настройки. Это можно настроить в logrotate, добавлением одной строчки.
nano /etc/logrotate.d/nginx
nginx -s reload
Если честно, ни разу не пользовался этим приёмом, но если подумать, то ротация логов происходит ежедневно и так же ежедневно он будет перечитывать настройки.
Дальше, нам потребуется файл с нашими логин/пароль, мы его укажем в location / нашего сайта.
htpasswd -nb dmitry dmitry12345678 > /etc/nginx/htpasswd
Если будет желание поменять логин/пароль, просто повторите эту команду с другими логин/пароль. Только у меня просьба, не делайте таких простых паролей).
htpasswd -nb dmitry 1234 > /etc/nginx/htpasswd
После удачного получения сертификата и создания логин/пароль, меняем наш конфиг для nginx на такой.
nano /etc/nginx/sites-enabled/torrser.freemyip.com
server {
listen 80;
server_name torrser.freemyip.com;
# Это нужно для получения/обновления сертификата
location ^~ /.well-known/acme-challenge {
allow all;
root /var/lib/letsencrypt/.well-known;
default_type "text/plain";
try_files $uri =404;
}
# Принудительное перенаправление на https
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name torrser.freemyip.com;
access_log /var/log/nginx/torrser.freemyip.com_access.log;
error_log /var/log/nginx/torrser.freemyip.com_error.log;
ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=31536000";
ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4;
ssl_early_data on;
# Включаем ответы OCSP
resolver 127.0.0.1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_certificate /etc/letsencrypt/live/torrser.freemyip.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/torrser.freemyip.com/privkey.pem;
# Это нужно для получения/обновления сертификата, пописываем повторно, т.к. у нас включено перенаправление на https
location ^~ /.well-known/acme-challenge {
allow all;
root /var/lib/letsencrypt/.well-known;
default_type "text/plain";
try_files $uri =404;
}
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Проверяем всё ли правильно заполнили
nginx -t
И если всё ОК, можно перезапустить nginx
systemctl restart nginx
или перечитаем настройки, можно и так
nginx -s reload
Проверим какие порты у нас работают на сервере
ss -tulnp
Установку TorrServer, будем делать от другого пользователя, у которого не будет ни пароля, ни прав на сервере.
Создадим такого пользователя
useradd -m torrserver
Для удобства, укажем этому пользователю bash при авторизации (bash в конце строки)
nano /etc/passwd
torrserver:x:1001:1001::/home/torrserve:/bin/bash
Авторизуемся под новым пользователем
su - torrserver
Мы сразу попадаем в домашний каталог нового пользователя, убедиться можно так
pwd
TorrServer находится на github вот здесь. Можете перейти туда и взять от туда ссылку https://github.com/YouROK/TorrServer/releases
Качаем последнюю версию
wget https://github.com/YouROK/TorrServer/releases/download/MatriX.125/TorrServer-linux-amd64
Делаем его исполняемым
chmod +x TorrServer-linux-amd64
И переименуем для удобства
mv TorrServer-linux-amd64 torrserver
Выходим из под пользователя torrserver, возвращаемся под root и уберём возможность логиниться по пользователем torrserver
nano /etc/passwd
torrserver:x:1001:1001::/home/torrserve:/bin/nologin
Теперь ни кто не сможет залогиниться под torrserver
Если вам потребуется опять зайти под пользователем torrserver, потребуется опять поменять nologin на bash
Напишем службу для запуска
nano /etc/systemd/system/torrserver.service
[Unit]
Description=torrserver
After=network.target nginx.service
[Service]
User=torrserver
Group=torrserver
Type=simple
NonBlocking=true WorkingDirectory=/home/torrserver
ExecStart=/home/torrserver/torrserver --path /home/torrserver
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
Включим службу автозапуск, за одно и активируем
systemctl enable --now torrserver.service
Проверим какие порты у нас работают на сервере
ss -tulnp
В итоге, для работы сайта, должны быть заняты порты 80, 443 и 8090
Всё, переходим в браузере по нашему домену, вводим логин/пароль и пользуемся.
Как пользоваться, я показал в видео.
Для того что бы была возможность пользоваться этим сервером на телевизоре, нам потребуется настроить L2 сеть с этим сервером, а это уже не просто и совсем другая история).