Traefik

Traefik Docker コンテナ設定完全ガイド【Docker, TLS, HTTP3】

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

1. 前提条件と環境構築

Traefik をコンテナで動作させるには、Docker エンジン・Compose の適切なバージョンと、外部からアクセス可能なポートが確保されていることが前提です。ここでは、インストール状況の確認方法とファイアウォール設定のポイントを解説します。

1.1 Docker Engine と Compose のインストール・バージョン確認

公式サイトで「最新の安定版」かどうかを確認しながら、以下のコマンドでバージョン情報を取得してください。

  • Docker Engine20.10 以上、できれば公式リポジトリで配布されている最新 LTS を使用します。
  • Docker Composev2 系が推奨され、マルチプラットフォーム対応や API の安定性が向上しています。

インストール手順は OS に応じて公式ドキュメントを参照してください(Ubuntu → apt, CentOS/RHEL → yum/dnf, macOS → Homebrew など)。

1.2 必要ポートの開放とファイアウォール設定

Traefik が提供する HTTP、HTTPS、ダッシュボードに必要なポートは以下の通りです。各ポートが外部から到達可能かつ内部ネットワークでも通信できるように設定します。

ポート 用途
80 HTTP(エントリポイント)
443 HTTPS(TLS エントリポイント)
8080 API & Dashboard(管理用)

Linux 環境でのファイアウォール例

ufwfirewalld の代表的な設定方法を示します。必要に応じて内部ネットワークだけに制限してください。

ポートが閉じていると外部リクエストが届かず、TLS 証明書の自動取得も失敗します。


2. Traefik 公式イメージ取得と static 設定

Traefik の公式 Docker イメージは「そのまま」使用できるように最適化されていますが、実運用ではタグ管理や設定ファイルの永続化が重要です。ここでは安全なイメージ取得手順と、基本的な traefik.yml(static 設定)の構造を示します。

2.1 推奨イメージタグの取得方法

公式リポジトリに公開されている最新の安定タグを確認し、そのタグでイメージをプルします。バージョン番号は将来変わる可能性があるため、CI パイプラインでは「タグ」だけでなく イメージダイジェスト をロックすると再現性が保たれます。

ポイントdocker images --digests で取得したダイジェストを docker run 時に指定すれば、タグが更新されても同一イメージを使用できます。

2.2 基本的な static 設定ファイル(traefik.yml)

以下は最小構成の雛形です。コメントで各項目の役割と推奨設定を簡潔に説明しています。

  • エントリポイント は HTTP と HTTPS の二つを用意し、HTTPS では certResolver を指定して ACME に委任します。
  • Docker ProviderexposedByDefault: false により、意図しないコンテナが自動で公開されるリスクを排除できます。

このファイルはプロジェクトルートに配置し、Compose でボリュームマウントして利用します。


3. Docker ラベルで実装する動的ルーティングとミドルウェア

Traefik の大きな特徴は、Docker コンテナのラベルだけで router・service・middleware を定義できる点です。ここでは代表的なアプリ(nginx と whoami)を例に、ラベル記述と共通ミドルウェアの作り方を解説します。

3.1 router と service のラベル例(nginx・whoami)

以下は docker-compose.yml の抜粋です。各サービスは traefik-public ネットワークに接続し、必要なラベルでルーティング情報を提供します。

  • router ラベルは Host 条件とエントリポイント、TLS の有無を指定します。
  • service ラベルはコンテナ内部ポートのマッピングのみを記述し、ロードバランサーが自動的に処理します。

3.2 ミドルウェアの定義と適用例

共通で使用したいセキュリティ機能やヘッダー付与はミドルウェアとして切り出すことで、複数 router に再利用できます。以下は HTTP→HTTPS リダイレクト、セキュリティヘッダー、IP ホワイトリストの例です。

  • 適用順序 は左から右へ評価されるため、リダイレクト → ヘッダー付与 → IP 制限の流れになります。
  • ミドルウェアは「名前」で管理できるので、別サービスでも同様に middlewares=secure-headers と記述すれば同じ設定が再利用可能です。

4. TLS / ACME 設定とセキュリティベストプラクティス

