手帳

  • 2023-05-04
  • IT系

前回の作業でnginx_proxyを使ってリバースプロキシ機能を実現できたので、最後にSSL化するためのnginxproxy/acme-companionを利用してみた。

1. nginxproxy/acme-companionの導入

0. 手順

  1. nginx_proxyや既存のサービス(portainerを除く)で使っていたcontainer, volumeを削除
  2. nginx_proxyで利用したdocker-compose.ymlを修正
cd /var/www/nginx_reverse_proxy
vim docker-compose.yml
version: '2'

networks:
  default:
    external: true
    name: xservervps_ssl_network

services:
  nginx-proxy:
    container_name: nginx-proxy
    image: jwilder/nginx-proxy:latest
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./certs:/etc/nginx/certs:ro
      - ./vhost:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: always
    environment:
      TZ: Asia/Tokyo
      HTTPS_METHOD: noredirect
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"

  letsencrypt-nginx-proxy-companion:
    image: nginxproxy/acme-companion
    container_name: nginx-letsencrypt
    volumes:
      - ./certs:/etc/nginx/certs
      - ./vhost:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./acme:/etc/acme.sh
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: always
    depends_on:
      - nginx-proxy
    environment:
      TZ: Asia/Tokyo
      DEAULT_EMAIL: "hogehoge@hogehoge.com"
docker compose up -d

2. containerで作成したサービスのサブドメインをSSL化する

手順

  1. SSLしたいサブドメインのcontainerのdocker-compose.ymlを修正
  2. docker compose up -dで立ち上げる

cd /var/www/test_wordpress
vim docker-compose.yml
version: '2'

volumes:
  wp_mysql_data:

services:
  db:
    image: mysql:5.7
    volumes:
      - wp_mysql_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
   image: wordpress:latest
   depends_on:
     - db
   restart: always
   environment:
     WORDPRESS_DB_NAME: wordpress
     WORDPRESS_DB_HOST: db:3306
     WORDPRESS_DB_USER: wordpress
     WORDPRESS_DB_PASSWORD: wordpress
     VIRTUAL_HOST: test.hogehoge.com
     LETSENCRYPT_HOST: test.hogehoge.com
     TZ: Asia/Tokyo

networks:
  default:
    external: true
    name: xservervps_ssl_network
docker compose up -d

これで問題なく稼働するはずですが、Chromeで一度test.hogehoge.comにアクセスして「ちゃんとSSL化されていません!」ってエラーが出るとそのキャッシュがしばらく残り続けるので、シークレットモードや他のブラウザで動くことを確認してください。