Переезд домашнего сервера на Artix и runit

28 сентября 2026 · Linux

Домашний сервер у меня — старый неттоп с четырьмя гигабайтами памяти. Несколько лет на нём стоял обычный Arch, и всё было хорошо, пока я не начал замечать, что половину времени загрузки он думает о чём-то своём. Захотелось чего-то попроще, где я понимаю каждый запущенный процесс. Так я дошёл до Artix с runit.

Почему runit

В runit сервис — это каталог с исполняемым файлом run. Всё. Никаких юнитов на сорок строк, никаких зависимостей, которые надо угадывать. Супервизор запускает run, и если процесс упал — запускает снова. Хочешь лог — кладёшь рядом каталог log со своим run, который читает stdout.

#!/bin/sh
exec 2>&1
exec chpst -u media:media /usr/bin/jellyfin --datadir /srv/jellyfin

Включить сервис — сделать симлинк в /run/runit/service. Выключить — удалить симлинк. Перезапустить — sv restart jellyfin.

Что оказалось неудобным

Зависимости между сервисами runit не знает. Если сервису B нужен A, то в начале run у B пишешь sv check A || exit 1, и супервизор будет перезапускать B, пока A не поднимется. Звучит костыльно, но на практике работает надёжнее, чем я ожидал.

Второе — таймеры. Их в runit нет, вернулся старый добрый cron. Честно говоря, не скучаю.

Итог

Загрузка — около шести секунд до сети. Памяти после старта занято меньше двухсот мегабайт. Самое главное — когда что-то не работает, я открываю один короткий shell-скрипт и сразу вижу почему.

Возвращаться пока не планирую.

← ко всем записям