RE:NODE

Руководства17 мин чтения

Хостинг сервера Squad: лицензия, конфиги, порты и tick rate

Выделенный сервер Squad: лицензия Offworld и её условия, Server.cfg, Admins.cfg, RCON, пять портов, моды из Workshop и как удержать 50 Гц.

Обновлено

0 прочтений

Сервер Squad - это две задачи под одним пальто. Первая административная: без лицензии Offworld Industries сервер работает прекрасно, но попадает во вкладку Custom Servers, а не в основной браузер серверов, а у лицензии есть условия - число слотов в определённых границах, настоящий состав админов, постоянно открытый доступ, - которые определяют, какое именно сообщество вы возьмётесь вести, ещё до того, как вы потратили хоть копейку на железо. Вторая задача - железо, и она проще, чем кажется. Сто игроков, их техника и снаряды - это один игровой поток Unreal Engine. Тактовая частота одного ядра задаёт tick rate, и почти ничего другого на него не влияет. Закладывайте примерно 16 ГБ памяти, ядра, которые вы не делите с чужаком, 60 ГБ быстрого диска и пять открытых портов, а внимание тратьте на лицензию и ротацию слоёв.

Лицензия и что она на самом деле даёт#

Squad делит браузер серверов надвое. Лицензированные серверы показываются на основной вкладке Server Browser. Всё остальное - во вкладке Custom Servers. Работают обе. Обе показывают пинг, число игроков и карту. Разница в том, как вас находят: на основной вкладке оказывается игрок, который запустил игру и нажал Servers, а на Custom - игрок, которому кто-то подсказал, что искать.

Из этого одного факта следует вся стратегия. Если вы держите сервер для Discord-сообщества из сорока постоянных игроков, которые заходят по названию, лицензия не нужна, и подавать заявку - ошибка: вы взяли бы на себя обязательства ради заметности, которая вам не нужна. Если же вы строите публичный сервер на 80 слотов с нуля, лицензия - это вся суть, потому что иначе вас никто не найдёт.

Заявки подаются через license.offworldindustries.com. Политика принадлежит Offworld и меняется, так что перед планированием прочитайте актуальную версию, но на момент написания её общий вид давно стабилен:

  • Границы по слотам. Серверы меньше 80 слотов не лицензируются; ожидается, что они остаются в браузере Custom. Серверы, заявляющие больше 100 слотов, отклоняются.
  • Состав админов. Минимум десять админов на каждый лицензированный сервер, число растёт вместе с числом ваших серверов, а админы должны присутствовать в часы пик.
  • Постоянно публичный. Никакого пароля, никакого скрытия сервера, никакого перевода в приватный режим на клановые вечера. Сотрудники Offworld должны иметь возможность зайти в любой момент.
  • Поведение. Лицензированные серверы соглашаются с правилами сообщества и могут потерять лицензию, если их игнорируют.

Сама лицензия приходит в виде ID и ключа, которые записываются в SquadGame/ServerConfig/License.cfg в том виде, в каком это указано в письме. Относитесь к этой паре как к паролю: она идентифицирует вашу организацию для Offworld, её можно перевыпустить в случае утечки, и ей не место на скриншоте папки с конфигами или в публичном репозитории GitHub. Если вы пользуетесь хостинг-панелью, лицензия лежит в файле на сервере, а не в вашем биллинговом аккаунте, поэтому при смене хостера лицензия не пропадает, - но и любой, у кого есть доступ к файлам, её видит. Это хорошая причина выдавать помощникам субпользователя с нужными правами и не больше.

Несколько настроек в Server.cfg помечены в самом файле как обязательные для лицензированных серверов. Это блок автокика за тимкиллы и AllowCommunityAdminAccess, о них ниже. На нелицензированном сервере вы вправе выставлять их как угодно.

Что нужно серверу: CPU, память и диск#

Squad построен на Unreal Engine, а авторитетная симуляция - движение, регистрация попаданий, физика техники, полёт снарядов - идёт в одном игровом потоке. Дополнительные ядра помогают операционной системе, сетевым потокам и всему остальному на машине, но шаг симуляции быстрее не завершается. Это самый важный факт о размерах для этой игры, и именно поэтому два сервера с одинаковым объёмом RAM могут ощущаться совершенно по-разному.

