FreeBSD на VPS: где её можно поставить и зачем она нужна
FreeBSD — не дистрибутив Linux, а отдельная операционная система со своим ядром, своей базовой системой и своей документацией. Её ценят за цельность: ядро, утилиты и библиотеки разрабатываются одним проектом и выходят одним выпуском, а сторонний софт ставится отдельно и не смешивается с системой. На сервере это даёт предсказуемое поведение, встроенную ZFS, изоляцию через jails и пакетный фильтр pf. Цена — меньшая распространённость: готовых инструкций и шаблонов у хостеров меньше, чем для Linux.
Где FreeBSD вообще можно поставить
Главное ограничение — виртуализация. На контейнерах OpenVZ и LXC все клиенты хоста работают на общем ядре Linux, и FreeBSD там не запустить в принципе. Нужна полная виртуализация: KVM, Xen, VMware или Hyper-V. Дальше два варианта:
- Шаблон FreeBSD в панели хостера. Самый быстрый путь, но проверьте версию сразу после установки командой
freebsd-version: шаблоны часто отстают, а снятая с поддержки ветка не получает исправлений безопасности. - Установка с официального ISO. Загрузите образ в панели, откройте VNC-консоль и пройдите установщик bsdinstall. Это работает на тарифах, где разрешён свой образ, — список есть на странице VPS со своим ISO.
Перед заказом уточните, как хостер раздаёт сеть. Если адрес выдаётся по DHCP, всё заработает само. Если IPv4 и особенно IPv6 нужно прописать вручную, возьмите параметры из панели и задайте их в /etc/rc.conf ещё из консоли, до первой перезагрузки. Сетевая карта и диск в KVM обычно видны как virtio-устройства (vtnet0, vtbd0), драйверы для них входят в систему.
Сразу после установки сделайте несколько вещей, которых в чистой системе нет. Добавьте пользователя в группу wheel и поставьте sudo или doas из пакетов, а в /etc/ssh/sshd_config закройте вход под root и по паролю. Включите синхронизацию времени строкой ntpd_enable="YES" в /etc/rc.conf. Файрвол pf по умолчанию выключен: напишите короткий /etc/pf.conf, разрешающий SSH и нужные порты, и включите его, держа открытой VNC-консоль на случай ошибки в правилах. Системные письма с ежедневными отчётами о безопасности приходят root локально — перенаправьте их на свой адрес в /etc/mail/aliases и выполните newaliases, чтобы их кто-то читал.
ZFS или UFS на небольшом сервере
Установщик предлагает разметку с ZFS по умолчанию, и на VPS это удобно: снимки файловой системы делаются мгновенно, их можно отправлять на другой сервер командой zfs send, а загрузочные окружения позволяют откатить неудачное обновление системы перезагрузкой. Но ZFS любит память: кеш ARC по умолчанию занимает большую её часть. На тарифе с 1–2 ГБ ограничьте его параметром vfs.zfs.arc_max в /boot/loader.conf, иначе приложениям останется мало. На самых маленьких тарифах с 512 МБ разумнее выбрать UFS — она проще и почти не требует памяти. Для серверов хранения и резервных копий с большим диском ZFS как раз главный аргумент за FreeBSD.
Типичные задачи и что учесть
- Веб-сервер и базы данных. nginx, PostgreSQL, MySQL, PHP ставятся из пакетов через
pkg install. Конфиги лежат в/usr/local/etc, а не в/etc— это частая путаница после Linux. - Изоляция сервисов в jails. Jail — легковесный контейнер с отдельной файловой системой, пользователями и адресом. Docker в FreeBSD нативно не работает, его роль выполняют jails и утилиты для их управления.
- Сетевой узел и файрвол. pf умеет фильтрацию, NAT и ограничение скорости в одном понятном конфиге. На основе FreeBSD сделан pfSense; если нужен готовый маршрутизатор с веб-интерфейсом, посмотрите VPS для pfSense.
- Linux-программы частично запускаются через слой совместимости linuxulator, но рассчитывать на него для серьёзной нагрузки не стоит. Если ваш софт есть только под Linux, берите Debian.
Обновления и поддержка
Базовая система обновляется отдельно от пакетов. Исправления безопасности для неё ставит freebsd-update fetch install, переход на новый выпуск — freebsd-update upgrade -r с номером версии. Пакеты обновляются через pkg upgrade, а pkg audit -F покажет известные уязвимости в установленном софте. Каждая ветка поддерживается ограниченное время, а точечный выпуск внутри ветки — лишь несколько месяцев после выхода следующего, поэтому сроки стоит сверять на сайте проекта и обновляться заранее. Перед переходом между ветками сделайте снимок ZFS или снимок диска в панели хостера: если что-то пойдёт не так, откат займёт минуты.