Oracle Cloud Free TierにCaddy Web Serverをインストールする方法

Oracle Cloud Free TierにCaddy Web Serverをインストールする方法

オラクルクラウド

3月にLEBはオラクルに聞く「『常に無料』はローエンドの未来か?」という記事を掲載しました。この記事では、Oracle Cloud Free Tierの主な特徴の一つとして、請求にクレジットカードが不要であることが指摘されました。クレジットカード情報がない場合、予期せぬ請求が発生する可能性は低くなります。この点において、OracleのFree Tierは、Amazonなどの大手クラウドプロバイダーとは一線を画しています。Amazonでは、予期せぬ請求やサプライズ請求が珍しくありません。Googleで「AWS サプライズ請求」と検索すれば、私の言いたいことがお分かりいただけるでしょう。

数か月間、Oracle Free Tierで3つのインスタンスを稼働させていますが、特に問題も発生していません。最近、小さくて静的なローエンドのウェブサイトを、Oracle Free Tierの最小インスタンスシェイプであるVM.Standard.E2.1.Microに移行することにしました。この移行により、年間60ドル節約できました。これは、サイトを稼働させていたVPSに毎月5ドル支払っていた金額です。さらに、Oracle Cloud Free TierのデフォルトのOSイメージであるOracle Linuxも試してみることにしました。

ApacheからCaddyへの移行

Oracle Free Tier / Oracle Linuxインスタンスをセットアップした後、Apache(Oracle Linuxではhttpdと呼ばれます)をインストールしました。Apacheは主要なWebサーバーの一つです。長年にわたり、Apacheが私の非常にシンプルな要件を満たしてきたのは当然のことです。実際、Oracle Free Tierの基本的なApacheインストールは問題なく動作しているように見えました。

次のステップは、 Let's Encrypt証明書を取得するためにCertbotまたはCertbunをインストールすることでした。Googleで「install certbot oracle linux」(かぎかっこなし)と検索すると、最初の2つの結果が表示されます。

2つ目の記事の末尾には、1つ目の記事へのリンクと、1つ目の記事に従うとPythonエラーが発生する可能性があることを示唆する注意書きがあります。2つ目の記事では、スタンドアロン証明書を取得するために「その他のUnix」のCertbotの手順を使用することを推奨しています。また、どちらの記事もOracle Linux 7を対象としていますが、私のインスタンスはOracle Linux 8でインストールされました。

Caddyウェブサーバーは自動https認証機能を備えていることで有名です。Googleで見つけた記事で紹介されているものとは異なるバージョンのOracle LinuxでApacheのCertbotのインストールと設定を行うよりも、Caddyを試した方が簡単そうでした。そこでApacheを削除し、Caddyを試してみました。

Caddyのインストール

Caddyのウェブサイトには、Fedora、RedHat、CentOS向けのCaddyインストールドキュメントが掲載されています。Oracle LinuxはFedora / RedHat / CentOS / Rocky / Almaファミリーに属しているので、Caddyのウェブサイトの手順がOracle Linuxでも使えるのではないかと考えました。Caddyのウェブサイトの手順に従ったところ、インストールは成功しました。

[opc@instance-20220717-1620 ~]$ sudo dnf update
sudo dnf install 'dnf-command(copr)'
Last metadata expiration check: 0:13:50 ago on Sun 18 Sep 2022 04:38:59 AM GMT.
Package dnf-plugins-core-4.0.21-11.0.1.el8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[opc@instance-20220717-1620 ~]$ sudo dnf copr enable @caddy/caddy
Enabling a Copr repository. Please note that this repository is not part
of the main distribution, and quality may vary.

Fedora プロジェクトは、ドキュメントに記載されているルールを超えて、このリポジトリの内容に対して権限を行使することはなく、パッケージは特定の品質またはセキュリティ レベルに保持されません。

Fedoraではこれらのパッケージに関するバグレポートを提出しないでください。
Bugzilla。問題が発生した場合は、このリポジトリの所有者に連絡してください。
copr.fedorainfracloud.org/@caddy/caddy を有効にしてもよろしいですか? [y/N]: y
リポジトリが正常に有効化されました。
[opc@instance-20220717-1620 ~]$ sudo dnf インストール caddy
@caddy 所有の caddy の複製リポジトリ 2.5 kB/s | 1.5 kB 00:00
依存関係が解決されました。
===================================================================
パッケージ
Arch バージョン リポジトリ サイズ
===================================================================
インストール中:
キャディ x86_64 2.5.2-1.el8 copr:copr.fedorainfracloud.org:group_caddy:caddy 12 M

取引概要
===================================================================
1つのパッケージをインストールする

