How to make linux server

Домашний сервер на Ubuntu 22.04 LTS. Часть 1: покупка, настройка, старт

a hard drive being removed from a hard drive

Привет. Вообще, я не хотел писать пост об этом сюда, потому что в сети уже навалом такого добра, повторяться не хочется. Да и в моём канале уже есть некоторые выкладки по хештегу #околоNAS. Там, скорее, поток мыслей и прикидки как бы сделать дома сервачок.

Но пока разбирался с сабжем, подумал — да чё нет-то? Возьму и запилю посты в блоге, с нормальной конкретикой. Я же пишу о том, как сам решаю свои проблемы, вот и будет кому-то ещё пища для размышлений. И себе будущему, чтобы не забыть.

Зачин, как я люблю, небольшой предысторией.

Я давно возжелал домой какой-нибудь сервачок. В сущности, варианта было два: Synology DS220+ или самосборка с авиты. Оба подхода валидны и жизнеспособны, однако мне хотелось гибкости, юзер-френдливости, кастомизируемости, да подешевше и чтоб компактно. Это, знаешь ли, сложно совместить.

Дома валялся еле живой ноутбук HP Pavilion G6, прикинул палец к носу, погонял думы… Однако, долго ли, коротко ли, купил я себе б/у системник Dexp Aquilon O111.

