Cloudflare + Let’s Encrypt + macOSでの自宅サーバー運用完全ガイド
はじめに
本記事では、macOSで自宅サーバーを運用している方向けに、Cloudflareを使ったドメイン管理、Let’s EncryptによるSSL証明書の自動更新、VPNやSSH接続のためのサブドメイン設定、メールサーバー連携までを、トラブルシューティングを交えて紹介します。
1. Cloudflare でサブドメインを設定して VPN や SSH を使えるようにする
❓ 問題:Cloudflare経由でVPNやSSHが使えない
Cloudflareのプロキシ(オレンジの雲)がオンだと、HTTPS以外の通信(SSH, VPN, SMTPなど)が遮断されます。
✅ 解決策:
- CloudflareのDNS設定で、該当サブドメイン(例:
vpn.kiwamaqs.com
)を追加 - プロキシをOFF(灰色) にすることで、直接通信可能に
- VPNクライアントでは
Endpoint = vpn.kiwamaqs.com:51820
のように指定
2. Let’s Encrypt 証明書の取得と自動更新(Cloudflare DNS認証)
❓ 問題:macOSでpip
が動かずプラグインが使えない
✅ 解決策:
brew install certbot
brew install pipx && pipx install certbot && pipx inject certbot certbot-dns-cloudflare
~/.secrets/cloudflare.ini
にAPIトークンを保存し、パーミッションを600に
✅ 実行コマンド例:
~/.local/bin/certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
-d kiwamaqs.com -d www.kiwamaqs.com
3. Apache + Certbot の自動更新構成
❓ 問題:証明書更新後にApacheが再起動されない
✅ 解決策:
certbot renew --deploy-hook "sudo apachectl graceful"
visudo
でapachectl
をNOPASSWD許可- cron に登録:
0 4 * * * ~/.local/bin/certbot renew --quiet --deploy-hook "sudo /usr/local/bin/apachectl graceful"
4. Postfix / Dovecot 連携(メールサーバーの証明書)
❓ 問題:mail.kiwamaqs.com
を更新するには Apache 停止が必要
✅ 解決策:
certbot renew
の前にapachectl stop
--deploy-hook
にpostfix reload
とdoveadm reload
を含むスクリプト
✅ スクリプト例:/usr/local/bin/mail-cert-reload.sh
#!/bin/bash
sudo /usr/local/bin/apachectl start
sudo /usr/sbin/postfix reload
sudo /usr/bin/doveadm reload
おわりに
このように、自宅サーバーでCloudflareとLet’s Encryptを組み合わせることで、安全かつ自動化されたSSL/TLS環境を構築できます。トラブルシューティングを通じて、より堅牢な構成を目指しましょう。