darkhttpd でシンプルな Web サーバーを作成する方法

darkhttpd でシンプルな Web サーバーを作成する方法
HTML コードが表示されているコンピュータ画面の写真。

Darkhttpd は、Linux 用の軽量なシングルバイナリ Web サーバー デーモンです。サーバーに Web サイトをできるだけ速くデプロイするためのシンプルな「ゼロ設定」方法を提供します。ここでは、Ubuntu Linux に darkhttpd をインストールする方法、一般的な Web サーバーと比較した方法、そして最初の Web サイトを作成する手順を説明します。

Darkhttpd 対 Apache 対 Nginx

Linux マシンにインストールできる Web サーバーは、Darkhttpd だけではありません。Apache、Nginx、Caddy、Lighttpd など、他にもたくさんあります。このセクションでは、darkhttpd を Apache および Nginx と比較し、そのパフォーマンスを確認します。

使いやすさに関しては、darkhttpd は Apache と Nginx の両方をはるかに上回っています。Darkhttpd は、すべてを 1 つのプログラムにまとめることに重点を置いています。つまり、Web サイトの構成やシステムの init サービスについて心配することなく、Web サイトを共有できるということです。

darkhttpd のヘルプ出力を表示する端末。

セキュリティの面では、darkhttpd はファイルに chroot を使用します。また、アイドル接続の自動タイムアウトと基本的なログ機能も備えています。これは、Apache や Nginx と比べると大きな違いです。どちらも、強力なレート制限フィルターと、サイトの HTTP ヘッダーを微調整するオプションを備えています。

Darkhttpd のシンプルさは、カスタム ユーザーの要求に柔軟に対応できないという欠点もあります。このプログラムの開発者は、静的 Web コンテンツを高速に提供するためにこのプログラムを設計しました。つまり、Apache や Nginx と比較すると、darkhttpd は CGI スクリプトを実行したり、アプリのリバース プロキシとして動作したりすることはできません。

Nginx のサンプルリバース プロキシ設定を表示するターミナル。
カテゴリー ダークhttpd アパッチ エンギンクス
使いやすさ ウェブサイトをホストするために追加の設定は必要ありません。 動作するにはシステムとサイト固有の設定の両方が必要です。 動作するにはサイト固有の設定が必要です。
全体的なセキュリティ 基本的な chroot およびログ機能が付属しています。 レート リミッターとセキュリティ重視の HTTP ヘッダーが付属しています。 レート リミッターとセキュリティ重視の HTTP ヘッダーが付属しています。
SSL サポート 組み込みの SSL サポートはありません。 SSL サポート用の「mod_ssl」が付属しています。 SSL サポートが組み込まれています。
アプリケーションの柔軟性 静的な Web コンテンツでのみ機能します。 静的 Web コンテンツと動的 Web コンテンツの両方で動作します。 Web サーバー、ロード バランサー、リバース プロキシとして機能します。

darkhttpd 用にシステムを準備する

Ubuntu Linux で darkhttpd を使用して Web サイトを作成する最初のステップは、Docker と Docker Compose の依存関係を取得することです。

まず、Docker プロジェクトの署名キーをダウンロードします。

お気に入りのテキスト エディターを使用して、新しいリポジトリ ファイルを作成します。

リポジトリ ファイル内に次のコード行を貼り付けます。

マシンのパッケージ リポジトリを再ロードし、システム全体を更新します。

apt を使用して Docker、その Compose プラグイン、および Git をインストールします。

Docker、そのプラグイン、および Git のインストール プロセスを表示するターミナル。

darkhttpdのインストールと実行

ホーム ディレクトリに移動し、最新バージョンの darkhttpd をシステムにプルします。

Git リポジトリの内部に移動し、お気に入りのテキスト エディターを使用して新しい Docker Compose ファイルを作成します。

次のコード ブロックを Compose ファイル内に貼り付けます。

新しい Compose ファイルを保存し、次のコマンドを実行して darkhttpd Docker コンテナをビルドして実行します。

darkhttpd Linux リポジトリ内に「html」フォルダを作成し、そこに静的 Web サイトのファイルをコピーします。

システム内の利用可能なコンテナを一覧表示して、darkhttpd が適切に実行されていることを確認します。

システムで実行されている darkhttpd Docker コンテナを表示するターミナル。

stunnel を使って SSL 経由で darkhttpd を実行する

この時点で、ポート 8080 で darkhttpd サーバーが稼働しています。ただし、インターネット経由でこれにアクセスするには、まずリバース プロキシを介して SSL でカプセル化する必要があります。

まず、darkhttpd の IPv4 アドレスを指すドメインの新しい DNS “A” レコードを作成します。私の場合は、マシンの IPv4 アドレスをレコード “web.myvpsserver.top” にポイントします。

stunnel、「コア」スナップ パッケージ、および Certbot を取得してマシンにインストールします。

darkhttpd インスタンスを Electronic Frontier Foundation に登録します。

ドメイン名の SSL 証明書を生成します。

LetsEncrypt での SSL 証明書生成プロセスを示す端末。

Stunnel リバース プロキシ用の新しい構成ファイルを作成します。

新しい設定ファイル内に次のコード ブロックを貼り付けます。

新しい設定ファイルを保存し、次のコマンドを実行してリバース プロキシを起動します。

システム内の stunnel サービスの現在のステータスを表示する端末。

Web ブラウザでサブドメインを開いて、静的 Web サイトが正常に動作していることを確認します。

SSL 対応の darkhttpd で実行されているサンプル Web サイトを示すスクリーンショット。

darkhttpd を使用して独自のシンプルな Web サイトをホストすることは、セルフホスティング Web サービスの素晴らしい世界を探索するための最初のステップにすぎません。RSS-Bridge を使用してソーシャル メディア用の RSS フィードを作成する方法を学びます。

画像クレジット: Ilya Pavlov (Unsplash経由)。すべての変更とスクリーンショットはRamses Redによるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です