-
Amazon Lightsailで立ち上げたWordPressサーバーのSSL証明書は自動更新ができないっぽい
https://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/amazon-lightsail-using-lets-encrypt-certificates-with-wordpress.html#request-a-lets-encrypt-certificate-wordpress こちらの手順に則ってサーバーのSSL証明書を取得したはいいが、肝心の証明書更新が90日に1回必要になるということだった。気づいた時にはすでに遅し、元のGCPサーバーも停止させたので今更戻れるかというところまで来てしまった・・・。 軽く調べた感じだと同様の課題を抱えてる人はいたが、公式の手順に則るとすると自動更新は難しいのではないか?とのこと。 https://community.letsencrypt.org/t/aws-lightsail-certbot-auto-renewal/188248 まぁそれはそれとして、それではそもそもこれまで別サーバーで行ってきたcertbotの自動更新とはなんだったのだろうか。それと今回のLightsailとの差異はどこにあったのかを整理していく。 これまでとの違い – HTTP/DNSチャレンジ まず証明書の取得に当たっては任意のドメインの所有者が誰であるかを検証するために「チャレンジ」というプロセスが組み込まれている。 https://letsencrypt.org/docs/challenge-types さらにそのチャレンジの中でもHTTP/DNS/TLSという3つの種類が存在している。今回Lightsailではワイルドカード証明書(あるドメインとその直下のすべてのサブドメインを一枚の証明書でまとめて保護できるやつ)の利用を前提とした手順が公式で提示されている。 それに対し、既存サーバーでのSSL証明書は単一のドメイン or サブドメインのみに対して発行されていたため簡易なHTTPチャレンジが使われていた、という整理ができる。 そしてDNSチャレンジではチャレンジに使われる任意の値をTXTレコードとしてDNSサーバーに追加する必要がある。その手順が入ることで、自動化のレベルが上がる(route53のAPIを使うなど)ため公式では自動更新の手順に関する言及がなく自動更新を実現できていない、という整理ができるのではなかろうか。 前提を疑う – ワイルドカード証明書の必要性 先ほどの調査からすると、ワイルドカード証明というのは自身が保有するドメインとそのサブドメイン全てに対して有効な証明書が発行されるというのが利点である。 しかしながら、今回の用途でそこまでが必要なのかを精査する必要がある。そもそも前例として、これまでの既存サーバーではワイルドカード証明を使っておらず、無意識にhttpチャレンジを使っていたのが事実である。その結果としてSSL証明書の自動更新という恩恵を預かっていた。 ということは、公式で述べられているワイルドカード証明書の取得手順を見直し、HTTPチャレンジを用いたSSL証明書の取得を手順に組み込むことができれば、もしかしてAmazon LightsailのWordpressサーバーでもSSL証明書の自動更新が実現できるのではないか?と思った次第でした。
-
RaspberrypiにDockerをインストールする
2025/07時点での手順。忘れがちなので。 https://docs.docker.com/engine/install/debian/#install-using-the-repository インストール前に競合パッケージの削除 Dockerのaptリポジトリ設定 インストール インストールの確認 忘れがちな権限設定 上記をやらないと下記のエラーが発生する
-
Raspberry Piで自動水やり機をつくる 〜VPN構築編〜
背景 昨年の取り組み(おさらい) 課題として残った点 ハードウェア構成(再掲) 回路構成については、いなきたものづくりラボの通りに作成すればOKです。 今回やったこと ssh接続環境の構築 VPN構築(Tailscaleを使用) デモ動画 今後やりたいこと 参考リンク
-
なぜTailscaleを経由してpi-holeを利用することはこんなにも簡単なのか?
はじめに pi-holeによるAd Blockが良すぎて、自宅外からも使いたくなったためVPNを利用することに決めた。 その際に採用したのがTailscale。実際の設定手順は下記を参考にすることでものの30分で完了したと思う。 Access a Pi-hole from anywhere · Tailscale Docs 問題はその後、「なぜこんなにも簡単に済むのか」が説明できなかった。 自身はあらゆるすべての技術を理解しないと気が済まない、というタチではない。 ただ今回のtailscaleによるVPNの導入はあまりにも簡単すぎたし、その結果得られた効果が非常に大きかった。そのため、それがなぜ実現されたのかを説明できないことに気持ち悪さを感じた。 仮にこれを人に勧める際に「めっちゃいいよ、何がどうなってるか知らんけど」は自身が己に対して抱く理想ではないのだろう。 当初の自分の理解と違和感 下記のような捉え方をしていた。 一方で、Tailscale上ではpi-hole側のポート情報を与えてないにも関わらずなぜTailscale上のIPだけで通信ができるのか?と。 答えはDNSの基本中の基本にあった DNSへのリクエストはUDP/53で行われる、これが答えでした。 UDPは、TCPのような通信の信頼性確保のための処理がなく、その分クライアントおよびサーバ上でのプロトコルオーバヘッドは小さくなります。このことからDNSのような小さなデータをやりとりするときにおいては効率的、かつ高速に動作します。 そうか、DNSへのリクエストはUDPなのかと。そうすると次なる疑問が出てきたので、それはまた次回のトピックとして調べてみようと思う。 果たして、TCPを使う場合にはTailscaleを使ってどのようにしてリクエストを送れるのか? 追記 2025/07/04 果たして、TCPを使う場合にはTailscaleを使ってどのようにしてリクエストを送れるのか? UDPパンチングホールがほとんどではあると思うが、中にはTCPを使ったものも本当にあるみたい。 参考 TCPでホールパンチングしてみる https://zenn.dev/kota_yata/articles/de4218969753bb
-
openmediavault5->6のアップデートで躓いた
はじめに 問題箇所を調査 対応
-
Raspberry PiでChatGPT Discord Botを常時稼働させる:Docker Composeによる自動起動構成メモ
きっかけ やったこと 非常に簡単で下記の二つ systemctrlの設定を解除
-
M1 mac miniでDNSサーバーの情報を取得・変更する
はじめに 対応 gistにも残しておいた。 Show active network interfaces on macOS and map them to their corresponding Hardware Port names using ifconfig and networksetup.
-
LAN内のラズパイにホスト名を設定する
やりたかったこと アプローチ Avahi-daemonの設定手順 1. Avahi-daemonのインストール 2. サービスの有効化と起動 3. ホスト名の確認 上記コマンドで表示されるホスト名が yourhost の場合、他のデバイスから yourhost.local でアクセスできる。 4. ホスト名の変更(必要に応じて) 5. /etc/hosts ファイルの設定 /etc/hosts ファイルを編集して、ホスト名が正しくマッピングされていることを確認:
-
pi-holeをインストールしてLAN内で快適なAdBlockを実現する
大まかな流れ 手順 docker composeインストール docker-composeの設定とpiholeインストール サービスを利用してみる 実現できなかったこと 参考文献 Pi-hole #Pi-Hole – Qiita Enabling HTTPS for your Pi-hole Web Interface – FAQs / Community How-to’s – Pi-hole Userspace Pi-hole v6のご紹介 – Pi-hole
-
uvのuvxはpipxのそれである
はじめに きっかけ これまでの仮想環境の意義と課題 pipxの意義 Blackを専用の仮想環境にインストールし、それをユーザーのホームディレクトリ内で仮想環境をアクティベートせずに使用する手順を記します pipxのリポジトリのトップには 独立した複数環境にPythonアプリケーションをインストールして実行する という説明が記載されているとおりで先ほどのサンプルのような機能を実現するプロジェクトであると理解すれば良いと思います。 そしてハイパーモダンPythonの訳註には下記の記述があることから、uvxはuvにおけるpipxであるという解釈に落ち着いたのです。 uvにpipxの代替となるコマンドuvxがある。なお、uvxはuv tool runのエイリアスである。 参考文献 ハイパーモダンPython – O’Reilly Japan
-
Initializing PlatfomIO never end
久しぶりにvscodeでplatformIoを使った開発をしたいと思い以下リンク先を参考に進めようと思った https://docs.platformio.org/en/latest/integration/ide/vscode.html が、ツールバーに何の表示もされず出鼻をくじかれた。これを経験した人はいるらしいが、原因はよく分からんとのこと。 C++の拡張機能との依存関係によるものだとかを見聞きしたので、一旦諸々をアンインストール->再インストールしてみても変わる気配はない。 どうやら.platformioごと消し去ると良いらしい笑 https://community.platformio.org/t/vs-code-stuck-on-initializing-platformio-core-when-opening-sidebar-tab/33013 無情に削除したのちにツールバーは表示された!しかし初期化が一向に終わらない・・・。そうするとツールバーはdeveloper console開くとこんなログが・・・。 というわけでplatformio coreをインストールします。 https://docs.platformio.org/en/latest/core/installation/methods/installer-script.html すると、無事に初期化が完了した模様。
-
Xiao ESP32 S3と連携するMCPサーバーを作る
手順01.Xiao ESP32 s3側でREST APIサーバーを実装 まぁ便利なもので、Claude Sonnet3.7に使用するセンサーと要件を伝えたらほぼ一発で下記のコードを出力してくれたではないか。あとはwifiのSSIDとパスワード、ピン配置を指定してやれば実装〜起動までの所要時間5分程度。 https://github.com/kichinosukey/rest-api-xiao-esp32-s3/blob/main/main.ino 02.MCPサーバーを実装する こちらもClaude 3.7 Sonnetを使って実装した。そのまま聞くと知識不足でうまくいかな恐れがあると思い公式サイトの情報をいくらかpdf化してナレッジとして渡してやった。 参考にしたのは下記リンク先。 Introduction – Model Context Protocol For Server Developers – Model Context Protocol Example Servers – Model Context Protocol Building MCP with LLMs – Model Context Protocol Debugging – Model Context Protocol Inspector – Model Context Protocol Core architecture – Model Context Protocol Resources…