OpenBSD 7.9 Puffy dude

Личный сайт автора теперь работает на OpenBSD с использованием httpd(8) и Let's Encrypt через acme-client(1). Ранее сайт размещался на GitHub Pages, а затем переехал на Cloudflare Pages — оба варианта были бесплатными и простыми. Бесплатно и просто — это, конечно, удобно, и вполне понятно желание разработчиков после рабочего дня держаться подальше от компьютеров. Но в какой-то момент захотелось вернуться к самодельному вебу, с которым прошло детство: установка и настройка UNIX-подобных систем, часы, проведённые за попытками понять, как устроены компьютеры. Более 20 лет назад один из ближайших друзей был найден именно так — через форум UNIX shell-аккаунтов FreeBSD.

Отсюда и родилась идея написать инструкцию, как поднять OpenBSD на DigitalOcean за $4 в месяц. Точнее, за $4.24 с учётом налога — но это всё равно неплохо.

Загрузка OpenBSD

Существует несколько способов скачать OpenBSD, но быстрее всего — взять miniroot-образ.

curl -O -O https://cdn.openbsd.org/pub/OpenBSD/7.9/amd64/{miniroot79.img,SHA256}

Далее нужно проверить контрольную сумму образа.

sha256sum -c --ignore-missing SHA256 miniroot79.img
miniroot79.img: OK

Регистрация в DigitalOcean и загрузка miniroot79.img

После регистрации и входа в DigitalOcean нужно перейти в раздел Backups & Snapshots в блоке STORAGE левого меню и нажать Upload an Image. Выбрать скачанный ранее файл miniroot79.img. Указать подходящий дата-центр. В качестве дистрибутива выбрать Other (у DigitalOcean, к сожалению, нет отдельной категории для BSD). Дать образу название — что-то вроде «OpenBSD miniroot79» — и нажать Add Custom Image.

О пользовательских образах

DigitalOcean берёт плату за хранение пользовательских образов. Стоит не забыть вернуться на эту страницу и удалить образ после того, как сервер будет запущен и настроен.

Upload custom image on DigitalOcean

Создание Droplet

В левом меню в разделе COMPUTE нужно нажать Droplets. Понадобится базовый droplet с 512 МБ памяти, 1 vCPU, 500 ГБ трафика и 10 ГБ дискового пространства.

Выбирается подходящий регион дата-центра.

Во вкладке Custom Images выбирается загруженный ранее файл miniroot79.img.

Select custom miniroot79.img file on DigitalOcean

Выбирается тарифный план Basic.

Select Basic / Regular SSD tier Droplet on DigitalOcean

В разделе Authentication добавляется SSH-ключ. DigitalOcean на самом деле не добавляет этот ключ автоматически, но он обязателен для создания droplet. Инструкции по созданию и добавлению SSH-ключа есть в документации сервиса.

Остальные параметры — на усмотрение пользователя. Стоит учесть: создать droplet с включённым IPv6 не получится. В конце нужно дать droplet имя и нажать Create Droplet.

Итоговая стоимость — $4.00 в месяц. Неплохо.

Droplet creation summary showing $4.00/month on DigitalOcean

Установка OpenBSD

На странице только что созданного droplet нужно нажать кнопку Web Console в правом верхнем углу. Появится модальное окно об обновлении консоли droplet — можно просто нажать Launch Recovery Console.

Top of Droplet page showing Web Console button on DigitalOcean

Откроется новое окно браузера с консолью загруженного miniroot79.img. Белый текст на синем фоне — красота.

Web Console booting up miniroot79.img on DigitalOcean

Нужно ввести i и нажать Enter.

На большинство вопросов установщика можно отвечать значениями по умолчанию. Ниже — базовая последовательность настройки; главное — придумать серверу запоминающееся имя хоста.

