Nginx Proxy Manager から Traefik への切り替えは、このインフラ構成にとって大きな転機となった。その理由を紹介する。
なぜ切り替えたのか
Traefik に移行した主な理由はスケーラビリティだ。WebUIを通じて手動で設定する必要がある Nginx Proxy Manager とは異なり、Traefik の設定は Docker Compose ファイル内に直接記述される。つまり、新しいサーバーに移行したりインフラをスケールしたりする際に、設定を手作業で再現する必要がなく、すべてがコードとしてすでに定義されている。
ラベルの美しさ
Traefik では、Docker サービスにラベルを追加するだけで、プロキシ設定が自動的に行われる。サービスの設定例は以下の通り。
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.services.humfurie.loadbalancer.server.port=80"
- "traefik.http.routers.humfurie.rule=Host(`humfurie.org`)"
- "traefik.http.routers.humfurie.entrypoints=websecure"
- "traefik.http.routers.humfurie.tls=true"
- "traefik.http.routers.humfurie.tls.certresolver=letsencrypt"
- "traefik.http.routers.humfurie.middlewares=fallback-errors@file"
- "traefik.http.routers.humfurie-www.rule=Host(`www.humfurie.org`)"
- "traefik.http.routers.humfurie-www.entrypoints=websecure"
- "traefik.http.routers.humfurie-www.tls=true"
- "traefik.http.routers.humfurie-www.tls.certresolver=letsencrypt"
- "traefik.http.routers.humfurie-www.middlewares=fallback-errors@file"
主なメリット
Infrastructure as Code: プロキシ設定はすべてサービスと一緒にバージョン管理される。
自動検出: Traefik は新しいサービスを自動的に検出し、手作業なしでルーティングを設定する。
簡単な移行: 新しいサーバーへの移行は Docker Compose ファイルを持っていくだけで済む。
Let's Encrypt 連携: SSL証明書の管理は組み込みで自動化されている。
まとめ
複数のサービスを管理し、今後スケールする予定があるなら、Traefik のラベルベースの設定アプローチは従来のプロキシマネージャーよりもはるかに保守しやすい。最初の学習コストは、インフラ全体をコードとして定義できる長期的なメリットに見合う価値がある。