はじめに
まだ記事にしていませんが、VMware ESXiを構築しました。
ESXi上にサーバを構築し、昔作ったRaspberry Pi上の機能を随時移植しています。
今回はその一環としてWAN用のDDNSサーバをコンテナ化し機能移植します。
(Cloudflareへの登録などは行っている前提です。)
環境
バージョン情報
Dockerは現在最新の物を使用していきます。
$ docker -v
Docker version 27.0.3, build 7d4bcd8
ちなみに今回DDNSの機能を移植するに辺り調べていた所、既にコンテナがあることを初めて知りました。
せっかくなのでこちらを活用させて頂きます。
CloudflareにてユーザーAPIトークンの発行
旧環境のDDNSでもそうでしたが、CloudflareではAPIキーによるIPの更新が出来るようになっています。
今回紹介するコンテナでもAPIキーを使用するため発行してきます。
以下のページへアクセスすると、APIキーの管理画面が開きます。
色々とテンプレートが用意されているようで、今回は「ゾーン DNS を編集する」のテンプレートを使用しました。
今回使用するコンテナでは、以下の権限が必要と記載があるため、こちらの権限を付与していきます。
- Zone - DNS - Edit
- Zone - Zone - Read
- Zone - Zone Settings - Read
また、「ゾーン リソース」では更新対象のドメインを選択してあげましょう。
上記入力後末尾の「概要に進む」ボタンをクリックすると概要が表示され、「トークンを作成する」をクリックするとトークンが発行されます。
ページにも記載がある通り、セキュリティの都合上1度しか表示されないためちゃんとキーをコピーしておきましょう。
コンテナの起動
コンテナを起動するだけであれば、以下のコマンドで完結します。
$ docker run --detach\
-e API_KEY=[発行されたAPIキー] \
-e ZONE=[自分のドメイン名] \
oznu/cloudflare-ddns
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d71a48522687 oznu/cloudflare-ddns "/init" 10 seconds ago Up 9 seconds mystifying_knuth
オプションを指定しないと5分ごとに確認しに行ってるとのことです。
今回私はAPIキーなどを忘れそうでしたので、docker-compose.ymlで管理しました。
services:
letsencrypt:
image: oznu/cloudflare-ddns:latest
restart: always
environment:
- API_KEY=-[発行されたAPIキー]
- ZONE=[自分のドメイン名]
- PROXIED=false
最後に
以上でCloudflareによるDDNS用コンテナの構築は完了です!
旧機能はシェルでアクセスしに行くような作りでしたので、コンテナがあったことで大きく時短できました。
先人の方々に日々感謝…。
参考サイト
・oznu/cloudflare-ddns
https://hub.docker.com/r/oznu/cloudflare-ddns/