СлотыRAMCPUРеалистичные ожидания
20-40, пехотные слои8-10 ГБ2 быстрых ядраКомфортно, tick держится высоко
50-60, смешанные слои12 ГБ3-4 быстрых ядраОбычный размер для частного сообщества
80-100, лицензированный публичный16-20 ГБ4+ быстрых ядра, высокая частотаОграничение - tick, а не память
Сильно модифицированный, любой размер20-24 ГБ+4+ быстрых ядраЦеликом зависит от набора модов
  • CPU. Частота важнее числа ядер, без исключений. Полному серверу нужен современный десктопный процессор, держащий выше 4,5 ГГц на нагруженном ядре. Старая серверная модель с 32 медленными ядрами плохо потянет сервер Squad на 100 слотов.
  • Память. Squad не особенно прожорлив для того, чем он является. 16 ГБ хватает для полного ванильного сервера с запасом. Добавление памяти серверу, у которого проседает tick rate, не меняет ровным счётом ничего - как понять, что у вас на самом деле, читайте в статье CPU или RAM: что тормозит ваш сервер.
  • Диск. Установка выделенного сервера велика и росла с каждым крупным релизом. Свежие версии занимают где-то от 30 до 60 ГБ ещё до модов, поэтому если собираетесь ставить контент из Workshop, берите диск на 80 ГБ и проверяйте реальную цифру после первой установки, а не верьте числам из статьи в блоге, включая эту.
  • Общий CPU - ловушка. Вся производительность Squad зависит от того, что один поток получает ядро в момент, когда просит. На перегруженном общем железе у вас поток, который готов работать и ждёт своего кванта, и это проявляется как tick rate, который проваливается в непредсказуемое время суток, а не под нагрузкой. Общий CPU и шумные соседи - это длинная версия того же довода.

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

Установка через SteamCMD#

Выделенный сервер - это бесплатная анонимная загрузка, Steam app id 403240. Учтите, что это не id игры: 393380 - это клиент, и именно этот id используется при загрузке модов из Workshop, на чём многие и спотыкаются.

bash
$ steamcmd +force_install_dir /home/squad/server \    +login anonymous +app_update 403240 validate +quit$ cd /home/squad/server$ ./SquadGameServer.sh Port=7787 QueryPort=27165 beaconport=15000 \    RCONPORT=21114 FIXEDMAXPLAYERS=80 RANDOM=None

В Windows аналогом служит SquadGameServer.exe с теми же аргументами; на хостинге с панелью эту строку вы не набираете вовсе, потому что те же параметры показаны полями на вкладке Startup, и панель собирает команду сама. В любом случае важны такие параметры:

ПараметрТипичное значениеЧто делает
Port7787Игровой трафик. Сервер занимает и следующий по номеру порт
QueryPort27165С этим портом разговаривает браузер серверов
beaconport15000Session beacon, используется при подключении
RCONPORT21114Удалённая консоль, TCP
FIXEDMAXPLAYERS80Жёсткий потолок слотов, независимый от MaxPlayers
MULTIHOME0.0.0.0Какой адрес занимать, если у машины их несколько
RANDOMNoneПеремешивается ли ротация при старте
FIXEDMAXTICKRATE50Целевое число тиков в секунду

Первый запуск создаёт папку с конфигами, а затем загружает первый слой, что на холодном диске без кэша занимает некоторое время. Следите за консолью, пока сервер не сообщит, что уровень загружен и query-порт занят. В статье SteamCMD простыми словами разобраны validate, беты и скрипты обновления, которые понадобятся, когда всё это станет рутиной.

Server.cfg строка за строкой#

Всё, что касается облика сервера и его правил, лежит в SquadGame/ServerConfig/Server.cfg. Файл - обычный Key=Value с комментариями //, и поставляемая версия документирует себя довольно хорошо. Вот строки, которые стоит понимать:

