Pull to refresh

Comments 34

Спасибо за отличную статью! Очень ностальгичненько. Помню, как бесконечно отвисали на серверах Quake III E+. Если кому-то лень там что-то устанавливать и настраивать (firewall всё равно придётся настроить), то вот есть сервант прямо в Docker. Я не пробовал и не знаю, есть ли там ресурсы.

Хотя, конечно же я за классический подход как в статье.

Excessive plus прям ностальгия ) играл в 2009-2011, жаль сейчас никого нет онлайн..

Я где-то с 2006 по 2010. На madsod, потом на rail немного. Но rail мне уже не нравился.

Я вот тоже держу сервера Quake 3 в локации Беларуси, где-то с 2009 года, теперь последние там. Онлайн за все время заметно упал, но до сих пор несколько раз в день кто-то заходит. Правда сервера же мультиплеерные, а с ботами одному скучно.
Базирую сервера не на ioquake, а на ExcessivePlus.

Могу добавить пару замечаний к статье - чтобы сервер видело больше игроков из разных сообществ и модов, желательно добавить побольше мастер-серверов в список, для более широкого анонса сервера.
Как минимум 3 основных мастера должны быть в конфиге (последний, думаю, будет по дефолту):

set sv_master1 "master0.excessiveplus.net:27950" //мастер e+ мода
set sv_master2 "master.quake3arena.com:27950" //мастер официальной игры
// (неужели его до сих пор держит компания - текущий владелец???)
set sv_master3 "master.ioquake3.org:27950" //мастер ioquake мода

Также в протоколе мастер-клиент (уже не помню точное название, но оно у него когда-то было, этот стандарт применялся не только для Quake, но и многих других игр того периода), относящемся к вышеупомянутому анонсированию сервера в мастер-серверах и отображению в списках игровых серверов клиента есть уязвимость. Она позволяет проводить DOS-атаки через амплификацию трафика посредством UDP пакетов с игровыми getstatus/getinfo запросами, с подменой IP отправителя (становится жертвой-получателем). Для защиты от этого профессиональные проекты имели некие продвинутые скрипты/конфиги для *nix файерволов, например iptables. Также в некоторые игровые моды (в ioquake - точно) была встроена защита от этой атаки, но она недостаточна. Я адепт windows-хостинга и в этом случае писал собственный файервол, который при превышении числа запросов getstatus/getinfo в секунду на IP помещал таковой IP в список блокировки. Конкретно для держателя сервера уязвимость неприятна прежде всего высокой нагрузкой на процессор и сеть, что отрицательно сказывается на качестве игры (лаги, пинг).

Справедливости ради - в статье рассказывается о закрытом сервере, который не регистрируется на внешних серверах:

sv_dedicated 1

Поэтому те проблемы у него решены.

Онлайн за все время заметно упал

я ушел в quakelive и возвращаться в q3 не вижу ни единой причины

А он живой?

ffa в понедельник вечером, clan arena раза в 3-4 побольше по наполнению игроками.

QL после долгого перерыва силами комьюнити обрёл второе дыхание, сейчас проводятся еженедельные турниры и лига. Есть трансляции на твиче, каналы в телеге и дискорде. Добро пожаловать: 250fps . ru, 250fps . com

Добавлю: ещё есть большое комьюнити вокруг серверов q3msk . net

Но там старый добрый Q3A, есть серверы для дуэлей, ффа и фризтага, народ есть постоянно.

К счастью, третий квейк кроссплатформенный.

для не предвзятых, можно на самом сервере запустить еще и https://github.com/inolen/quakejs
что поможет создать 1 сервер без нужды скачивать клиенты

JavaScript в данном случае лучше поместить в преисподню... Кто эти люди, которые делают этот ад? Астанавитесь!

Спасибо за предоставленную возможность поностальгировать. Помню, как в институте мы маскировали Quake III под Delphi. А сами файлы игры размещали в локальной сети в архиве, который еще специально модифицировали, чтобы админ не догадался.

А есть еще народ, который помнит первый Quake под МS DOS?

Не только помню, но и регулярно перепрохожу ) На современных системах в него можно поиграть, установив vkQuake.

Я использовал DOSBox и настраивал сеть, когда захотелось по сети с друзьями поиграть.

А есть еще народ, который помнит первый Quake под МS DOS?

Мы, как Ленин, живее всех живых :)

На маке приложение не запустилось, потому что было помечено карантином. Чтобы починить, выполните команду

xattr -cr /path/to/ioquake.app

Включить firewall UFW, предварительно добавив в него исключения для порта 22 (ssh) и 27960 (quake 3 arena)

А что будет если этого не сделать? Ничего не поменяется. Ну и зачем делать лишние телодвижения? Если порт не слушается никем, то он итак закрыт и без фаерволла. А если вам не нужно пускать кого-то на открытый порт то вам незачем запускать софт который этот порт открывает.

Создать двух пользователей: quake с ограниченными правами, для сервера и q3srv с правами sudo для настройки.

Разве в убунту не создаётся пользователь убунту с sudo правами "искаропки"? Ах да, вы же используете чей-то сервис с кастомной убунтой, по всей видимости.

Настроить ssh: Отключить возможность подключения по ssh от пользователя root. В идеале отключить логин по паролю, оставить только по ключам. Но сие не всегда удобно, поэтому опущу этот момент.

Вот как раз отключать рутовый вход неудобно, а по ключам ходить - удобно. Пароль нужен юзеру (или руту) чтобы залогиниться не по ssh, а в виртуальной локальной консоли, когда сеть сломана или отвалилась.

