コミュニティソリューション

Dockerを使ってZimaOSでウェブサイトをホスティングする方法

A July 2026 community discussion proposed running Apache in a Docker container on ZimaOS instead of adding a built-in web-hosting stack to the operating system.

ZimaOSの独自のWebスタックを変更せずに、Apache、Nginx、その他のWebサーバーを分離されたDockerコンテナ内で実行し、8080などの別のホストポートを公開して、ZimaOS上でWebサイトをホストできます。これにより、サイトの設定をZimaOSの管理インターフェースから独立させられます。

コミュニティの例ではこの基本パターンが示されていますが、1点修正が必要です。そのDockerfileはポート10000を公開しているものの、Webminをインストールしていません。ポートを公開しただけでは、そのポートで動作するサービスは作成されません。

ZimaOS自体を再設定するのではなく、コンテナを使用する

ZimaOSは独自のインターフェース用にすでにWebサービスを使用しています。ホスト上のこれらのサービスを置き換えたり再設定したりすると、アップグレード時の問題やポート競合のリスクが不要に高まります。別のコンテナを使えば、Webサイト専用のファイルシステム、パッケージ、ポートを用意できます。

ZimaOSはDockerベースのカスタムアプリに対応しており、現在のDocker Composeアプリのリファレンスでは、通常のCompose実行設定とZimaOS App Storeのメタデータが分けられています。

よりシンプルなApacheパターン

静的なWebサイトや基本的なローカルサイトであれば、最初に完全なUbuntuイメージを構築する必要はありません。最小限のComposeサービスで、サイトのディレクトリをApacheイメージにマウントできます。

services:
  web:
    image: httpd:2.4
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - /path/to/www:/usr/local/apache2/htdocs:ro

その後、LAN上でhttp://SERVER-IP:8080にアクセスします。サイトのファイルには、ホスト上の永続ディレクトリを使用してください。PHP、データベース、リバースプロキシ、管理UIが必要な場合は、公開ポートがそれらを提供すると考えず、必要なサービスを明示的に追加してください。

ポート10000を公開しても、Webminがインストールされたことにはならない理由

そのフォーラムのDockerfileはApacheといくつかのユーティリティをインストールしたうえで、EXPOSE 80 443 10000を宣言していました。Dockerのポート宣言はメタデータにすぎません。イメージ内では、ポート10000で待ち受けるプロセスも必要です。そのDockerfileはWebminをインストールも起動もしていないため、-p 10000:10000を指定して公開するだけでは、Webminのダッシュボードは表示されません。

Dockerのポート公開に関するドキュメントでは、公開ポートはコンテナ内のサービスへトラフィックを転送するものであり、アプリケーション自体を作成するものではないと説明されています。

ローカル開発と一般公開ホスティングは、リスクレベルが異なる

LAN内だけでサイトを運用するのは比較的簡単です。一方、インターネット上で公開するには、TLS、DNS、認証、パッチ適用、ログ記録、リバースプロキシの設定、ルーターやファイアウォールの公開設定が必要になります。コンテナでポートを公開できるからといって、Webminのような管理インターフェースをそのままインターネットに転送しないでください。

常時稼働するセルフホスト環境が目的であれば、小型のセルフホスティングサーバーでワークロードを実行できます。ただし、公開時のセキュリティはハードウェアモデルではなく、ソフトウェアアーキテクチャとネットワーク制御に左右されます。

結論

Webサイトは独自のDockerサービスとして実行し、競合しないポートを公開してください。目的に合ったイメージ、または構成を明確に定義したComposeスタックを使用し、サイトデータはコンテナの外部に永続化します。Webmin、データベース、TLSは、実際にそれらのサービスをインストールして設定する場合にのみ追加してください。