SquadGame/ServerConfig/Server.cfg
ServerName="Longshot Tactical | Teamwork or Leave"ShouldAdvertise=trueIsLANMatch=falseMaxPlayers=80NumReservedSlots=4PublicQueueLimit=25MapRotationMode=LayerListRandomizeAtStart=trueUseVoteFactions=falseUseVoteLevel=falseUseVoteLayer=falseAllowTeamChanges=truePreventTeamChangeIfUnbalanced=trueNumPlayersDiffForTeamChanges=3RejoinSquadDelayAfterKick=180ServerMessageInterval=300RecordDemos=falseAllowPublicClientsToRecord=falseTKAutoKickEnabled=trueAutoTKBanNumberTKs=7AutoTKBanTime=300VehicleKitRequirementDisabled=falseAllowCommunityAdminAccess=true
НастройкаПо умолчаниюЧто решает
ShouldAdvertisetrueПоявляется ли сервер в браузере вообще
IsLANMatchfalseРежим LAN. Поставьте true, и снаружи вас никто не найдёт
MaxPlayers100Число слотов, включая зарезервированные
NumReservedSlots0Слоты для админов и участников внутри MaxPlayers
PublicQueueLimit25Размер очереди. 0 отключает очередь, -1 - без ограничений
MapRotationModeLayerListКакой файл ротации используется и перемешивается ли он
RandomizeAtStarttrueПеремешать ротацию при загрузке
NumPlayersDiffForTeamChanges3Насколько команды могут различаться по численности, прежде чем переход блокируется
RejoinSquadDelayAfterKick180Секунды до того, как кикнутый игрок сможет вернуться в этот отряд
ServerMessageInterval300Секунды между строками из ServerMessages.cfg
AutoTKBanNumberTKs7Число тимкиллов за раунд до автоматического бана
AutoTKBanTime300Длительность этого бана в минутах

Две из этих настроек кусаются. NumReservedSlots вычитается из MaxPlayers, а не добавляется к нему: сервер с MaxPlayers=80 и NumReservedSlots=4 - это публичный сервер на 76 слотов. А ServerName - то, на чём держится вся ваша стратегия поиска в браузере Custom, потому что внутриигровой фильтр ищет по подстроке: вставьте в название запоминающееся слово и скажите игрокам, какое.

Остальная часть папки - набор файлов с одной задачей каждый: Admins.cfg, Bans.cfg, License.cfg, Motd.cfg, ServerMessages.cfg, Rcon.cfg, LayerRotation.cfg, LevelRotation.cfg, ExcludedLayers.cfg, ExcludedFactions.cfg, VoteConfig.cfg и ещё несколько. Точный набор меняется между крупными версиями. Когда руководство велит править файл, которого у вас нет, проверьте, не переименовала ли его ваша версия, прежде чем создавать его вручную: лишний конфиг молча игнорируется, а это худший из возможных видов отказа.

Порты и файрвол#

Squad требует пять портов, и все, кроме RCON, - UDP. Здесь заканчивается большинство обращений вида «сервер запущен, но его никто не видит».

ПортПротоколНазначение
7787UDPИгровой трафик
7788UDPИгровой трафик, порт на единицу выше Port
27165UDPSteam query - браузер серверов
27166UDPQuery, порт на единицу выше QueryPort
15000UDPSession beacon, используется при подключении
21114TCPRCON
UDP 7787-7788UDP 27165TCP 21114только исходящиеbeacon 15000Браузер серверовSteam queryАдмин-инструментSquadJS, RCONСервер Squadодин игровой потокИгрокиклиент игрыSteam / Workshopобновления и моды
Что с каким портом Squad общается

Отсюда два правила. Во-первых, игровой порт и query-порт занимают ещё и номер выше себя, поэтому зазор в один порт между службами на одной машине приведёт к конфликту. Если вы запускаете два сервера Squad на одной машине, разнесите их с запасом - 7787/27165 и 7797/27175, а не 7787 и 7788. Во-вторых, после первоначального рукопожатия Squad использует ещё и высокие эфемерные UDP-порты для отдельных клиентских соединений, поэтому файрвол, который пропускает только шесть перечисленных номеров и ничего больше, порождает игроков, которые подключаются, а потом вылетают по таймауту. Файрвол с отслеживанием состояния, разрешающий established и related трафик, справляется с этим правильно, и открывать диапазон не нужно.

