ConoHa VPS: OpenBSD を最新版へアップグレードする方法
Tags: openbsd, sysupgrade, vps, japanese
Published: 2020-06-04 15:48:26

## Summary

[OpenBSD](https://www.openbsd.org) は OS の一種で、Unix ファミリーに属します。セキュリティに重点を置いていることで有名です。
公式ホームページでは、取組みについて "Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography."（私たちは次のものの達成に重きを置いて努力を続けている: OS やソフトウェアの携帯性 / 標準化 / 設計の正しさ / 先制的なセキュリティ / 完全な暗号化）と説明されています。
OpenBSD プロジェクトは、ドキュメンテーションの最新化とクリーンなライセンス下でのオープンソース・ソフトウェアの開発にも力を入れています。さらにプロジェクト・マネジメントの観点では、OS を約半年に一度の周期で定期的にリリースすることを、25 年間にわたって達成しています。（バージョン 1.2 から先月にリリースされた現在最新の 6.7 までをカウントしました。）

日本にデータセンター（リージョン）のある [VPS](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%BB%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%83%BB%E3%82%B5%E3%83%BC%E3%83%90) ホスティングサービスを活用して 最新版の OpenBSD サーバーを構築することが、本記事のテーマです。
大きく 2 通りの方法があります:

(a) 標準で OpenBSD イメージが提供されているサービスを利用する
(b) カスタムイメージをもとにサーバーを構築できるサービスを利用する

前者はサービスサプライヤーの方針次第なので選択肢に限りがあります。[ConoHa VPS](https://www.conoha.jp/vps/) / [CloudSigma](https://tyo.cloudsigma.com/) / [Vultr](https://www.vultr.com/) などが該当します。
後者は、前者と比較して最初にイメージを準備する手間が掛かりますが、一度構築してしまうとその後は同じように使えます。[Google Compute Engine](https://cloud.google.com/compute) / [さくらの VPS](https://vps.sakura.ad.jp/) / [Amazon EC2](https://aws.amazon.com) / [Linode](https://www.linode.com) などが該当します。[こちらの syuu1228 さんの記事](http://syuu1228.hatenablog.com/entry/20101221/1292952842)に、さくらの VPS で Ubuntu 標準イメージから OpenBSD をインストールする方法が書かれています。（2010 年に... すごいお方やと思います。）
日本のロケーションという制約が無い場合は [DigitalOcean](https://www.digitalocean.com) や [OpenBSD Amsterdam](https://openbsd.amsterdam) 、[LunaNode](https://www.lunanode.com)、[RamNode](http://ramnode.com) なども候補にできます。

今回はプランを比較した上で、ConoHa を使うことにしました。ディスクのベースラインが SSD 100GB と大きめで、且つ、データ転送量が無制限だからです。CPU や RAM 、ストレージの種類やサイズ等をこまかくカスタマイズする用途であれば CloudSigma が良いかもしれません。

2020-06-04 現在、ConoHa で提供されている OpenBSD イメージのバージョンは 6.6 です。一方、先月 2020-05-19 に [6.7](https://www.openbsd.org/67.html) がリリースされました。最新は 6.7 です。
ありがたいことに 6.6 以降の OpenBSD には [`sysupgrade`](https://man.openbsd.org/sysupgrade.8) があるので、OS バージョンのアップグレードは複雑な手順抜きで行なえます。

`sysupgrade` を使用して OpenBSD をアップグレードする手順は以下の通りです。

<span id="tutorial-index"></span>

#### アップグレード手順

1. [サーバー構築](#tutorial-01)
2. [アップグレード前準備](#tutorial-02)
3. [`sysupgrade` を実行](#tutorial-03)
4. [`syspatch` + `pkg_add -u` を実行](#tutorial-04)
5. [最終処理: root パスワード更新, ユーザー追加, etc.](#tutorial-05)

ConoHa VPS 以外でも、[VNC](https://ja.wikipedia.org/wiki/Virtual_Network_Computing) 接続 もしくは [SSH](https://ja.wikipedia.org/wiki/Secure_Shell) 接続が可能な環境であれば、同じように行えます。

---

## Tutorial

<span id="tutorial-01"></span>

#### 1. サーバー構築 <small><a href="#tutorial-index">（アップグレード手順 へ戻る）</a></small>

Web ブラウザを使用します。
ConoHa VPS のアカウント登録を行います。
そしてコントロールパネルへアクセスします。
「サーバー追加」を押します。

![image](https://dev-to-uploads.s3.amazonaws.com/i/4rrmvrd79014q1k6gavn.png)

「OpenBSD」を選択します。
root パスワードを指定します。のちほど使用します。
「追加」を押します。

![image](https://dev-to-uploads.s3.amazonaws.com/i/o7mpq9ijbc52zhdx664n.png)

作成したサーバーのネームタグリンクをクリックします。

![image](https://dev-to-uploads.s3.amazonaws.com/i/tq3iqlhcma4rb10vlk0x.png)

（ここからの操作は VNC「コンソール」接続の代わりに SSH を用いても実行可能です。）
「コンソール」を押下します。

![image](https://dev-to-uploads.s3.amazonaws.com/i/nvrmqrcuyeasl0ylvqad.png)

VNC コンソールが立ち上がります。
先ほど設定したパスワードを使用して root としてログインします。

![image](https://dev-to-uploads.s3.amazonaws.com/i/bh2n9wegq84ueulq6rc0.png)

<span id="tutorial-02"></span>

#### 2. アップグレード前準備 <small><a href="#tutorial-index">（アップグレード手順 へ戻る）</a></small>

OpenBSD プロジェクトは、リリースごとに、公式のアップグレードガイドを公開してくれています。（ありがとうございます。）
6.6 -> 6.7 のガイドは[こちら](http://www.openbsd.org/faq/upgrade67.html)です。この中から必要な操作をピックアップして実行します。今回のバージョンでは、アップグレード後は不要になるファイルの削除が該当します。

不要になるファイルの削除を行います:

```console
# rm -rf /usr/libdata/perl5/*/Storable \
       /usr/libdata/perl5/*/arybase.pm \
       /usr/libdata/perl5/*/auto/arybase \
       /usr/libdata/perl5/B/Debug.pm \
       /usr/libdata/perl5/Locale/{Codes,Country,Currency,Language,Script}* \
       /usr/libdata/perl5/Math/BigInt/CalcEmu.pm \
       /usr/libdata/perl5/unicore/To/_PerlWB.pl \
       /usr/libdata/perl5/unicore/lib/GCB/EB.pl \
       /usr/libdata/perl5/unicore/lib/GCB/GAZ.pl \
       /usr/share/man/man3p/B::Debug.3p \
       /usr/share/man/man3p/Locale::{Codes*,Country,Currency,Language,Script}.3p \
       /usr/share/man/man3p/Math::BigInt::CalcEmu.3p \
       /usr/share/man/man3p/arybase.3p

# rm -f /usr/sbin/{dig,host,nslookup}
```

ConoHa がコンソールに実装してくれている「テキスト送信」機能を使うと、一連のコマンドを一気に実行できて便利です。
SSH で接続していると、このあたりは楽かもしれません。

![image](https://dev-to-uploads.s3.amazonaws.com/i/0yjw2mbc33z4jo061567.png)

これで準備完了です。

<span id="tutorial-03"></span>

#### 3. sysupgrade を実行する <small><a href="#tutorial-index">（アップグレード手順 へ戻る）</a></small>

一行ぽちっと実行するだけです。

```console
# sysupgrade
```

![image](https://dev-to-uploads.s3.amazonaws.com/i/pptyxpjh8u8dj5fh2i7e.png)

最新 OS の取得とファイルと設定の更新、さらには OS の再起動まで自動で行ってくれます。

![image](https://dev-to-uploads.s3.amazonaws.com/i/xnvgd3x707vicv2klonq.png)

<span id="tutorial-04"></span>

#### 4. `syspatch` + `pkg_add -u` を実行する <small><a href="#tutorial-index">（アップグレード手順 へ戻る）</a></small>

`sysupgrade` が完了すると、ふたたびログインが表示されます。
コンソールには OpenBSD "6.7" と表示されます。気分が少し上がります。笑
[`syspatch`](https://man.openbsd.org/syspatch) 対象がある場合は、標準出力で "Checking for available binary patches..." の下に表示して教えてくれます。下のイメージでは 001 から 007 の対象が表示されています。

![image](https://dev-to-uploads.s3.amazonaws.com/i/xkaorp68s1yt7r3zcz7t.png)

`syspacth` と、あわせて [`pkg_add -u`](https://man.openbsd.org/pkg_add) でパッケージの最新化も行っておくと良いでしょう。

同じく一行ぽちっと実行するだけです。

```console
# syspatch && pkg_add -u
```

OS に対するバイナリパッチの適用と、パッケージの最新化が行われます。

![image](https://dev-to-uploads.s3.amazonaws.com/i/8k54154j3we8k4sbov6w.png)

余談ですがこの時に、`syspatch` の途中で 503 エラーが出て再実行が必要になりました。別の機会に同じ手順を行った際には、エラーは何も出ず無事に完了しました。ネットワークが不調だったのか OS のご機嫌が悪かったのか何なのか... 再現性が無く、原因はわかっておりません。また `pkg_add -u` で旧パッケージの削除に失敗しました。`/usr/local/lib/python3.6` の中に `test` が残っていることが原因のようでした。手動で python3.6 ディレクトリをまるごと削除しました。こちらは再現性がありました。

[`reboot`](https://man.openbsd.org/reboot.8) で OS の再起動を行います。`syspatch` の内容によっては不要な場合もありますが、念のためです。

![image](https://dev-to-uploads.s3.amazonaws.com/i/kj92suz8og003xfaphso.png)

これで OS のアップグレードと、その後のシステムパッチの適用およびパッケージの最新化が完了しました。

![image](https://dev-to-uploads.s3.amazonaws.com/i/ytv45n9kixfezo048thq.png)

ここからは `root` でログインして通常通りサーバーを使用できます。

最終処理のために、SSH 接続に切り替える準備をしましょう。
`/etc/ssh/sshd_config` で root のリモートアクセスを許可する（"PermitRootLogin"）か、もしくは [`adduser`](https://man.openbsd.org/adduser.8) で SSH アクセス用ユーザー作成を行います。後者の場合、そのユーザーに対して [`/etc/doas.conf`](https://man.openbsd.org/doas.conf.5) も設定しておきましょう。
SSH 接続の準備が完了すれば、Web ブラウザの VNC コンソールは閉じても大丈夫です。
ここから先の操作は IP アドレスをもとに SSH 接続を行った上で行います。

<span id="tutorial-05"></span>

#### 5. 最終処理 <small><a href="#tutorial-index">（アップグレード手順 へ戻る）</a></small>

root のパスワード変更を [`passwd`](https://man.openbsd.org/passwd.1) で行ったり、`adduser` や [`useradd`](https://man.openbsd.org/useradd) でユーザーの追加を行ったりと、サーバー運用の上で必要なことを行います。
[パッケージ](https://www.openbsd.org/faq/faq15.html) の取得先が近いところのサーバーなのかが気になるのでしたら [installurl](https://man.openbsd.org/installurl) を確認しておくのも良いかもしれません。

---

お読みいただきありがとうございました。
Enjoy OBSD 😃