合計ダウンロードサイズ: 12 MB
設置サイズ: 45 M
これでよろしいですか [y/N]: y
パッケージのダウンロード:
caddy-2.5.2-1.el8.x86_64.rpm 7.7 MB/秒 | 12 MB 00:01
-------------------------------------------------------------------
合計 7.7 MB/秒 | 12 MB 00:01
@caddy 所有の caddy の複製リポジトリ 7.5 kB/s | 994 B 00:00
GPG キー 0xD605147E をインポートしています:
ユーザーID: "@caddy_caddy (なし) "
指紋: 4A76 F92F F6D4 0440 F8FC 4F36 C521 91B1 D605 147E
出典: https://download.copr.fedorainfracloud.org/results/@caddy/caddy/pubkey.gpg
これでよろしいですか [y/N]: y
キーが正常にインポートされました
トランザクションチェックを実行中
トランザクションチェックが成功しました。
トランザクションテストの実行
トランザクションテストが成功しました。
実行中のトランザクション
準備中:1/1
実行中のスクリプトレット: caddy-2.5.2-1.el8.x86_64 1/1
インストール中: caddy-2.5.2-1.el8.x86_64 1/1
実行中のスクリプトレット: caddy-2.5.2-1.el8.x86_64 1/1
検証中: caddy-2.5.2-1.el8.x86_64 1/1

インストール済み:
キャディ-2.5.2-1.el8.x86_64

完了!
[opc@インスタンス-20220717-1620 ~]$

キャディが動作していることを確認する

Caddy はバージョンを教えてくれるまでは問題なく動作したので、そのまま起動してみました。caddy を有効にしていなかったため( sudo systemctl enable caddy )、再起動後に Caddy は自動的に再起動しませんでした。しかし、もう少しテストを終えるまでは Caddy を有効にする準備ができていませんでした。

[opc@instance-20220717-1620 ~]$ caddy version
v2.5.2 h1:eCJdZyEyAl2zuQTab8Mh3gETnYWDClo1Ljtg42q9RNZrs=
[opc@instance-20220717-1620 ~]$ sudo systemctl start caddy

次に、systemd に caddy のステータスを問い合わせました。

[opc@instance-20220717-1620 ~]$ sudo systemctl status caddy
● caddy.service - Caddy
Loaded: loaded (/usr/lib/systemd/system/caddy.service; disabled; vendor preset:>
Active: active (running) since Sun 2022-09-18 05:14:22 GMT; 16s ago
Docs: https://caddyserver.com/docs/
Main PID: 2177906 (caddy)
Tasks: 7 (limit: 3853)
Memory: 15.6M
CGroup: /system.slice/caddy.service
└─2177906 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: JOURNAL_STREAM=9:59150281
9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: {“レベル”:”情報”,”ts”:166347>
9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: {“レベル”:”情報”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 caddy[2177906]: {“level”:”warn”,”ts”:166347>
9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: {“レベル”:”情報”,”ts”:166347>
9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: {“レベル”:”情報”,”ts”:166347>
9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: {“レベル”:”情報”,”ts”:166347>
9月18日 05:14:22 instance-20220717-1620 systemd[1]: Caddyを起動しました。
9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: {“レベル”:”情報”,”ts”:166347>
9月18日 05:14:22 インスタンス-20220717-1620 キャディ[2177906]: {“レベル”:”情報”,”ts”:166347>
1-20/20行目(終了)
[opc@インスタンス-20220717-1620 ~]$

次に、 Lynx コマンドライン ブラウザーで Caddy のデフォルト Web ページを見てみました。

Caddy Default Web Page shown in Lynx browser

さらなるステップ

Caddyのデフォルトのウェブページでは、自動発行されたセキュリティ証明書を使ってサイトを完全に動作させるために必要な追加手順について親切に説明されていました。これらの手順には、 DNSレコードを新しいサーバーを指すように更新すること、サイトのファイルを古いサーバーから新しいサーバーに移動すること、Caddyfileの設定を調整すること、そしてCaddyを再起動することなどが含まれています。

ファイルを転送した後、 SELinux は当初 Caddy へのアクセスをブロックしました。今後の記事では、ファイルの転送と初期の SELinux ブロックの調整について解説します。

さらに、Caddyのデフォルトのウェブページには記載されていませんでしたが、ログ記録を開始したいと考えていました。ログ記録には、Caddyfileへの追加変更と、追加のSELinuxブロックへの対応が必要でした。ログ記録と2つ目のSELinuxブロックについては、近日中に別の記事で詳しく説明します。

その他の参考資料

Oracle Cloud Free Tierでウェブサイトをホストする方法

Oracle Linux 8 に PHP を使って Caddy Web Server をインストールし、設定する方法



おすすめの記事