Поставил перед собой задачу: сделать по-настоящему быстрое файлохранилище для временных файлов при обучении нейросетей: как сами модели (промежуточные чек-поинты), так и данные для обучения. При этом мне нужны как NFS (для пингвинов с видеокартами), так и SMB (закидывать данные для обучения с основного компа и смотреть как там идут дела - подгружать промежуточные чек-поинты и смотреть, что обучение движется в нужном направлении).
Построение быстрой сети - это отдельная тема. Кстати, не так дорого: на буржуйских маркетплейсах есть куча предложений по адекватной (~$150) цене с Mellanox CX414, 416 и иже с ними (40Гбит карты), которые простой перепрошивкой можно убедить в том, что на самом деле они 100Гбит/с.
После перепрошивки эта карта спокойно работает на 100Гбит/сек вопреки сказанному на наклейке.
Некоторое время я с вожделением смотрел на QNAP TBS-h574TX. Но во-первых дороговато, а во-вторых традиционная сеть у него 10Гбит, при том, что для поставленной задачи имеющиеся там два Thunderbolt порта совсем не нужны. Ну и вообще мне не понятно: у этой модели сетевые способности явно сильно хуже, чем то, что способны выдать поставленные в нее накопители.
Пришлось идти своим путем. Была взята плата MSI Pro B860M-A: у нее при mATX форм-факторе есть 3 слота под M2 SSD и 4 PCI-E слота: один х16 под видео, два х1 и один х4. В качестве процессора я поставил Core Ultra 235. Совсем как Эллочка-Людоедочка конкурировала с миллионершей, я заселил плату пятью SSD Kingston 4TB NV3. Три штуки зашли в предусмотренные производителем разъемы, еще два я поставил в имеющиеся PCI-E x1 слоты через китайский переходник. Теперь по объему я совсем-совсем способен конкурировать с QNAP h574!
Вместо видео в слоте х16 поселилась сетевая карта, перепрошитая на 100Гбит/с.
А оставшийся слот х4 и место в корпусе под CD-ROM заняло бодрое комбо от китайских товарищей: оказывается, китайская промышленность производит "заглушку" в отсек 5.25" с шестью местами под SATA SSD 2.5"! На случай если мне понадобится побольше места, слот PCI-E x4 занял SATA адаптер на 6 портов подключенный к панели на 6 SSD.
В результате система выглядит так:
1/4
Для загрузки этой радости я подключил SATA SSD на 250Гб к порту на самой плате. И радостно установил TrueNAS.
Пять дисков объединены в RAIDZ1. Из них трое получают полные PCIE x4 и способны выдать свои примерно 4ГБ/сек (вроде Kingston NV3 способен примерно на это), а два диска ограничены пропускной способностью шины и упираются в лимит 2ГБ/сек. Тем не менее, тесты производительности радуют: 6.7ГБ/сек на запись и 9.3ГБ/сек на чтение:
Сеть тоже работает как задумано. Сервер подключен к 100Гбит порту на Mikrotik CRS510, клиент был подключен к тому же свичу через Breakout Cable: 100Гбит делятся на два "хвоста" по 50Гбит, каждый для отдельного компа.
Если бы пол года назад, когда я ставил свою первую операционку на домашний сервер я бы прочитал этот пост - я бы принял иное решение и сейчас мой сервер выглядел по другому. С другой стороны - ничего принципиально нового в посте нет, вся информация давно есть на ютубе, реддите и в чате гпт - нужно было просто спросить. Разные люди по разному воспринимают понятие "домашний сервер" - для кого-то это это коробочка NAS, для кого-то просто виндовый компьютер на антресоли. В рамках этого поста я под домашним сервером буду иметь в ввиду физическую машину с операционной системой линукс. И поговорим о том, какой же дистрибутив можно поставить и в чем отличие.
Очень условно я классифицировал серверные операционные системы исходя из уровня подготовки и целей - и у меня получилось три типа. - Простые = self-hosting + NAS + лёгкие UI - Средние = виртуализация + более гибкая настройка - Продвинутые = оркестрация, облачные сценарии, "мини-дата-центр"
Простые решения (для начинающих / low-entry). Как следует из названия - это самые простые варианты, они (почти) не требуют знания линукс, имеют удобный веб интерфейс и возможность установки сервисов в несколько кликов. На рынке представлено множество таких решений, самые известные это: YunoHOST, CasaOS, Cosmos Cloud, Umbrel, Tipi, Sandstorm, unraid(!платновое), FreedomBox, cloudron, EmbassyOS
Каталог приложений yunohost.
Отличия у них минимальны (например у embassy и FreedomBox чуть больше фокуса на приватность, интерфейс YunoHOST немного устарел - но зато самый большой встроенный магазин приложений), а общее у них одно - минимальный порог входа. Если вы новичок без технического бекграунда - с помощью этих решений вы легко можете выстроить всю инфраструктуру.
Некоторые относят к операционным системам этого уровня и OpenMediaVault (OMV) с TrueNAS SCALE (и я купился на это, первая моя операционка как раз именно OMV) - но я с ними не согласен - это скорее операционка именно для NAS - если вы хотите ставить дополнительные сервисы - это возможно, но не интуитивно.
Вот зашел в OMV - а он просит обновится. Это он умеет...
В общем для начинающего, или для "поставил, настроил и забыл" - я бы советовал взять в качестве ОС что то из вышеперечисленного.
А если по%баться? или средний уровень (для энтузиастов / medium-entry) Вторая группа операционных систем несколько сложнее, требует базового понимания Linux, сетей, Docker, но и дают больше контроля. Я бы посоветовал эту группу себе энтузиастам, которым процесс важнее чем результат. К этой группе я отношу Proxmox VE, XCP-ng, Harvester, NixOS, DietPi (тут я сразу отмечу, что сам тестировал и работал только с Proxmox VE, про остальное только читал. Поэтому буду рассказывать на его примере). У проксмокса нет готового каталога приложений, которые можно поставить в один клик (хотя есть отличный каталог пользовательских скриптов установки, 300+ проверенных сервисов, которые устанавливаются через одну строчку) - это скорее универсальный хост для виртуализации. Зато поднять виртуальную машину с нужными параметрами, изменять эти параметры прям на ходу или использовать никогда не было так просто. Еще у проксмокса есть интересный формат контейнеров - LXC, я это воспринимаю как нечто среднее между виртуалкой и контейнером. Используется общее ядро, а контейнеры используют изолированное окружения. В результате эти контейнеры потребляют меньше ресурсов, чем виртуалка - но обладают большей степенью изолированности, чем докер контейнеры.
UI проксмокса чуть сложнее чем интерфесы ОС первого типа - но все еще существенно проще консоли, на мой взгляд.
В общем если бы я начинал сейчас - вместо OMV я бы поставил себе два Проксмокса.
Или три? Продвинутые решения (для экспертов / high-entry)
Последняя группа - это решения для профессионалов. Я не пробовал ничего из этого (пока?), поэтому коротко опишу как я вижу это со стороны и буду рад если кто то расскажет подробней.
VMware ESXi – классика корпоративной виртуализации (сейчас менее актуальна из-за Broadcom).
Kubernetes (k3s, MicroK8s, TalosOS) – для масштабирования контейнеров, требует глубоких знаний.
OpenShift OKD – корпоративный Kubernetes с дополнительным уровнем абстракции.
Nomad (от HashiCorp) – оркестрация контейнеров и VM, альтернатива Kubernetes.
Bare-metal Linux (Arch, Debian, Ubuntu, Gentoo) – "чистая" установка и ручная настройка всех сервисов.
FreeBSD / NetBSD / OpenBSD – более редкие, но мощные для сетевых и серверных задач.
Кажется что это решения, для маленького дата-центра дома. Явно не для всех - но если вы, например, делаете свой стартап, и хотите хостить его из дома - то это ваш выбор. Чат гпт подсказывает мне, что если я поставлю себе третий сервер - я смогу сделать кластер, который будет автоматически масштабироваться под нагрузку и работать даже в случае выхода из строя одной машины. Но я честно пока в душе не знаю, зачем мне это (*но очень надо)
На сегодня вероятно все, задавайте вопросы если есть, рассказывайте что стоит у вас, отдельно было бы интересно послушать людей с третьей группой операционок.
После всех этих санкций и отрубаний серверов, 2 года назад из говна и палок древнющего Атлона (правда SSD быстрый поставил) + 4 Гб оперативы, собрал медиасервер. Накатал самую кастрированную сборку Win10 - воткнул туда фильтр траффика и ВПН... всё, курю бамбук, наслаждаясь Ютупами, торрентами и прочей пиратской лабутнёй....
Какая нахер Юникс!? Я работал и с CentOS, SuSe, Mint и прочими Солярисами (работал в больницах, каких я только Юниксов не видел... мама не горюй).
Так что товарищ, не мутите людям голову - обрезанная Вин10 самый лучший вариант для неподготовленного человека! Заебётся на ровном месте + с сетью не так всё просто... а уж девочке домохозяйке это пиздец как сложно настроить.
Медиасервак на Win10!!! во всей красе! древний как говно мамонта
Ютуп, Пикабу (и Ваш пост открыт) и Athlon 64 x2 ДВУХЯДЕРНЫЙ!!!!
Основной комп, но тут уже посеръёзнее: 48 гигов, NVME, Xeon и всякое такое
P.S. на заставке телевизора Seltin с голой жопкой! Ну если кому интересно
озадачился этим некоторое время назад, как переехали, до это пользовал HMS(home media server) но не устраивало, что надо системник держать всегда врубленным, сейчас же когда контент таскают 4 телевизора , ноут , моноблок и стационарный ПК, давно стало не вариантом. еще по "православным" ценам был приобретен Asustor 5304T куда встали 2 WD red nas edition под фото в первом рейде, и 2 toshiba MG08 по 16 tb, за год это все забилось, докупилась полка расширения AS6004U , внутри 4 штуки Seagate SkyHawk AI по 16tb место еще есть зато прекрасно себя там ощущает Plex, в гардеробе на антресоли в коридоре прекрасно себя ощущают не греются и за закрытой дверью очень тихо
Решил завести свой домашний сервачок: на ноутах и компе накопилось много файлов/фоток, старые харды начали сбоить, возник риск потери семейного архива.
Нашёл на авито сб/у серверный корпус тауэр, и б/у серверную мат.плату с двумя Ксеонами 2420v2 и 96ГБ оперативки, всë в сумме вышло на 12 тыр. В ДНС купил SSD на один ТБ, и два харда WD Red на 8 ТБ для рейда - всё новое, иначе старьё опять начнёт сыпаться.
Накатил Proxmox, объединил харды в рейд 1 (зеркало), для надёжности. К сожалению, не смог настроить аппаратный рейд через LSI MegaRAID, ОС не запускалась, сделал программный через LVM.
Внутри Proxmox создал виртуалку с FreeNAS, пробросил в неё виртуальный накопитель и настроил отдельные шары по SMB, для фильмов, фото и прочих данных.
Хотел развернуть Plex Media Server в LXC-контейнере, но шара не пробрасывалась. Забил и поднял Plex в отдельной виртуалке поверх дебиана.
Загрузил на шару обучающие видео со своих разных семинаров - крутота! Работает :) теперь с телевизора можно смотреть свои видосы и фильмы.
Пока на этом остановился, поскольку внезапно обнаружил, что старый хард с семейным фотоархивом на компе застучал... Не успел... Попробую восстановить данные и перекинуть их на файлообменник.
В дальнейших планах: установить Immich, попробовать Jellyfin (говорят, удобнее, чем Plex), привязать домен и настроить реверс-прокси. А также попробовать HomeAssistant, и, может, с self-hosted нейросетями поиграть.
Могу расписать подробнее, что и как настроил. Позже распишу, что успел настроить ещё.
1) Берем кусок ноутбука или иной старый и ненужный компьютер
2) Ставим на него Ubuntu server
3) ставим на него transmission для скачивания торрентов
4) Расшариваем на нем сетевую папку
5) закидываем на антресоль и включаем в розетку
Profit! Можно дома скидывать файлы друг другу через сетевую папку, хранить там резервные копии, скачивать туда фильмы и смотреть с помощью приложения vlc на телевизоре или на планшете.
Все настраивается с помощью подсказок любой нейросети.
1/2
У меня на этом огрызке от ноутбука не работает половина всего, поэтому интернет подключен через WiFi репитер
Можно поставить еще много чего интересного на такой сервер, но поигравшись я понял что мне такой конфигурации достаточно
В предпраздничный сокращённый день с коллегами решили, а чего бы нам немного не погонять в Quake III Arena. Игруха кроссплатформенная, легко устанавливается и можно прекрасно помеситься.
После такого замеса нам захотелось по вечерам дома, дабы после работы не задерживаться. Поэтому было принято соломоново решение сделать свой сервант для игр и сваять инструкцию для установки Quake III на все используемые домашние системы. Таким образом, и родилась эта статья.
В конце будет милое видео с котиком :)
❯ План работ
Для того чтобы создать свой сервер опишу план предстоящих работ. 1. Найти где создать сервер на Ubuntu 20.04. 2. Включить firewall UFW, предварительно добавив в него исключения для порта 22 (ssh) и 27960 (quake 3 arena). Если вы планируете несколько серверов, то надо добавить исключения и для этих портов (27961, 27962...) 3. Создать двух пользователей: quake с ограниченными правами, для сервера и q3srv с правами sudo для настройки. 4. Настроить ssh: Отключить возможность подключения по ssh от пользователя root. В идеале отключить логин по паролю, оставить только по ключам. Но сие не всегда удобно, поэтому опущу этот момент. 5. Установить ioquake3-server. 6. Скопировать оригинальные ресурсы *.pk3 с компакт-диска или скачать их с интернета 7. Настроить игровой сервер. 8. … 9. Наслаждаться игрой.
❯ Выбор сервера
Выбор, где размещать свой сервер не стоит, конечно же, у timeweb :). Тем более что для нашей древней игрушки подойдёт самый бюджетный сервер. Сервант сто́ит выбирать там, где будет больше всего игроков, иначе будет очень большой пинг. Если игроки в Москве, то сто́ит взять его в Москве.
Если отключить бекапы (они в нашем случае не нужны, сервак можно легко и просто развернуть заново), то, выходит, всего 300 рублей в месяц. После непродолжительного создания самого виртуального сервера у нас будет IP и пароль. После чего можем начать конфигурировать его по ssh.
❯ Конфигурирование игрового сервера
Подключаемся по ssh, благо это можно сделать даже в современном Windows через cmd. Инструкция по настройке очень краткая, в конце статьи я дам ссылки с пояснениями. В принципе это всё можно просто скопировать в bash-скрипт и исполнить на сервере под root.
# настройка firewall # Добавляем правила для SSH (порт 22) и Quake 3 Arena (порт 27960) ufw allow ssh ufw allow 27960
# Включаем firewall UFW ufw enable
# Проверяем статус firewall ufw status
# Создаём пользователя quake с ограниченными правами adduser quake
# Создаём пользователя q3srv adduser q3srv
# Добавляем пользователя q3srv в группу sudo для получения прав администратора usermod -aG sudo q3srv
# Проверяем, что пользователи созданы корректно id quake id q3srv
# Отключаем возможность входа root через SSH sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# Проверяем, что изменение применилось grep "PermitRootLogin" /etc/ssh/sshd_config
# Перезапускаем службу SSH для применения изменений systemctl restart ssh
# Проверяем статус службы SSH systemctl status ssh
apt update && apt install mc tmux ioquake3-server
Сервер настроен, осталось запустить и настроить игровой сервант.
❯ Базовая настройка Quake III сервера
Установить из репозиториев ioquake3-server недостаточно, нужно ещё ему подкинуть ресурсы игры. А именно папку baseq3 с вашего диска, которая содержит файлы pak*.pk3. Ресурсы можно легко найти в интернете, но поскольку это всё же коммерческая часть, я не буду рассказывать, откуда их брать. Будем считать, что у вас есть лицензионный диск (есть же, да? :) ), откуда вы всё перепишете. В общем, содержимое папки baseq3 оригинального quake надо переписать на сервер:
Всё, уже на этом этапе можно запустить сервер и чуток погонять, удобно сервер делать в tmux чтобы консольный процесс оставался доступен и после завершения сессии ssh:
tmux
Дальше просто запускается:
/usr/lib/ioquake3/ioq3ded
И в выпадающей консоли игры уже написать имя карты на которой хочется играть:
map q3dm1
Вот с этого момента уже можно гонять с друзьями, просто подключаясь по ssh и меняя карты. Для того чтобы подключиться к серверу, нужно в консоли клиента написать:
/connect ipsrv:27960
Всё, рассылаете своим друзьям эту команду и можно бежать играть. Сервер легко администрируется через ssh. Команды управления сервером можно легко найти в интернете. Но в какой-то момент хочется сделать у сервера имя, некоторую ротацию карт, добавить возможность добавления/удаления ботов и, главное — дать людям удалённое управление именно игровым сервером. Это всё уже более углублённые настройки, которые тоже легко реализуются.
❯ Продвинутая настройка Quake III сервера
В принципе можно все эти настройки сделать вручную в консоли сервера, но все они потеряются при следующем перезапуске, поэтому лучше всего создать конфиг-файл с именем server.cfg в папке home/quake/.q3a/baseq3, следующего содержания:
set d1 "map q3dm1 ; set nextmap vstr d2" set d2 "map q3dm17 ; set nextmap vstr d3" set d3 "map q3tourney4 ; set nextmap vstr d4" set d4 "map q3tourney5 ; set nextmap vstr d1" vstr d1
rconPassword rconpasswd
Краткое пояснение:
sv_hostname — это имя сервера, которое будет отображаться на публичных серверах quake.
sv_dedicated 1 — выделенный личный сервер, который не регистрируется наверху, если хотите других игроков, то ставьте ноль. Раньше сразу приходило куча народу, сейчас тишина.
g_gametype 0 — тип игры free for all. Цифры задают тип игры, это самый простой и популярный.
fraglimit и timelimit — соответственно, лимит фрагов и времени в минутах.
Большая сложная конструкция — это скрипт ротации карт, логика его работы понятна и так. Если нужно больше карт, просто увеличивается метки d* и прописываете дальше, какая карта должна быть, и в конце надо вернуться на метку d1.
rconPassword — это задание пароля rcon для управления сервером из консоли игры. Более подробно можно на русском почитать тут .
Далее наше сервер запускаем следующей командой:
/usr/lib/ioquake3/ioq3ded +exec server.cfg
В целом там много чего можно накрутить, но не буду переусложнять статью, для базово поиграть вечером этого хватит с лихвой. Для того, чтобы начать управление сервером, после подключения на клиенте надо ввести:
\rconPassword rconpasswd
И потом:
\rcon map q3dm17 // например, для смены карты
Таким образом, игрой может управлять любой, у кого есть rcon-пароль. Напомню, что в quake есть автодополнение по tab.
Quake III отличная игра, которая работает просто на всех платформах. Можно даже на Android или iPhone телефоне, подключив клавиатуру и мышку, сыграть на этом сервере. Но я всё же расскажу, как установить на обычные ПК эту крутую игрушку.
❯ Установка клиентской игры
Так уж получилось, что у всех разные системы, на которых мы собираемся играть. У меня Linux, у кого-то Windows, у кого-то MacOS. И везде оказались свои тонкости и приколы по установке. Поэтому специально подготовил готовую инструкцию для каждого случая. В принципе, забегая вперёд, достаточно будет подготовить единую сборку, которую можно всем рассылать, и она будет вполне корректно везде работать (кроме MacOS). Но, всё же расскажу классический способ установки.
Linux (Ubuntu, Mint)
На мой взгляд, самый простой способ установки, это скачать сборку ioquake прямо с сайта https://ioquake3.org/ . Распаковать её, и закинуть в папку baseq3 файлы pak0.pk3-pak8.pk3.
Можно по аналогии, как выше я рассказывал об установке сервера, установить клиента. В любом случае все конфиги ваши будут храниться в ~/.q3a/. Достаточно запустить игру командой:
./ioquake3.x86_64
И наслаждаться ей. Но, внезапно столкнулся с особенностями ввода мыши в Linux. В нормальном таком замесе, при резком повороте мышь оказывалась где угодно, но совсем не там куда ты её направил. Для этого нужно настроить raw input. Всё проделывал в Linux Mint:
# Отключаем эмуляцию средней кнопки мыши Option "Emulate3Buttons" "false"
EndSection
Последний момент важный. У меня стоит прыжок на правую кнопку мыши, а стрелять на левую. Поэтому если хочется сделать rocket jump, то получается эмуляция третьей кнопки мыши и получается просто zoom.
Всё, у нас теперь чистый ввод, и можно устраивать честный замес, без всяких прослоек, которые ведут курсор в неизвестном направлении.
Windows
C Windows установка самая простая. Также скачиваем с https://ioquake3.org/ сборку для винды, распаковываем её в удобное место и закидываем в папку baseq3 файлы pak0.pk3-pak8.pk3. Всё можно играть. Единственное, что на одной системе столкнулся с тем игра отказывалась запускаться, так как ресурсы лежать не по тому пути. Пришлось папку baseq3 со всеми паками переписать по пути:
C:\Users\%USERNAME%\AppData\Roaming\Quake3\baseq3
Не факт, что у вас такое встретиться. Но если что, вот рецепт.
MacOS
С этой системой пришлось повозиться, как-то дружба с маком у меня не задалась. Но тем не менее смог победить и это. Всё, что описывается ниже, проверялось на Macbooc Air M1. Сначала я пытался также скачать с официального сайта, но так и не смог победить эту надпись:
Поэтому решил применить *nix way на Маке, и он сработал.
Устанавливаем ioquake3 с помощью brew:
brew install ioquake3
После этого, оригинальные паки (всю ту же злополучную папку baseq3 с файлами pak0.pk3-pak8.pk3) нужно переписать в
Долго искал, в какую точно папку это разместить (по инструкции на сайте папка указана другая), с этой всё запускается. И всё работает! Полный экран я так и не понял, как сделать (через настройки игры не выходит), но всё работает и можно играть!
❯ Выводы
Не зря сделал эти все инструкции для друзей, в действительности теперь каждый вечер идёт весёлый замес и можно как раньше отвести душу, постепенно повышая скилы. Иногда смотришь, а товарищ что-то фигово играет, а, оказывается, ему котёнок помогает играть (это реально присланное видео):
Конечно после игры с друзьями захочется накидать уже других модов, таких как cpma или defrag для олдфажников, но всё это делается уже по аналогии и достаточно просто. Самое приятное, что моды можно поставить только на сервант, а клиент уже сам подхватит. Короче говоря, есть почва, где поразвлекаться и вспомнить молодость.