По итогу, статью можно сократить в три-четыре раза, до небольшой заметки =)

Настройка Ubuntu сервера занимает всего один абзац. И всё в одном скрипте, так что просто вставил да выполнил.

Но вы всегда можете написать статью лучше и элегантнее :).

Спасибо за полезную статью, информация собрана в единое целое и систематизирована. Теперь, нужно попробовать настройки, о которых раньше не догадывался, кстати, установив ubuntu, всегда в качестве теста накатываю q3a. В комментариях, тоже полезные советы, действительно ностальгия и желание поэкспериментировать. Статью, однозначно, в закладки:)

начал писать большой коментарий с примерами, о том что лучше сервисы запускать в виде systemd служб ограничивая им всё что им не требуется, о том что пользователей для сервисов лучше создавать через sysuser.. но на середине процесса удалил всё что написал. замените кваку на xonotic, получите тот же експириенс от самой игры, только не прийдётся тратить время на всё вышеописанное так как в большинстве дистрибутивов всё уже опакечено, остаётся только установить и запустить.

Я долгое время играл в nexius и warsow. Последний ещё может и карты кваки устанавливать. Достаточно прикольные две игры, к сожалению, мертвые сервера.

Проблемав том, что кваку все знают, а эти нет

Проблемав том, что кваку все знают, а эти нет

может быть я не искушённый игрок, но я не вижу никакой разницы между квакой и ксонотиком в плане игрового процесса.

А можете всё же написать этот гневный комментарий пожалуйста, мне для саморазвития.

ну что вы, он не был гневным.

ну попробую коротко:

1) systemd служба для запуска игрового сервера описывается довольно просто, вот пример для valheim:

[Unit]
Description=Valheim dedicated server
Wants=network-online.target
After=multi-user.target network.target network-online.target

[Service]
Type=simple
User=valheim
Group=valheim
Environment="LD_LIBRARY_PATH=/var/lib/valheim/linux64"
EnvironmentFile=/etc/valheim.conf
WorkingDirectory=/var/lib/valheim
ExecStartPre=+/usr/bin/steamcmd +login $STEAM_LOGIN +force_install_dir /var/lib/valheim +app_update 896660 validate +exit $ADDITIONAL_STEAMCMD_FLAGS
ExecStartPre=+/usr/bin/chown -R valheim:valheim /var/lib/valheim
ExecStart=/var/lib/valheim/valheim_server.x86_64 -name $SERVER_NAME -port $PORT -world $WORLD_NAME -password $PASSWORD $ADDITIONAL_FLAGS
Restart=always
RestartSec=30
TimeoutStartSec=300
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
ProtectSystem=strict
ProtectHome=read-only
SystemCallFilter=~@mount
ReadWritePaths=/var/lib/valheim

[Install]
WantedBy=multi-user.target

в случае с квакой вам не понадобится ExecStartPre и Environment разве что.

2) пользователь для службы описывается тоже очень просто:

u valheim - "valheim user" /var/lib/valheim -
g valheim - -
m valheim valheim

3) и даже хомяк для пользователя (он же воркдир для службы) можно описать через tmpfiles:

d /var/lib/valheim 700 valheim valheim

копируем файл службы в /etc/systemd/system/ если руками и в /usr/lib/systemd/system/ если опакечиваем

копируем sysuser файл в /etc/sysusers.d/ если руками и в /usr/lib/sysusers.d/ если опакечиваем

копируем файл tmpfiles в /etc/tmpfiles.d/ если руками и в /usr/lib/tmpfiles.d/ если опакечиваем

вообще sysusers и tmpfiles должны отработать автоматически отслеживая path, но для уверенности можно пнуть их руками: sudo systemd-sysusers && sudo systemd-tmpfiles --create

ну и запускаем службу и ставим её на автозапуск: sudo systemctl enable --now ИмяСервиса.service

почитать:
systemd-sysusers
systemd-tmpfiles
systemd-service
пример опакеченного мной valheim в OBS

вообще магией systemd можно наворотить многое, например выдать сервису отдельный ip и цепочку фаервола, ограничить его потреблением памяти и проца.. конечно всё это можно сделать и без systemd руками, но зачем?

Большое спасибо. А доступ по ссш будет?

а как это вообще связано?
sshd живёт в точно таком же сервисе если что.

Я о другом, прошу понять правильно, с телефона, надо время для погружения, но это же демонизация сервиса? Раз так, то консоль у демона недоступна. И управлять им по ssh невозможно.

лезть по ssh на сервер чтобы выполнить командочку в консольке ioquake3 это уже какой-то оверкил. насколько я помню ioquake3 вполне себе может принимать rcon команды по сети от админа.

впрочем можно извратится запуская сервис внутри systemd в tmux/screen с интерактивом. так делают для сервера terraria потому что там иначе не получится. но имхо это костыли и фу-фу-фу

Проще говоря, не вариант.

Об rcon описано, но rcon не всё умеет. А иногда надо что-то добавить, попробовать, убрать. Понятно. Пока что tmux и описанный в статье вариант будет удобнее и практичнее.

Warsow классный, во всём лучше q3, кроме того что он никому не нужен, слишком поздно вышел.

А можете всё же написать этот гневный комментарий пожалуйста, мне для саморазвития.

Кстати,xonitic это тот же nexius, только более тормозной

Конфиги для игры в Quake - первый мой опыт кодинга.. рокетджамп по кнопке, но много хэпэ съедал)

У нас на серверах за скриптовые штуки банили

Sign up to leave a comment.

Information

Website
timeweb.cloud
Registered
Founded
Employees
201–500 employees
Location
Россия
Representative
Timeweb Cloud