Привалило мне это счастье за 3500р (три тысячи пятьсот российских рублей). «Пфффф», скажешь ты? А вот какие ТТХ я получил:

  • Материнская плата Biostar J2900NH3 ver 6.0 (по ссылке мамка-родственница с другим ЦП):
    • Intel Celeron J2900 (распаян, маленьк, пассивен охлаждением, ест 10Вт, не атом);
    • HDMI x1 + DE15Hd x1;
    • USB3.2 x1 + USB2.0 x4 (взаду) + USB2.0 x2 (впереду);
    • 2 канала DDR3 SO-DIMM 1333 МГц (до 16ГБ);
    • Realtek RTL8111G 1Гб/с x1;
    • Mini PCI-E 2.0 x1;
    • SATAII x2;

    Не топ, но достаточно убедительно, не так ли? Комп был списан какой-то организацией. На нём стоял Debian 9, как выяснилось, с поломанным lightdm и без пароля к руту. Комп списали, он попал в руки какому-то пареньку, который по сабжу ни в зуб ногой и поэтому так сильно скинул ценник. Хотя комп по железу на 100% рабоч.

    Я решил не упускать такой шанс и даже не торговаться: на авите всё ещё можно встретить эти же запчасти по отдельности (или даже компы похуже) за тот же или больший ценник. По-моему, это большая удача.

    Символично, что произошло это 31 марта 2023 — во Всемирный день бекапа.

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

    Оглавление

    Общая подкапотка

    Шлейфы SATA были заменены на адекватные. Шумный ноунемовый дерьмокулер, который стоял на потолке корпуса, заменён на подшипниковый светящийся Zalman. Всё из загашников.

    Термопаста на ЦП, разумеется, оказалась высохшей. Отшкарябал, поменял. Радиатор на пластиковых (целых) подпружиненных ножках, поэтому много времени это не заняло.

    БП шумит как самолёт. Надо его либо менять целиком (на потише и послабее, а то 300Вт тут как-то многовато), либо чё-т придумывать с кулером. Я его уже разбирал для чистки, но, понятное дело, это не(сильно) помогло.

    Накопители

    Это самое важное, ради чего всё затевалось. У меня есть разные винчестеры, и исторические архивы были неравномерно по ним размазаны. Корзина в этом системнике устроена так, что в неё можно поставить ноутбучный дивидюк с панелькой, 1 винт на 3.5″ и 1 винт на 2.5″. Плюс ещё 1 винт на 2.5″ можно прикрутить к полу корпуса.

    После долгих перезаливов всего отовсюду вовсюду, получился такой конфиг:

    • Seagate ST1000LM024 1ТБ 2.5″ — для данных (старенький, но бодрый);
    • Toshiba MK3265GS 320ГБ 2.5″ — для ОС (из упомянутого в начале ноута; у него даже нет SMART, настолько он стар).

    Вот и заняты все саты на мамке винтами на 5400rpm. А вот желаемый конфиг:

    Уже заказана карта расширения PCI-E ещё на две саты. В итоге их будет 4 и я даже зачем-то смогу подключить дивидюк. Он, разумеется, сейчас отключен, но стоит на месте просто как затычка с панелькой (не оставлять же дыру на морде). То есть, он в любом случае останется на месте, вопрос только в необходимости подключения.

    Типоразмер HDD для данных ещё буду подбирать. Например, системный SSD можно приклеить на днище, а маленькие HDD прикрутить в штатные места. Посмотрю.

    Можно даже вместо дивидюка поставить ещё один SSD (такой же, как первый) и поставить оба в RAID1, чтобы не пролюбить ОСь. Но это вообще опционально, в случае чего мне не составит труда накатить всё с нуля.

    Про RAID

    Ну, и, раз уже заикнулся, сразу вынесу в подзаголовок и эту важную тему.

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

    Основные данные уже собраны вместе, но остальное всё ещё размазано по винтам. Я же хочу всё в одну резервируемую кучу на сервере.

    Моя задача — сохранение инфы любой ценой. А рейды, в первую очередь, всё же не про бекапинг, а аппаратную отказоустойчивость. Это кроличья нора и другой уровень заморочек.

    Возможно, вместо этого решусь на выгрузку в «ледяной» S3-бакет в Ya.Cloud, опыт с ним у меня уже есть. Если по-нормальному, то бекапы должны быть распределены на независимых хранилищах (а что если оба винта сдохнут?).

    Я уже писал пост о том, как работать с S3-хранилищем Yandex.Cloud для резервирования данных:

    По нажатию на OK будет запрошен root-пароль и в /etc/fstab появится такая запись:

    $ tail -n 1 /etc/fstab /dev/disk/by-uuid/c0fdb886-71fa-44ed-8347-0fc982258f71 /mnt/Seagate1TB2.5 auto nosuid,nodev,nofail,x-gvfs-show,x-gvfs-name=Seagate1TB2.5 0 0

    У тебя будет другая, эту копипастить себе не надо! Я привёл её для примера.

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

    $ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak $ sudo bash -c 'grep -v -E "^#|^;" /etc/samba/smb.conf.bak | grep . > /etc/samba/smb.conf' $ sudo nano /etc/samba/smb.conf

    И добавил в конец этого файла следующее:

    ; AAA ======================== [family] comment = Seagate 1TB 2.5 path = /mnt/Seagate1TB2.5 read only = no public = yes writeable = yes guest ok = yes valid users = user create mask = 0644 directory mask = 0755

    Суть проста. Указали какую директорию шарить, задали права чтения/записи и пользователя, которому будет доступно удовольствие.

    При доступе по паролю, юзер ОС должен совпадать с юзером самбы и находиться в группе sambashare . Для этого я выполнил

    $ sudo usermod -aG sambashare user $ sudo smbpassword -a user

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

    Включаем автозапуск службы, перезапускаем её и проверяем подключение чем угодно:

    $ sudo systemctl enable --now smbd $ sudo systemctl restart smbd

    Если ты решишь гонять большие объёмы данных по самбе — погоди. Я попробовал ради эксперимента отправить на сервер папку с фильмами — ушло около 6 суток, с обрывами и перезаливами. Гора больших файлов с hdd на hdd по сети — ну чего ещё тут ожидать?

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

    MiniDLNA

    Эта штука понадобится нам для раздачи того же самого контента, но, скажем так, не через подключение к диску сервера, а через подключение к серверу как к медиастанции. То есть сервак будет показывать какая мультимедиа у него есть плееру клиента, а тот запускать воспроизведение (слушать аудио, смотреть синематограф, смотреть пикчи), с перемотками и прочими прелестями, будто всё лежит на его компе. Например, буквально сейчас я пишу этот текст и слушаю Nickelback потоком с сервера через VLC.

    Ставлю minidlna и открываю конфиг на правку:

    $ sudo apt install -y minidlna $ sudo nano /etc/minidlna.conf
    # . media_dir=A,/mnt/Seagate1TB2.5/Музыка media_dir=V,/mnt/Seagate1TB2.5/Фильмы media_dir=PV,/mnt/Seagate1TB2.5/Фото merge_media_dirs=yes db_dir=/var/cache/minidlna log_dir=/var/log/minidlna friendly_name=Axenov DLNA inotify=yes # остальное оставляю как есть

    В параметрах media_dir , буква A значит аудио, V — видео и P — пикчи. Их можно комбинировать для одной директории.

    Если для самбы у нас тот же юзер, что в ОС, и с правами сильно париться не надо было, то тут надо сделать ещё один шаг. ЕМНИП, директория для монтирования диска по дефолту имеет права 0700 ( rwx—— ). Надо открыть доступ на чтение для всех. В моём случае:

    $ sudo chmod a+rx /mnt/Seagate1TB2.5/

    Ну, и для необходимых вложенных поступить аналогично, если угодно — рекурсивно.

    Но в параметре user конфига /etc/minidlna.conf можно указать другого юзера. Я не стал с этим корячиться, ты же можешь пойти этим путём.

    $ sudo systemctl restart minidlna

    В идеале он сразу должен начать сканирование библиотеки, составляя свою БД с инфой о раздаваемых файлах. А поскольку в конфиге мы сказали inotify=yes , то демон будет также отслеживать изменения указанных директорий. То есть новые мультимедиа файлы будут синхронизироваться с базой данных minidlna и в реальном времени (не)доступны клиентам.

    Прикольная фича софтинки в качестве бонуса: браузером открываем localhost:8200 (либо по IP сервера в локалке) и смотрим состояние библиотеки и список подключений.

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

    Прочее ПО

    Поскольку я не знаю, что мне понадобится сделать на этом серваке в очередной раз, я поставил ещё много чего, потенциально (бес)полезного. В списке ниже есть и такие пакеты, которые надо было бы упомянуть в начале поста, но, думаю, ты уже разобрался и часть из этого уже стоит:

    $ sudo apt install -y \ alien \ apt-transport-https \ build-essential \ ca-certificates \ cmake \ curl \ dialog \ gettext \ gparted \ hardinfo \ htop \ libaio1 \ libcurl4-gnutls-dev \ libexpat1-dev \ libghc-zlib-dev \ libssl-dev \ lsb-release \ lsp-plugins \ make \ mc \ nano \ net-tools \ nmap \ p7zip-full \ pulseeffects \ software-properties-common \ ubuntu-restricted-extras \ unzip \ vlc \ ffmpeg \ inotify-tools \ notify-osd \ libnotify-bin \ gnome-software \ gnome-software-plugin-flatpak \ gnome-software-plugin-snap \ terminator \ geoclue-2.0 \ redshift \ redshift-gtk

    Другие скрипты установки разного софта под Ubuntu можно найти в моём репозитории:

    Как ты знаешь, я всегда вытачиваю визуал в идеал, иначе работать за компом просто не могу. Меня вполне устраивает как реализована тёмная Yaru в матэ, поэтому мне осталось только поставить иконки:

    $ sudo snap install icon-theme-papirus

    и указать Papirus Dark в настройках темы.

    Понятное дело, что надо бы иметь и нормальный браузер. Я оставил дефолтного огнелиса в покое, а по соседству поставил гуглохрома.

    wget "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" && \ sudo dpkg -i google-chrome-stable_current_amd64.deb

    В кедах я привык к виндовой комбинации Super + R для запуска krunner . На матэ я всегда использовал ulauncher для тех же целей:

    sudo add-apt-repository -y ppa:agornostal/ulauncher && \ sudo apt install -y --autoremove ulauncher

    Syncthing всему голова. Применять его по назначению пока не приходится, с этим я поработаю, а вот ставится он как нефиг делать:

    sudo curl -s -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg && \ echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list && \ echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing candidate" | sudo tee /etc/apt/sources.list.d/syncthing.list && \ sudo apt update && sudo apt install -y --autoremove syncthing && \ wget "https://raw.githubusercontent.com/syncthing/syncthing/main/etc/linux-desktop/syncthing-start.desktop" -O $HOME/.local/share/applications/syncthing-start.desktop && \ wget "https://raw.githubusercontent.com/syncthing/syncthing/main/etc/linux-desktop/syncthing-ui.desktop" -O $HOME/.local/share/applications/syncthing-ui.desktop && \ ln -sf $HOME/.local/share/applications/syncthing-start.desktop $HOME/.config/autostart/syncthing-start.desktop

    Docker, NextCloud, VPN, DNS и прочее такое я пока не поднимал. Решил не торопиться: что из этого необходимо пойму со временем, к тому же конфиг по винтам меня не устраивает и неокончателен. Когда построю что-то приемлемое, тогда и посмотрим.

    Заключение

    Вторая часть будет нескоро. Мне предстоит ещё многое доработать в этом системнике. По результатам сделаю ещё пост, в котором разложу по полочкам к чему я пришёл, что получилось, насколько это (не) успешно работает и разорило мою семью.

    Источник

    Читайте также:  Получить размер папки linux
Оцените статью
Adblock
detector