RCON по TCP - особый и опасный случай. Это удалённая консоль с полными правами админа, защищённая паролем, который идёт по сети открытым текстом. Ограничьте его по адресу источника, если файрвол это умеет, не используйте пароль, применяемый где-то ещё, и прочитайте как безопасно пользоваться RCON, прежде чем отдавать данные Discord-боту. В статье порты игровых серверов простыми словами объяснено, зачем query-порты вообще существуют отдельно и что ломается, когда доступна только половина пары.

Админы, группы и RCON#

Admins.cfg состоит из двух частей: вы задаёте группы со списком прав, а потом назначаете группам Steam ID. Файл поставляется с полным списком названий прав в комментариях, и это авторитетный источник для вашей версии.

SquadGame/ServerConfig/Admins.cfg
Group=Admin:changemap,pause,cheat,private,balance,chat,kick,ban,config,cameraman,immune,manageserver,reserve,teamchange,forceteamchange,canseeadminchatGroup=Moderator:kick,ban,chat,teamchange,canseeadminchatGroup=Whitelist:reserveAdmin=76561198012345678:AdminAdmin=76561198087654321:ModeratorAdmin=76561198011112222:Whitelist

Право reserve - это и есть механизм вайтлиста для участников: любой из группы с reserve может занять один из NumReservedSlots, когда сервер полон. Именно этого большинство сообществ и хочет, когда говорит о вайтлисте, и плагин для этого не нужен.

В Rcon.cfg лежат пароль и порт. Поставьте длинный случайный пароль, а если файл предлагает ограничение числа подключений, держите его небольшим.

SquadGame/ServerConfig/Rcon.cfg
Password=8fJq2tVbn4Rz7Lw1Port=21114

Когда RCON работает, админские команды одинаковы, вводите ли вы их в игре через админ-камеру или отправляете в сокет:

КомандаДействие
ListPlayersВсе подключённые игроки с их id и командой
ListSquadsОтряды по командам с их лидерами
AdminBroadcast <text>Сообщение на всех экранах
AdminWarn <name> <text>Личное предупреждение одному игроку
AdminKick <name> <reason>Кик по имени
AdminKickById <id> <reason>Кик по id из ListPlayers
AdminBan <name> <length> <reason>Бан, запись добавляется в Bans.cfg
AdminChangeLayer <layer>Немедленно сменить слой
AdminSetNextLayer <layer>Поставить слой в очередь на следующий раунд
ShowNextMapЧто будет дальше
AdminEndMatchЗавершить раунд прямо сейчас
AdminRestartMatchПерезапустить текущий слой
AdminDisbandSquad <team> <squad>Распустить отряд
AdminRemovePlayerFromSquad <name>Убрать одного игрока из отряда
AdminForceTeamChange <name>Перевести игрока в другую команду

В скриптах предпочитайте формы ById. Имена в Squad содержат клановые теги, символы, похожие на эмодзи, и пробелы, а частичное совпадение имени, попавшее в двух игроков, - это как раз способ забанить не того.

Слои, ротация и голосование#

«Уровень» в Squad - это карта, а «слой» - конкретная версия этой карты: игровой режим, набор фракций, определённая расстановка флагов. Al Basrah AAS v1 и Al Basrah Invasion v2 - два слоя одного уровня, и играются они совершенно по-разному. Ротации строятся из одного или другого, что выбирается через MapRotationMode:

  • LevelList читает LevelRotation.cfg и сам подбирает слой на этом уровне.
  • LayerList читает LayerRotation.cfg и играет ровно те слои, которые вы назвали, по порядку.
  • Варианты _Randomized у обоих перемешивают список.

Для сообщества со своим мнением правильный ответ - LayerList, потому что только этот режим даёт контроль над тем, как течёт вечер. Ротация, в которой тяжёлый танковый слой чередуется с тесным пехотным, и играется лучше, и в среднем обходится дешевле по CPU, чем три насыщенных техникой слоя подряд.

SquadGame/ServerConfig/LayerRotation.cfg
Sumari_AAS_v1GooseBay_Invasion_v1Yehorivka_RAAS_v4Narva_AAS_v1Fallujah_RAAS_v1

Названия слоёв должны в точности совпадать с внутренними названиями игры, и между версиями они меняются, когда карту перерабатывают. Опечатка не вызывает ошибки: запись пропускается, и ротация, полная опечаток, незаметно превращается в ротацию из двух карт. После любого обновления Squad перезапустите сервер и посмотрите в лог, какие слои он загрузил.

