【ITニュース解説】Setting up Traefik: reverse proxy with automatic HTTPS
2026年09月24日に「Dev.to」が公開したITニュース「Setting up Traefik: reverse proxy with automatic HTTPS」について初心者にもわかりやすく解説しています。
ITニュース概要
Traefikは、WebリクエストをDockerコンテナに振り分け、Let's EncryptでHTTPS証明書を自動取得するリバースプロキシだ。簡単な設定で、複数のアプリに独自のドメインと安全な接続を提供し、HTTPからHTTPSへの自動リダイレクトも実現する。開発効率を高める中心的なツールだ。
ITニュース解説
複数のWebサービスへのアクセスを効率的に管理し、適切なサービスへと振り分ける役割を持つのがリバースプロキシである。Traefikは、このリバースプロキシの機能に加え、HTTPS通信に必須なSSL/TLS証明書を自動で取得・更新する機能を提供する。Dockerと連携することで、新しいアプリケーションコンテナを起動するだけで、自動的に公開設定とHTTPS化が完了する。これは、Webサービス運用において非常に大きな利点となる。
外部からのリクエストはまず「Entrypoint」(入口)で受け付けられ、次に「Router」(ルーター)がリクエストのドメイン名などのルールに基づき、どのサービスへ送るかを判断する。「Middleware」(ミドルウェア)は、リクエストがサービスに到達するまでに、認証やHTTPからHTTPSへのリダイレクトといった追加処理を行う。そして最終的に「Service」(サービス)が、実際のアプリケーションコンテナへリクエストを転送する。この流れでリクエストが処理される。
Traefikを導入する前に、DockerとDocker Composeがインストールされていること、利用するドメイン名がサーバーのIPアドレスを指すようにDNS設定が完了していること、そしてインターネットからサーバーのポート80(HTTP)と443(HTTPS)へのアクセスが許可されていることを確認する必要がある。特に、Let's Encryptによる証明書取得にはポート80が一時的に必要となる。
Traefik環境を構築する最初のステップは、Traefikと公開する各アプリケーションコンテナが相互に通信できるよう、共有のDockerネットワークを構築することだ。このネットワークは、後続のアプリケーションが容易に参加できるよう外部ネットワークとして設定する。IPv6対応とすることで、より効率的な通信を実現する。次に、TraefikがLet's Encryptから取得したTLS証明書を保存するためのacme.jsonファイルを用意する。このファイルには秘密鍵が含まれるため、所有者のみが読み書きできるよう、厳密なアクセス権限(chmod 600 acme.json)を設定することが極めて重要である。権限が不適切だと証明書の発行に失敗する。
Traefikの挙動を定義するdocker-compose.yamlでは、主に以下の項目を設定する。TraefikがDockerコンテナを監視し、特定のDockerラベルを持つコンテナを自動検出する「Dockerプロバイダ」を有効にする。外部からのアクセスを受け付ける「Entrypoint」としてポート80と443を設定し、ポート80へのHTTPリクエストをポート443のHTTPSへ自動でリダイレクトするよう構成する。そして、Let's EncryptからTLS証明書を自動で取得するための「証明書リゾルバ」を設定し、ドメイン所有権の検証にHTTPチャレンジ方式を使うことを指定する。
新しいアプリケーションを公開する際は、そのコンテナのdocker-compose.yamlに特定のDockerラベルを付与する。これによりTraefikはアプリケーションを自動で検出し、指定されたドメインへのルーティングとHTTPS証明書の取得を行う。例えば、whoamiというシンプルなテストアプリケーションを通じて、ドメインベースのルーティングとTLS通信が正しく動作することを確認する。重要なのは、アプリケーション自体に外部ポートを公開しない点である。
本番環境の証明書にはレート制限があるため、まずはLet's Encryptの「ステージングサーバー」を使ってテスト証明書を取得し、Traefikとアプリケーション連携が正しく機能することを確認する。このテスト証明書はブラウザで「安全でない」と表示されるが、動作確認には十分である。問題なく動作したら、acme.jsonをクリアし、本番環境の証明書に切り替える。
Traefikが提供するダッシュボードは、登録されているルーターやサービスの稼働状況を確認できる便利なツールである。しかし、インターネットに直接公開するのは危険なので、Basic認証を設定してアクセスを制限することが強く推奨される。ダッシュボードは、ルーティングの問題などを診断する際の強力な手助けとなる。
Webアプリケーションのセキュリティを高めるため、HSTS(HTTP Strict Transport Security)やframeDenyといったセキュリティヘッダーを「ミドルウェア」として定義し、アプリケーションに適用できる。これにより、ブラウザに対してHTTPS接続を強制したり、クリックジャッキング攻撃を防いだりすることが可能になる。これらのミドルウェアは一度設定すれば、複数のアプリケーションで再利用できる。
一度Traefikの設定が完了すれば、以降のアプリケーション追加は非常に簡単である。新しいアプリケーション用のdocker-compose.yamlファイルに、Traefikが認識するための特定のDockerラベルと共有ネットワーク設定を記述するだけで、自動的にドメインとHTTPS通信が利用できるようになる。これにより、迅速かつ安全にサービスを公開できる。
トラブルが発生した場合、証明書が取得できない場合は、DNS設定やポート80の開放状況、またはLet's Encryptのレート制限を確認する。アプリケーションにアクセスできず404エラーが出る場合は、Dockerラベルのtraefik.enable=trueが設定されているか、Host()ルールが正しいか、共有ネットワークに参加しているかをチェックする。acme.jsonの権限が不適切でTraefikの緊急証明書が表示される場合は、chmod 600 acme.jsonを実行しTraefikを再起動する。古いTraefikバージョンと新しいDockerエンジンのAPI互換性問題にも注意が必要である。
acme.jsonファイルとTraefikおよび各アプリケーションのdocker-compose.yamlファイルは、システムの障害発生時に迅速な復旧を可能にするため、必ずバックアップしておくべき重要なファイルである。Let's Encryptの証明書はTraefikによって90日の有効期限が切れる前に自動で更新されるため、手動での更新作業は不要である。Traefikのバージョンアップ時には、変更点や互換性情報を確認してから適用することが推奨される。ダッシュボードを定期的に確認し、全てのサービスが正常稼働していることをチェックする運用も効果的である。