自動証明書取得は利便性が高い一方で、秘密鍵やメールアドレスの取り扱いに注意が必要です。ここでは Let’s Encrypt の基本設定と、TLS 1.3 限定・最小権限コンテナ実行の手順を示します。

4.1 Let's Encrypt(ACME)の基本設定

traefik.yml に ACME 用 resolver を追加し、永続化ボリュームで acme.json を保護します。

Compose 側の永続化と権限付与例です。

ポイントacme.json のファイルモードは 600 に設定し、コンテナ内部の非特権ユーザーでのみアクセスできるようにします。

4.2 TLS 強化と最小権限コンテナ実行

HTTPS エントリポイントに TLS 1.3 のみ許可し、推奨 CipherSuite を限定します。

非特権ユーザーで実行する Dockerfile(公式イメージをベース)

  • 理由:コンテナが root 権限で動作すると、脆弱性が発見された際にホストへの権限昇格リスクがあります。
  • ボリュームの所有者も同一 UID/GID に合わせておくと、書き込みエラーを防げます。

5. 動作確認・監視・最新機能への対応

構築が完了したら、基本的な動作テストと継続的なメトリクス収集を行いましょう。さらに、Traefik v3 系で実験的に提供されている HTTP/3 の有効化手順も併せて紹介します。

5.1 デプロイ後の基本的なテスト手順

以下の流れでサービスが正しく公開されているかを確認してください。

  1. コンテナ起動
    bash
    docker compose up -d
  2. ダッシュボードへのアクセス(TLS 経由)
    ブラウザで https://<ホストIP>:8080/dashboard/ にアクセスし、router・service が一覧表示されていることを確認。
  3. 実際のアプリへリクエスト
    bash
    curl -I https://example.com # nginx のレスポンスが 200 OK か
    curl -I https://whoami.local # JSON にコンテナ情報が含まれるか
  4. TLS 証明書の検証
    openssl s_client -connect <ホストIP>:443 -servername example.com で取得した証明書が有効期限内か確認。
症状 主な原因 推奨対処
404 Not Found Host 条件が合致していない traefik.http.routers.*.rule を再確認
TLS handshake failure ACME が証明書取得に失敗 docker logs <traefik> でエラーログを確認
ダッシュボードが HTTP 表示 api.insecure: true が残っている api.dashboard: true と TLS のみ許可に設定

5.2 Prometheus と Grafana によるメトリクス可視化

Traefik は組み込みの Prometheus エンドポイントを提供します。static 設定に以下を追記し、HTTPS 経由で安全に取得できるようにします。

Prometheus の scrape_configs

Grafana では公式ダッシュボード ID 17305(Traefik v3 Metrics)をインポートすると、リクエスト数・レスポンスタイム・TLS ステータスが一目で把握できます。

5.3 実験的 HTTP/3 の有効化 (Traefik v3)

2026 年版 traefik:<latest-stable-tag> は QUIC と HTTP/3 をオプションで提供しています。実装はエントリポイントに experimental.http3.enabled: true を付与し、UDP ポート 443 を開放します。

  • ファイアウォールudp/443 の許可が必要です。
  • 注意点:クライアント側が HTTP/3 に対応していない場合は自動的に HTTP/2/1.1 へフォールバックしますので、サービスの停止リスクは低減されます。

おわりに

以上で、Docker 上に安全かつスケーラブルな Traefik 環境を構築するための全工程をご紹介しました。
前提条件の確認 → イメージ取得 & static 設定 → ラベル駆動の動的ルーティング → TLS/ACME の堅牢化 → テスト・監視 → 新機能(HTTP/3)活用 という流れで進めれば、設定ミスやセキュリティ上の抜け穴を最小限に抑えられます。

本稿の手順は 「公式ドキュメントとバージョンタグの最新情報」 を都度確認しながら適用してください。定期的なイメージ更新と証明書ローテーション、そしてメトリクスに基づくパフォーマンスチューニングを組み合わせることで、長期間安定したリバースプロキシ運用が実現できます。

ぜひ本ガイドをベースに、自社環境や個人プロジェクトで Traefik を活用してみてください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Traefik