Nextcloud in Docker を自宅に構築
NextcloudをDocker使って,自宅のNAPT配下に構築する.
何章まで行くかわかりません.終わるといいな.
- (今回) Nextcloud in Docker を自宅に構築 01章_証明書
- 内部DNSサーバの構築
- リバースプロキシの構築
- Nextcloudの構築
前提条件
必要なもの
- Linuxサーバ
- DockerとDocker Compose
- 記事の内容に対して,補填できる知識
ネットワーク環境
[GLOBAL]----[ONU]--[Router (192.168.1.1)]
├-[Server (192.168.1.2)]
└-[Client (192.168.1.3)]
ドメイン(DDNS)
まずは,ドメインを取ろう.MyDNS.JPが楽そう.
まあ,あまり説明することもないでしょう.
Domain* : (FQDN)
って書いてるところに,自分の欲しいドメインを入れる.
Aレコードのホスト名に,ワイルドカード設定をすることで,ホスト名に問わず自宅まで問い合わせさせることができる.
その後,内部DNSサーバで解決する.
ここでは仮に.var_mydomain_var.mydns.jp
を取得したとする.
MyDNSは,Dynamic DNSを提供しているので,定期的に,現在のGlobal IPを教えなきゃいけない.
以下のスクリプトをServerのcronとかに登録しておく.
#!/bin/sh
curl https://MyDNSのユーザID:MyDNSのユーザパスワード@www.mydns.jp/login.html 1 > /dev/null
取得できたかどうかは,
ping var_mydomain_var.mydns.jp
や
ping hoge.var_mydomain_var.mydns.jp
で
で確認する.
証明書
今回の本題である.
Let's EncryptのDNS-01で習得する.
DNS-01方式
DNSのTXTレコードを用いて,証明書を発行する(よく分かっていない).
従来のHTTPS方式のように,Port443を解放しなくても良い.
MyDNS + Let's Encrypt + DNS-01
取得するPHPスクリプトが公開されているので,Dockerコンテナ化する.
コンテナ化
コンテナ化したものがこちらである.
Cloneして,表の様にrun時の引数と, txtedit.conf
ファイルを編集する.
変数 | 設定する内容 |
---|---|
YOURDOMAIN | var_mydomain_var.mydns.jp |
YOURMAILADDR | 証明書に使用するメールアドレス |
MYDNSJP_MASTERID | MyDNSのID |
MYDNSJP_MASTERPWD | MyDNSのパスワード |
MYDNSJP_DOMAIN | var_mydomain_var.mydns.jp |
docker run --rm \
-e YOURDOMAIN=$YOURDOMAIN \
-e YOURMAILADDR=$YOURMAILADDR \
-v $(pwd)/etc/letsencrypt:/etc/letsencrypt \
doc_direct_edit
<?php
$MYDNSJP_URL = 'https://www.mydns.jp/directedit.html';
$MYDNSJP_MASTERID = '';
$MYDNSJP_MASTERPWD = '';
$MYDNSJP_DOMAIN = '';
?>
証明書取得
怖い人は,Dockerfile内で,certbot
実行時 に,dry-run
オプションを付けてBuildすることで,テストできる(筈).
DockerfileをBuildして,Runすると,その場に,etc
ディレクトリができる.
./etc/letsencrypt/live/var_mydomain_var.mydns.jp/
配下に証明書ができている.
etc/
└── letsencrypt
├── accounts
│ └── acme-v02.api.letsencrypt.org
│ └── directory
│ └── hogehogehoge
│ ├── meta.json
│ ├── private_key.json
│ └── regr.json
├── archive
│ └── var_mydomain_var.mydns.jp
│ ├── cert1.pem
│ ├── chain1.pem
│ ├── fullchain1.pem
│ └── privkey1.pem
├── csr
│ └── 0000_csr-certbot.pem
├── keys
│ └── 0000_key-certbot.pem
├── live
│ ├── var_mydomain_var.mydns.jp
│ │ ├── cert.pem -> ../../archive/var_mydomain_var.mydns.jp/cert1.pem
│ │ ├── chain.pem -> ../../archive/var_mydomain_var.mydns.jp/chain1.pem
│ │ ├── fullchain.pem -> ../../archive/var_mydomain_var.mydns.jp/fullchain1.pem
│ │ ├── privkey.pem -> ../../archive/var_mydomain_var.mydns.jp/privkey1.pem
│ │ └── README
│ └── README
├── renewal
│ └── var_mydomain_var.mydns.jp.conf
└── renewal-hooks
├── deploy
├── post
└── pre
16 directories, 16 files
まとめと今後
証明書が,DNS-01方式で取得できた.
今後は,以下のとおりである.
- 内部DNSサーバの構築
- リバースプロキシの構築
- Nextcloudの構築
遠くね?