traefik
で自分で建てたウェブサービスにパスワードを設定する方法を紹介します。以前の記事(1つのサーバにたくさんのWebサービスを詰め込む方法)
で使ったwhoami
サービスを例に設定方法をメモします。
traefikでは、さまざまな追加機能をミドルウェアと呼ばれる仕組みで提供しています。使い方は簡単です。
追加前のwhoami
サービスはこんな感じでした
1
2
3
4
5
6
7
8
| services:
whoami:
image: containous/whoami
labels:
- "traefik.http.routers.whoami_example.rule=Host(`whoami.example.com`)"
- "traefik.http.routers.whoami_example.tls=true"
- "traefik.http.routers.whoami_example.tls.certresolver=dnsresolver"
- "traefik.http.routers.whoami_example.tls.domains[0].main=whoami.example.com"
|
labels
にBasic認証の項目を以下のように追加します。
1
2
3
4
5
6
7
8
9
10
11
| services:
whoami:
image: containous/whoami
labels:
- "traefik.http.routers.whoami_example.rule=Host(`whoami.example.com`)"
- "traefik.http.routers.whoami_example.tls=true"
- "traefik.http.routers.whoami_example.tls.certresolver=dnsresolver"
- "traefik.http.routers.whoami_example.tls.domains[0].main=whoami.example.com"
- "traefik.http.middlewares.whoami_example_basicauth.basicauth.realm=MyRealm"
- "traefik.http.middlewares.whoami_example_basicauth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"
- "traefik.http.routers.whoami_example.middlewares=whoami_example_basicauth@docker"
|
9-10行目でwhoami_example_basicauth
というミドルウェアを定義して、11行目でこのミドルゥエアをwhoami_example
ルータに追加しています。
パスワードをエンコードしているこの部分はhtpasswd
コマンドで生成できます
test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/
$ echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g
参考