うちの回線遅いなーフレッツ光に変えようかなーでもipv6だと自宅サーバできないらしいしなーと色々探していたら、Cloudflareで無料リバプロすればipv6でもサーバ公開できるというのを見かけて、まだipv6じゃないけど早速登録して色々弄ってみた。昔会った営業さんも感じ良かったんで印象も悪くないし……
まずドメインの情報をCloudflareに登録。勝手に今のエントリを引っ張ってきてくれるけど、なぜかcnameが全部拾えなかったりして足りない分を手動で登録。あとMXとかSPFとかDKIMとかGmailがらみのエントリも登録。
そしたらネームサーバをCloudflareに変更。うちはバリュードメインを使っているのだけど、登録して数分で切り替わったみたい。
で、自宅サーバにWebアクセスを投げてみると、リダイレクトしすぎみたいなエラーで繋がらない。キャッシュをクリアしてもダメ。
どうやらオリジンサーバで80->443のリダイレクトを仕込んでるとダメみたい。ということでnginxの設定から削除。オリジンサーバはLet’s EncryptでSSL化しているので、Cloudflare上のSSL/TLS暗号化モードをフルに変更。
とここまでやったら普通に繋がるようになった。やったね!
SSL/TLSの設定メニューを見てたら、Cloudflareがオリジン向けの証明書を発行してくれるという素敵メニューを発見。なんと証明書の期間は15年!Let’s Encryptの証明書を90日おきにせっせこ更新するのが何気に面倒だったので(cronで更新しててもたまに失敗してたりする)、これはありがたいということで早速設定。
Cloudflareの証明書をサーバ上にコピーして、nginxのssl-certificateを更新。Cloudflareだとワイルドカード証明書を作れるので、サブドメインごとに別々の証明書を作る必要もなく、めちゃくちゃ楽ちん。
最後にSSL/TLS暗号モードをフル(厳密)に変更しておいたが、ただのフルとどう違うのかはよくわからん。
とりあえずここまでやって満足したが、ゼロトラストなんかもできちゃうみたいなので、まだ色々遊べそう……しかし、なんでこれが無料なのか全く謎だわ……
いつの間にかNextcloudがVer22になっているのだが、今度はMariaDBをいっしょにアップデートしたせいで動かなくなってしまった。
mariadbを5.6に固定するか、起動オプションに--innodb_read_only_compressed=OFF
を付ければよいらしい。
docker-compose.ymlのcommand:
にこれを追加したら無事アップデートできました。
Nextcloudのdockerイメージをなにげなくアップデート(ver.21)したら、内部エラーとか言われて動かなくなってしまった……
occでぺちぺち叩いてると毎回「Error: Undefined class constant ‘MAJOR_VERSION’ in …」と怒られるので、これでググったらForumに同じ問題が載っていた。
files_external_gdriveとfiles_external_dropboxがアウトだったくさいのでconfig/config.phpの’app_install_overwrite’ => array(… からこの2つを取り除いて、/custom_appsからも削除。
で、無事動きましたとさ。
IFTTTがすっかり残念なことになってしまったので、オープンソース版IFTTTって感じのn8n.ioを自宅に立ててみた。dockerイメージが用意されてるので立ち上げまでは簡単。
で、早速LINE通知などしてみようと弄ってみるも、OAuth2認証に失敗する。
ヘルプが存在することに気づかずLINE Messaging APIだとかごにょごにょしてたが(LINE Notifyが正解だった)、ヘルプ通りにやってみたらうまく……いかない。
#SafariとChromeの挙動もなんか違う感じ……
どうもCallback URLへのアクセスに失敗してるみたいで、nginxのログを見ると404を返している……n8nの画面で表示される/webhookrest/oauth2-credential/callbackが存在していない???
アクセスログを追うとどうやら/webhookrestではなく/restが正解なのでは?という気がしてきたので、nginxでURLを書き換えてみたら認証成功。
rewrite /webhookrest(.*) /rest$1 permanent;
どうもこれバグなんじゃねーのという気がしてならないが、オレがなにか間違っているだけなのかもしれんのでしばらく静観……
とりあえず天気予報のLINE通知に成功したので、やりたいことを考えよう……
iOSクライアントとか無さげなのでスマホ連携は厳しいかなー(iOSショートカットを組み合わせればなにかできるかな)
Nature Remoが赤点滅から復帰しなくなってしまって、修理に出したら新品になって返ってきた。ありがてえ。
ということでIoT熱が再燃したので、またダッシュボードでも作るかということでPrometheusとやらに手を出してみたのです。以前はGoogle Spreadsheetとか使ってたんだけど、PrometheusとGrafanaの組み合わせが流行りっぽい。
いつも通りDockerで起動するだけで終わり。やり方はググればいくらでも出てくるので割愛。
Nature RemoのExporterはこちらから。ありがてえ。
Nature Remoのダッシュボードはこんな感じ。
ただDocker監視しようと入れたcAdvisorでハマり。
Failed to start container manager: inotify_add_watch /sys/fs/cgroup/blkio: no space left on device
みたいなエラーが出てコンテナが起動しない。
ググる力を発揮してみたところ、カーネルパラメタfs.inotify.max_user_watchesを増やしてみましょうとのことだったので、sysctl fs.inotify.max_user_watches=524288 && sysctl -pしてみたら解決した次第。
Grafana、簡単にいろいろ視覚化できて楽しい。なにかグラフにするネタないかなー。
Alfred v4でまたSend URLワークフローが動かなくなっていた。
このワークフローが古いキャッシュディレクトリを見てるせいらしいのだが、バージョンアップのたびにシンボリックリンクを張り直すのが面倒なので、スクリプトの中見て、ディレクトリを全部書き換えてしまった。
具体的には、ワークフローに含まれてるスクリプトに書かれてる”com.runningwithcrayons.Alfred-2″を”com.runningwithcrayons.Alfred”に全部書き直す。
書き換えたファイルは以下。
- cacheApps.sh
- getURL.sh
- sendURL.sh
もちろんリンク張り直しでもいいと思われ。
cd ~/Library/Caches/
ln -snf com.runningwithcrayons.Alfred com.runningwithcrayons.Alfred-2
パスワード管理ツールはずっとKeepassを使ってたんだけど、Bitwardenてのに乗り換えてみた。
Keepassが悪いわけじゃないんだけど、MacアプリのKeepassXCのGUIが最近ダメな感じなのと、iOSアプリの使い勝手がよろしくない、ついでにブラウザ拡張も今ひとつ……だけどオープンソースだし、DropboxにDB置いておけば同期もラクだったので使い続けてたんだけども。
Bitwardenはオープンソースで、DB置くクラウドは選べないけどなんとなく安心。
OS対応もほぼ完璧で、iOSだとパスワードの自動入力にもちゃんと対応。
有効にはしてないけど、2FAとかYubiKeyとかも使える。
クラウド運用費用はどこから出てるんだろうとか思わなくもないので、存続し続けられるのか若干の不安はあるけども、いざとなったらDocker使って自前で立てることもできるようなのでなんとかなるでしょー……
ということで、Keepassのデータ取り込んで、しばらく使ってみよーと思っております。