色々ブログ

よろしくでやんす

Dockerで簡単にマルチドメインかつSSL証明 nginx-rpoxy&LetsEncrypt

Dockerを使ってVPS上にMstdonインスタンスを立ち上げようということで、

今までは同じVPS上にただのwebページを運用しているセキュリティみたいなことは特に考えなかったが、MstdonならさすがにやばいだろうということでSSL証明の導入した。

 

前回投稿したnginx-proxyを使ったマルチドメインの割り当て方法も非常に簡単で驚いた

pipinosuke-w.hatenablog.com

が、今回もびっくりするぐらい簡単だった。

本当にDocker有能です。超お手軽なのでインフラに興味ある人は勉強してみることをお勧めさせていただきます。

 

当然今までのdockerコンテナーもこれまで通り使いたいのでnginx-proxyと併用して使用できるこちら 

GitHub - JrCs/docker-letsencrypt-nginx-proxy-companion: LetsEncrypt companion container for nginx-proxy

を使う。 詳しくは正直わからないのだが、無料でSSL証明できるLets Encryptというサービスを利用するらしい。

 

docker-compose.yml :コピペでおk

nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
privileged: true
ports:
- 80:80
- 443:443
volumes:
- ./docker-compose.d/certs:/etc/nginx/certs:ro
- ./docker-compose.d/htpasswd:/etc/nginx/htpasswd
- /etc/nginx/vhost.d
- /usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: always

letsencrypt-nginx:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx
privileged: true
volumes:
- ./docker-compose.d/certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
- nginx-proxy
restart: always

 

はい。あとはdocker-compose.ymlがあるディレクトリから

docker-compose up -d

を打ち込んでください。

 

docker ps で確認すると nignx-proxyとletsencrypt-nginxが動作しているはず。

 

あとはもうこっちのもんでございます。 起動したいイメージに3つ環境変数を設定するだけ。

docker run -e VIRTUALHOST=ドメイン名 -e LETSENCRYPT_HOST=ドメイン名  -eLETSENCRYPT_EMAIL=アドレス[docker imageID] 

このコマンドで設定している3つの環境変数についての説明だけ簡単にさせていただきます。(runコマンドで -eオプションをつけることで環境変数を設定できます)

・VIRTUAL_HOST マルチドメインに必要なバーチャルホストの設定 niginx-proxyで使う

・LETSENCRYPT_HOST= ドメイン名  hoge.comとかです

・LETSENCRYPT_EMAIL=メルアド 普通にメルアド

 

あとは勝手にプロキシされる。かつSSLされます

 

まとめ 

Docker可愛い&有能すぎて震える。。。。