FastDL-сервер на nginx для игр на движке source

Привет! Сегодня я так же подробно, как и в первой статье, покажу, как поднять свой FastDL-сервер на Debian-подобных системах.

Установка и настройка nginx

Сначала качаем сам nginx:

sudo apt install nginx

Теперь нужно создать директорию для контента.

Иерархия FastDL такая же, как и у игрового сервера, поэтому можно использовать сам игровой сервер в качестве папки для контента (если FastDL на той же машине), но это небезопасно.

nginx по дефолту считает за рут директорию /var/www/html, но я предлагаю использовать /var/www/fastdl/tf. Создаем:

sudo mkdir /var/www/fastdl

sudo mkdir /var/www/fastdl/tf

Теперь переходим к настройке nginx. Все конфиги находятся по пути /etc/nginx. Главный конфиг — nginx.conf, его трогать не будем. Все дополнительные конфиги находятся по пути /etc/nginx/sites-enabled/ – туда мы и поместим наш конфиг.

Удаляем стандартный конфиг:

sudo rm /etc/nginx/sites-enabled/default

Создаем свой:

sudo nano /etc/nginx/sites-enabled/fastdl.conf

Вставляем это:

server {
        listen 27000 default_server;      #Слушаем 27000 порт
        server_name ;  #Ставим имя сервера как ip

        location / {                      #Для локации "/" (http:///) будут действовать следующие правила

                root /var/www/fastdl;     #Устанавливаем локацию /var/www/fastdl как корень для локации "/"
        }
}

Перезагружаем:

sudo service nginx restart

Это все. Основной конфиг редактировать не надо.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Настройка игрового сервера

На игровом сервере открываем конфиг server.cfg. Добавляем это:

sv_allowdownload 1   // Разрешает клиенту скачивать файлы с сервера
net_maxfilesize 100   // Максимально разрешенный размер файла в мегабайтах
sv_downloadurl "http://:27000/tf"  // Ссылка на FastDL-сервер

Теперь или перезагружаем сервер, или переподключаем конфиг:

exec server   //Или как он там у вас называется

Ну вот и все, стандартный FastDL-сервер работает!

Если нужно добавить карту на сервер, то закидываем ее в папку maps на игровом сервере и кидаем в папку maps по пути /var/www/fastdl/tf/maps.

Также для дополнительного ускорения загрузки можно использовать сжатие bzip2:

bzip2 <название_карты>

Внимание: после работы bzip2 оригинальный файл удаляется, остается только архив с ним.

Настройка SSL и firewall

Дополнительная часть. Сделать SSL можно, если у вас есть домен. 

Важно! Самоподписанные сертификаты не поддерживаются.

Качаем certbot:

sudo apt install certbot

sudo apt install python3-certbot-nginx

Теперь нужно в самый низ конфига nginx добавить это:

server {
        listen 80 default;
        server_name <ДОМЕН>;
}

<ДОМЕН> замените на ваш домен.

Запускаем:

sudo certbot --nginx

Проходим все инструкции, которые дает certbot.

После этого certbot добавит в наш конфиг редирект с 80 на 443 порт:

server {
        if ($host = <ДОМЕН>) {
                return 301 https://$host$request_uri;
        } # managed by Certbot

        listen 80 default;
        server_name <ДОМЕН>;
}

Так как мы используем 27000 порт, то удаляем и комментируем все, что осталось.

Этот отрезок конфигурации вам понадобится для обновления сертификата. Сертификат выписывается на 3 месяца.

Должно получиться так:

#server {
#        listen 80 default;
#        server_name <ДОМЕН>;
#}

И еще нужно изменить конфиг, который добавили ранее. Результат:

server {
        listen 27000 ssl;                         #Слушаем 27000 порт с SSL
        server_name <ДОМЕН>;                      #Ставим имя сервера как домен

        location / {                              #Для локации "/" (https:///) использовать следующие правила
                ssl on;                           #Включает SSL

                #Следующие три – это файлы с ключами
                ssl_certificate /etc/letsencrypt/live/<ВАШ_ДОМЕН>/fullchain.pem;
                ssl_certificate_key /etc/letsencrypt/live/<ВАШ_ДОМЕН>/privkey.pem;
                ssl_dhparam /etc/letsencrypt/ssl-dhparams.peml; 

                root /var/www/fastdl;              #Устанавливаем локацию /var/www/fastdl как рут для локации "/"
        }
}

Сохраняем и перезагружаем nginx:

sudo service nginx restart

Теперь у нас есть работающий SSL на веб-сервере.

В последнюю очередь в конфиге на игровом сервере меняем sv_downloadurl:

sv_downloadurl "https://<ДОМЕН>:27000/tf" //Ссылка на FastDL-сервер

Обратите внимание на то, чтобы стоял https вместо http.

Ставим firewall (ufw)

Устанавливаем:

sudo apt install ufw

Добавляем правила:

sudo ufw allow 27000
sudo ufw allow <порт_игрового_сервера_(если_есть)>
sudo ufw allow 
sudo ufw allow 

Активируем:

sudo ufw enable

Ну вот и все! У вашего сервера теперь есть свой FastDL, и клиентам не придется ждать долгой загрузки контента.

Если что-то не работает, то пишите в комментариях, я попытаюсь решить вашу проблему. До новых встреч!

источник

Related Posts