ExcludedLayers.cfg и ExcludedLevels.cfg - это вычитающая версия, полезная с LevelList, когда вам нужно всё, кроме трёх карт, которые ненавидят ваши игроки. VoteConfig.cfg настраивает голосование в конце раунда, которое происходит, только если вы включили UseVoteLevel или UseVoteLayer. Голосование любят игроки, и оно постепенно сужает ротацию до тех трёх карт, которые выигрывают каждый раз, так что решать о нём стоит сознательно, а не по умолчанию.

Моды из Workshop#

Моды для Squad берутся из Steam Workshop под app id игры, 393380. На сервере они скачиваются через SteamCMD в SquadGame/Plugins/Mods, и большинство панелей предлагают поле, куда вставляется список id из Workshop через запятую, а загрузка происходит при следующем запуске.

bash
$ steamcmd +force_install_dir /home/squad/server/SquadGame/Plugins/Mods \    +login anonymous +workshop_download_item 393380 2240351000 +quit

Три вещи о модах для Squad, которые не обсуждаются:

  1. У каждого игрока должны быть те же моды той же версии. Для игрового контента нет набора модов, необязательных для клиента. Игрок, который не подписался или у которого старая версия, зайти не может. Это главная причина, по которой серверы Squad с модами остаются небольшими.
  2. Моды бывают огромными. Паки карт занимают по нескольку гигабайт каждый, и на вашем диске, и у каждого игрока. Сервер с четырьмя большими паками требует от новичка загрузки ещё до первого раунда, и многие не станут ждать.
  3. Обновление игры ломает моды, пока авторы их не пересоберут. Крупные версии Squad меняют сборку движка, и мод, скомпилированный под старую, не загрузится. Останавливайте сервер перед обновлением, не позволяйте серверу с модами обновляться автоматически в день патча и храните записанным предыдущий рабочий список модов. Что делать, когда обновление мода всё сломало - общий план действий; моды Steam Workshop на выделенных серверах разбирает, как устроена загрузка, когда она идёт не так.

Названия слоёв из модов записываются в LayerRotation.cfg точно так же, как и ванильные, и именно они чаще всего становятся источником описанной выше проблемы молчаливого пропуска.

Tick rate: как его читать и как удержать#

Браузер серверов показывает tick rate каждого сервера, и это самое честное число в хостинге Squad. 50 Гц - это цель, вокруг которой построена игра. Здоровый сервер держится рядом с ней. Страдающий проседает до двадцати с чем-то, и тогда стрельба ощущается непоследовательной, техника трясётся, а пехота будто телепортируется за углами - ровно те симптомы, которые люди списывают на собственный пинг.

Что влияет на это число, по порядку:

  • Число игроков. Стоимость тика растёт вместе с числом игроков, которых серверу нужно симулировать и информировать. Переход с 60 на 100 нелинеен.
  • Техника и снаряды. Дорога именно физика. Танковый слой с вертолётами - это в несколько раз больше работы, чем пехотный слой с тем же числом игроков.
  • Тактовая частота одного ядра. Всё перечисленное выше ложится на один поток. Это единственный аппаратный рычаг, поднимающий потолок.
  • Моды. Кастомная техника, оружие и большие карты - всё это добавляет работу на каждый тик.

Настройки, которая ускорила бы сервер Squad, упирающийся в CPU, не существует. Ваши варианты - меньше слотов, более лёгкая ротация, меньше модов или более быстрое ядро, и сообщества, отказывающиеся от первых трёх, в итоге покупают четвёртое. Сервер на 80 слотов, который держит 50 Гц весь вечер, лучше сервера на 100 слотов, который в прайм-тайм падает до 22, и игроки чувствуют разницу, даже не умея её назвать.

Смотрите на график CPU вместе с tick rate, а не на что-то одно. Игровой поток, упёршийся в предел выделенного ему ресурса при ровном графике памяти, - хрестоматийная картина ограничения по CPU, и она описана в как читать график нагрузки сервера и подробнее в что на самом деле значит tick rate. Если вы арендуете целую машину, страница выделенных машин указывает модель CPU, а не маркетинговый уровень, а это единственный способ оценить тактовую частоту до покупки.