Web Console showing OpenBSD installation options

  • Выбрать сетевой интерфейс vio0.
  • Выбрать autoconf для IPv4- и IPv6-адресов. Затем выбрать [done] — остальные интерфейсы можно настроить позже.
  • Обязательно задать надёжный пароль для root.
  • sshd(8) нужно запустить по умолчанию, чтобы после установки можно было подключиться по SSH.
  • X Window System на этом сервере не нужен — это простой сервер. Отвечать no.
  • Консоль по умолчанию (com0) менять не стоит.
  • Создать обычного пользователя (не root), задать надёжный пароль и указать имя пользователя.
  • Вход по SSH под root не разрешать.
  • Выбрать подходящий часовой пояс.
  • Для корневого диска выбрать sd0. Размер дисков можно посмотреть, введя ?.
  • Для полного шифрования диска нужно выбрать p и задать парольную фразу.

О полном шифровании диска

Такой вариант потребует каждый раз при перезагрузке сервера заходить в DigitalOcean и открывать веб-консоль droplet, чтобы ввести парольную фразу. Насколько известно, аналога fdesetup authrestart в OpenBSD нет, поэтому установка патчей ядра, требующих перезагрузки, связана с дополнительными действиями. Это не критичное неудобство, хотя есть и вопросы к безопасности ввода парольной фразы через веб-консоль.

Web Console showing OpenBSD disk setup

  • Использовать (W)hole disk MBR — весь диск.
  • Ввести надёжную парольную фразу для полного шифрования диска.
  • Использовать разметку (A)uto.
  • Инициализировать sd1 не требуется — нажать Enter для [done].
  • Установить наборы (sets)!
  • Использовать http.
  • Прокси, скорее всего, не понадобится, но это на усмотрение пользователя.
  • Ввести ?, чтобы увидеть список зеркал, и найти номер зеркала, ближайшего к выбранному дата-центру droplet.
  • Нажать q, чтобы выйти из пейджера.
  • Ввести номер зеркала и нажать Enter. Зеркало должно отобразиться в квадратных скобках — подтвердить Enter.
  • Использовать каталог по умолчанию pub/OpenBSD/7.9/amd64.

Поскольку сервер будет минималистичным веб-сервером, большинство наборов можно убрать. Командой -x* удаляются все наборы X-сервера. Также стоит убрать игровые наборы (-gam*) и наборы компилятора (-com*). В итоге должны остаться bsd, bsd.rd, base79.tgz и man79.tgz. После этого нужно нажать Enter — начнётся загрузка наборов с проверкой подписей. По завершении установки можно выбрать [done].

Web Console showing sets installing and verifying

OpenBSD установлена! Нажатие Enter запускает перезагрузку.

Web Console showing OpenBSD install has been successfully completed!

Если было выбрано полное шифрование диска, система запросит парольную фразу. После её ввода должен появиться приглашение boot>. Можно нажать Enter для загрузки или дождаться автоматического старта системы. Дальше можно продолжать работать через веб-консоль или подключиться по SSH — второй вариант удобнее, поскольку терминал комфортнее. Публичный IP-адрес droplet копируется со страницы сервера. Для подключения по SSH используется тот самый непривилегированный пользователь, созданный при установке, — вход под root по SSH отключён.

macOS Terminal with SSH connection to new OpenBSD Droplet server

На этом этапе подключение по SSH к серверу OpenBSD, работающему на DigitalOcean за $4 в месяц, уже установлено.

Дальше стоит заглянуть в OpenBSD Handbook и почитать раздел о настройке после установки, а также ознакомиться со страницей FAQ проекта. Минимальный набор дальнейших действий — скопировать на сервер публичный SSH-ключ и отключить аутентификацию по паролю.

If you have any questions please do not hesitate to reach out to me, even if it's just to say hello!

Правки

Вт, 25 августа 2026, 17:45:19 EDT: в исходной команде curl изначально было указано arm64 вместо amd64 — ошибка исправлена. Отдельная благодарность Бену за то, что заметил неточность.