Подробный гайд: Настройка FastDL для CS 1.6 через Apache2
FastDL (Fast Download) позволяет игрокам скачивать кастомные карты, модели, звуки и спрайты напрямую с веб-сервера по HTTP, что в разы быстрее стандартной загрузки через игровой сервер. Ниже приведена полная инструкция для настройки на базе Apache2 (Debian/Ubuntu).
Требования
- VPS/выделенный сервер с Debian/Ubuntu
- Уже установленный игровой сервер CS 1.6
- Доменное имя или статический IP (рекомендуется домен с DNS)
- Порт 80 открыт в фаерволе
- root или sudo доступ
Важно по HTTPS:
Движок GoldSrc (CS 1.6) использует устаревший HTTP-клиент. HTTPS работает нестабильно на многих современных серверах из-за TLS 1.2/1.3 и шифров. Рекомендуется использовать HTTP. Если нужен HTTPS, потребуется отключить современные шифры и настроить Apache под TLS 1.0/1.1, что снижает безопасность. Для FastDL HTTP считается стандартом.
Шаг 1: Установка Apache2 и включение модулей
sudo apt update
sudo apt install apache2 -y
# Включаем необходимые модули
sudo a2enmod headers expires deflate rewrite mime
sudo systemctl restart apache2
Шаг 2: Создание структуры папок FastDL
FastDL должен зеркалить структуру папок игры. Для CS 1.6 это обычно cstrike/.
sudo mkdir -p /var/www/fastdl/cstrike/maps
sudo mkdir -p /var/www/fastdl/cstrike/models
sudo mkdir -p /var/www/fastdl/cstrike/sound
sudo mkdir -p /var/www/fastdl/cstrike/sprites
sudo mkdir -p /var/www/fastdl/valve # если нужны файлы из valve/
Правило размещения:
Файл custom_map.bsp кладётся в /var/www/fastdl/cstrike/maps/custom_map.bsp.
Клиент будет запрашивать: http://ваш-домен/cstrike/maps/custom_map.bsp
Шаг 3: Настройка прав доступа
Apache должен иметь права на чтение файлов.
sudo chown -R www-data:www-data /var/www/fastdl
sudo find /var/www/fastdl -type d -exec chmod 755 {} \;
sudo find /var/www/fastdl -type f -exec chmod 644 {} \;
Шаг 4: Создание виртуального хоста Apache
sudo nano /etc/apache2/sites-available/fastdl.conf
Вставьте конфигурацию (замените your_domain_or_ip на ваш домен или IP):
<VirtualHost *:80>
ServerName your_domain_or_ip
ServerAdmin admin@your_domain
DocumentRoot /var/www/fastdl
<Directory /var/www/fastdl>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Явное указание MIME-типов для файлов CS 1.6
AddType application/octet-stream .bsp .mdl .wav .spr .res .txt .cfg
# Логирование (опционально)
ErrorLog ${APACHE_LOG_DIR}/fastdl_error.log
CustomLog ${APACHE_LOG_DIR}/fastdl_access.log combined
</VirtualHost>
Активируйте сайт и перезапустите Apache:
sudo a2ensite fastdl.conf
sudo a2dissite 000-default.conf # если не нужен дефолтный сайт
sudo systemctl reload apache2
Шаг 5: Настройка .htaccess для кэширования и сжатия
Создайте файл в корне FastDL:
sudo nano /var/www/fastdl/.htaccess
Вставьте:
# Отключаем листинг директорий (безопасность)
Options -Indexes
# Включаем сжатие для текстовых и бинарных файлов
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/xml text/css application/javascript application/json application/octet-stream
</IfModule>
# Кэширование на стороне клиента (30 дней)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/octet-stream "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/javascript "access plus 30 days"
Header set Cache-Control "public, max-age=2592000"
</IfModule>
# Разрешаем кросс-доменные запросы (необязательно, но полезно для CDN)
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
Проверьте, что AllowOverride All указан в конфиге хоста (шаг 4), иначе .htaccess игнорируется.
Шаг 6: Настройка игрового сервера CS 1.6
В server.cfg или в строке запуска добавьте:
sv_allowdownload 1
sv_allowupload 0 # Не включайте! Это дыра в безопасности
sv_downloadurl "http://your_domain_or_ip/" # ОБЯЗАТЕЛЬНО заканчивайте слешем /
sv_consistency 0 # 1 если используете WHBlocker/Rechecker, иначе 0
Важно:
sv_downloadurl должен указывать на корень FastDL, а не на подпапку cstrike/. Игра сама добавит нужный путь.
Перезапустите сервер CS 1.6.
Шаг 7: Проверка работы
- Загрузите тестовый файл, например
test.bsp, в/var/www/fastdl/cstrike/maps/test.bsp
2. Откройте браузер:
http://your_domain_or_ip/cstrike/maps/test.bsp - должно начаться скачивание или отобразиться бинарный файл.
3. Зайдите на сервер CS 1.6 с другого ПК/бота.
4. В консоли сервера должны появиться строки:
Client "Player" downloading cstrike/maps/test.bsp from http://your_domain/
5. Проверьте логи Apache:
sudo tail -f /var/log/apache2/fastdl_access.log
Типичные проблемы и решения
| Проблема | Причина | Решение |
|---|---|---|
Failed to download в клиенте |
Нет слеша в sv_downloadurl |
Добавьте / в конце URL |
403 Forbidden |
Нет прав на чтение или Options -Indexes + запрос папки |
Убедитесь, что клиент запрашивает файл, а не папку. Права 644/755, владелец www-data |
404 Not Found |
Файл не в той папке или путь не зеркалит cstrike/ |
Проверьте структуру: /var/www/fastdl/cstrike/maps/map.bsp |
| Скачивание идёт медленно | Нет кэширования/сжатия, слабый сервер | Включите mod_deflate, mod_expires, рассмотрите CDN |
| Клиент не скачивает через HTTPS | GoldSrc не поддерживает современные TLS | Переключитесь на HTTP или настройте Apache под TLS 1.0 + RC4 (не рекомендуется) |
sv_downloadurl игнорируется |
Сервер запущен без +sv_allowdownload 1 или конфиг не применяется |
Проверьте server.cfg, перезапустите сервер |
Оптимизация и безопасность
1. Отключите логирование запросов к .bsp если место на диске критично:
SetEnvIf Request_URI "\.bsp$" dontlog
CustomLog ${APACHE_LOG_DIR}/fastdl_access.log combined env=!dontlog
2. Ограничьте rate-limit (защита от DDoS на загрузки):
Установите mod_evasive или используйте fail2ban для Apache.
3. Используйте CDN (Cloudflare, BunnyCDN):
Настройте Pull Zone на /var/www/fastdl или подключите домен через CDN. Ускорит загрузку для игроков из других регионов.
4. Автообновление карт:
Напишите bash-скрипт, который синхронизирует папку cstrike/ игрового сервера с /var/www/fastdl/cstrike/ через rsync или inotifywait.
5. Резервное копирование:
Регулярно бэкапьте /var/www/fastdl, особенно кастомные модели и звуки.
Итог
- Apache2 настроен как отдельный виртуальный хост
- Структура папок зеркалит
cstrike/ - MIME-типы, кэширование и сжатие активны
sv_downloadurlуказан корректно с/в концеsv_allowuploadотключён для безопасности
После применения гайда ваши игроки будут загружать карты за секунды вместо минут, а нагрузка на игровой сервер снизится на 70-90%.