Бэкапы, обновления и устранение неполадок#

В Squad нет сохранённого мира, который можно потерять: важное состояние - это ваша конфигурация, список банов и состав админов. Это небольшой объём текста, но и результат месяцев работы, поэтому делайте бэкап SquadGame/ServerConfig/ перед каждым изменением и храните копию не на самом сервере. Бэкапы, которые действительно восстанавливаются объясняет, почему стоит время от времени проверять, что копия работает.

Обновления приходят по графику Offworld и обязательны: клиент новой версии не может зайти на сервер старой. Остановите сервер, запустите обновление SteamCMD с validate, стартуйте его, затем проверьте, что ротация слоёв загрузилась и моды вернулись.

Сервера вообще нет в браузере. Проверьте ShouldAdvertise=true и IsLANMatch=false, а затем query-порт. Работающий игровой порт при заблокированном query-порте даёт именно это: игроки, заходящие по прямому подключению, успешно подключаются, а браузер ничего не показывает.

Сервер виден в Custom Servers, а вы ждали основную вкладку. Дело в лицензии или в лицензии, неправильно применённой в License.cfg. Настройки, которая перенесёт вас, нет.

Игроки подключаются и вылетают по таймауту на 100%. Обычно дело в beacon-порту или в эфемерном диапазоне. Проверьте, что 15000 открыт по UDP и что файрвол пропускает установленные соединения.

С tick rate всё в порядке, пока не загрузится определённый слой. Дело в ротации, а не в железе. Отметьте, какой это слой, и сравните количество техники. Уберите его или переставьте на более спокойное место в ротации.

В ротации играются только две карты. Названия слоёв, которых больше нет, пропускаются молча. Сравните ваш LayerRotation.cfg со списком слоёв текущей версии.

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

Сервер сам перезапускается. Либо процесс останавливают снаружи - лимит памяти, супервизор, watchdog, - либо он упал. Консоль подскажет, что именно, а почему ваш игровой сервер постоянно перезапускается разбирает, как их различать.

FAQ#

Нужна ли лицензия Squad, чтобы запустить сервер?

Нет. Нелицензированный сервер работает со всей функциональностью и показывается во вкладке Custom Servers браузера. Лицензия переносит вас на основную вкладку, а это важно только тогда, когда вам нужно, чтобы вас находили посторонние. Для клана или Discord-сообщества, которое заходит по названию, это обязательство без пользы.

Сколько слотов лучше поставить?

Меньше, чем хочется. Tick rate падает с ростом числа слотов, и сервер на 60 слотов, держащий 50 Гц, играется лучше сервера на 100 слотов, проваливающегося до двадцати с чем-то. Если вы собираетесь подавать заявку на лицензию, нужно минимум 80 слотов, поэтому рассчитывайте CPU на 80, прежде чем подавать заявку.

Почему мой сервер Squad не показывается в браузере серверов?

В порядке вероятности: query-порт закрыт или указан неверный номер, ShouldAdvertise равен false или IsLANMatch равен true. Сначала проверьте прямым подключением: если оно работает, с игровым портом всё в порядке, и проблема на стороне query.

Улучшает ли больше RAM tick rate в Squad?

Нет. Tick rate в Squad определяется тем, как быстро одно ядро CPU завершает шаг симуляции. Память влияет на то, запускается ли сервер вообще и переживёт ли он большую карту с модами, а не на ощущения от игры. Добавляйте память, когда процесс убивают за чрезмерное потребление, а не когда он подтормаживает.

Можно ли запустить два сервера Squad на одной машине?

Да, если CPU потянет два игровых потока и вы правильно разнесёте порты. Дайте каждому экземпляру собственную папку установки и оставьте зазор между номерами портов, потому что и игровой порт, и query-порт занимают номер выше себя.

Нужно ли игрокам ставить моды, чтобы зайти на сервер с модами?

Да. В Squad нет игровых модов, необязательных для клиента: всем нужны те же предметы из Workshop той же версии. Учитывайте, что между новичком и его первым раундом встанет загрузка на несколько гигабайт, и держите список модов коротким, если хотите случайный трафик.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000