2021/08/12

Table of Contents

  1. IgnorePkg に入っていた postregsql のアプデ
  2. prosody の HTTP upload 対応
  3. Let's Encrypt のワイルドカード証明書の自動更新のために certbot から acme.sh へ移行した
  4. ぼくたちのリメイク 第 5 話視聴
  5. 白鶴の甘酒を飲んだ

今日は英熟語をやったりなんだりで夜忙しかったので、書き始めた頃にはもう日を完全に跨いでしまった。

IgnorePkg に入っていた postregsql のアプデ

pacman ではパッケージやグループを更新の対象から外せるのだが、更新対象から外れたパッケージの更新方法がわからなかった。この問題は

pacman -S postgresql-libs postgresql

で普通に解決した。

prosody の HTTP upload 対応

1 年ほど前から、prosody という Lua 製の XMPP 鯖を構築し,友人と使っている。 が、しかし、友人とで使っている XMPP クライアントでは、グループチャット上で画像の送信ができない問題があった。 暇だったので、ファイルの HTTP upload 対応をやってみることにした。 まずは upload.jabber.eniehack.net というサブサブドメインを発行。 次に prosody のコミュニティが作るモジュールmod_http_uploadMercurial をつかってコミュニティの管理するモジュール全体をクローンしてもってくる。 3 つ目に prosody.cfg.lua をモジュールのドキュメントを参考に以下のように書きかえる。

Component "upload.jabber.eniehack.net" "http_upload"
    https_upload_path = "/var/prosody/files/"
    modules_enabled = { "http_upload", "http_files" }

Let's Encrypt のワイルドカード証明書の自動更新のために certbot から acme.sh へ移行した

XMPP サーバはサブサブドメインを発行したほうが、簡単にいくようであることをドキュメントから感じるので、wildcard 証明書を発行してみた。 雑にこんな感じでコマンドを実行する。

sudo certbot certonly –manual \
–preferred-challenges dns-01 \
-m “hogehoge@example.jp” \
-d “example.jp” \
-d “*.example.jp” \
–agree-tos

すると、DNS の TXT レコードにこの文字列入れろ、と案内があるので、コピペして完了。

その後、ワイルドカード証明書の自動更新について調べたいたら、面倒そうだったので、certbot から acme.sh へ移行することにした。 というのも、ワイルドカード証明書を発行するにあたって、DNS の TXT レコードを操作する必要があるのだが、 各レジストラが用意する DNSAPI に対応しているもの、していないもの、がそれぞれに出てくるのはしかたがない。 eniehack.net では njalla という変わったレジストラを使っているので、certbot ではデフォルトで対応しておらず、第三者プラグインを導入することで利用が可能だが、AUR になかったので、acme.sh へ移行することにした。

まずは普通の Web アプリケーションだが、以下のようにして証明書が発行できる。--cert-homeに関してはお好みで。

acme.sh --issue -w /usr/share/nginx/html -d nextcloud.example.jp --server letsencrypt --cert-home /etc/acme.sh/

次に nginx 用にファイルを移動する。インストールというらしい。

mkdir -p /etc/nginx/certs/letsencrypt/nextcloud.example.jp/
acme.sh -i --cert-home /etc/acme.sh -d nextcloud.example.jp --key-file /etc/nginx/certs/letsencrypt/nextcloud.example.jp/privkey.cer --fullchain-file /etc/nginx/certs/letsencrypt/nextcloud.example.jp/fullchain.pem --reloadcmd "systemctl reload nginx"

ちなみに、インストールする場所、インストール後に行われるコマンド(--reloadcmd)や hook に関しては --cert-home の下のディレクトリに記録されている。 そのため、証明書の更新に関しては acme.sh --cron --cert-home /etc/acme.sh/という少ない文字数で済む。systemd-timer を使った自動更新の方法は公式wikiを参照。

次に XMPP サーバの Prosody への証明書発行だが、ワイルドカード証明書を発行した。 DNS の各 API に関してはここを参考にした。 まず、証明書を発行。

export NJALLA_Token="some token"
acme.sh --issue --dns dns_njalla -d jabber.example.jp --server letsencrypt --cert-home /etc/acme.sh/

次にインストールする。しかし、Prosody は 通常の XMPP 通信だけでなく、HTTP を介したファイルアップロードや WebSocket、BoSH による XMPP 通信のサポートを行っているために、証明書を Prosody と nginx へそれぞれ配置しなければならない。 なので、少々面倒な Prosody への証明書配置を以下のようなスクリプトを作成し、

#!/bin/sh
cp /etc/acme.sh/jabber.example.jp/fullchain.cer /etc/prosody/certs/jabber.example.jp/fullchain.pem
chmod 640 /etc/prosody/certs/jabber.example.jp/fullchain.pem
chown root:prosody /etc/prosody/certs/jabber.example.jp/fullchain.pem
    
cp /etc/acme.sh/jabber.example.jp/jabber.example.jp.key /etc/prosody/certs/jabber.example.jp/privkey.pem
chmod 640 /etc/prosody/certs/jabber.example.jp/privkey.pem
chown root:prosody /etc/prosody/certs/jabber.example.jp/privkey.pem

nginx への証明書配置を以下のように acme.sh の機能に担わせることにした。 先程のスクリプトは nginx や prosody の再読み込みの直前に実行させる。

mkdir -p /etc/nginx/certs/letsencrypt/nextcloud.example.jp/

acme.sh -i --cert-home /etc/acme.sh -d jabber.example.jp -d *.jabber.example.jp --key-file /etc/nginx/certs/jabber.example.jp/privkey.pem --fullchain-file /etc/nginx/certs/jabber.example.jp/fullchain.pem --reloadcmd "/path/to/prosody-cert-install.sh && systemctl reload nginx prosody"

ぼくたちのリメイク 第 5 話視聴

アニメはいつも GYAO で見るのだが、視聴期限が木曜 9:30 までのところを 1 時間オーバーして気がついた。でも 1 話から一斉配信をやっていたのでよかった。

内容の感想としてはエンディングがすごかった。

もっとこの作品の話をしたいのだが、熱く語れる人がいないし、見ていない人が多いということはネタバレに気をついけないといけないので、明日は一人でニコニコで見ようと思う。

白鶴の甘酒を飲んだ

今週月曜の帰りにスーパーでたまたま見つけた白鶴の甘酒を親と飲んだ。 世の中の甘酒には合成甘味料でさっぱりとした甘さを出しているものもあるが、白鶴の甘酒は砂糖を使っていながらもさっぱりをした、少し酸味のある味になっていて感動した。