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のデータ取り込んで、しばらく使ってみよーと思っております。
Airsonicの日本語対応版JpsonicをDockerで動かしてみた。といってもDockerfileが用意されているので簡単。
ディレクトリ作る。
mkdir jpsonic
cd jpsonic
mkdir -p install/target/dependency
リポジトリからファイルを取ってくる。
./docker-compose.ymlを作る。volumesは適当に変更。
web:
build: "./install"
restart: always
ports:
- 4040:4040
volumes:
- ./music:/jpsonic/music
- ./playlists:/jpsonic/playlists
- ./podcasts:/jpsonic/podcasts
- ./data:/jpsonic/data
environment:
- JAVA_OPTS="-Xmx512m"
Dockerfileに合わせてjpsonic.warをリネーム。Dockerfile書き換えてもいいけど。
cd install/target/dependency
mv jpsonic.war jpsonic-main.war
cd -
ビルドして起動。
docker-compose build
docker-compose up -d
いじょ。
日本語索引が超便利!(吉川晃司がよしかわだと思われて「や」に入っちゃったりするけど)
「.localはmDNSで使ってるからローカルLANで使うべきではない」というのを社内掲示板で見かけて、ふーんそういうもんかと……
うち思い切り使ってて、ときどきMacがらみの名前解決がおかしい気がするのはこのせいか?
ということで、とりあえず.homeに変更しようと思い立つ。これもTLDの衝突可能性があるからよくはないみたいなんだけど、いまのところ.homeの払い出しは凍結されているようなのでよしとしましょう。
マイクロソフトの推奨は自前ドメインのサブドメインにすることみたいなんだけど、なんとなく面倒かなあ……
(自前ドメイン持ってない大多数の人はどうすんだろ)
以下、たった今変更したときのメモ。サーバの環境はUbuntu 18.04。
ローカルDNS(BIND)の設定変更
- # rndc -k /etc/bind/rndc.key freeze
- /etc/bind/named.conf.localのzoneを修正
- /var/lib/bind/db.hoge.localをコピって新しいドメイン用のファイルを作成。DDNSで追加されたホスト名は削る。
- /var/lib/bind/db.x.168.192の旧ドメイン名を変更。DDNSで追加されたホスト名は削る。
- # rndc -k /etc/bind/rndc.key thaw
- # service bind9 restart (不要かも)
DHCPの変更
- /etc/dhcp/dhcpd.conf内の旧ドメイン名を変更。optionsとDDNS用の設定あたり。
- # service isc-dhcp-server restart
Linuxサーバ自身の変更
- /etc/hostsを修正
- /etc/netplan/50-cloud-init.yamlを修正、修正後 # netplan apply
- /etc/systemd/resolved.confを修正、修正後 # systemctl restart systemd-resolved
面倒なのでいろいろ修正した後はサーバ再起動しちゃえ。あとDHCPクライアントも。
Ubuntu 18.04で新しくサーバ立てたので、テレビ録画環境を移行。
Chinachuはドキュメント通りに入れていけばOKなのだが、微妙にハマったのがdvbのパーミッション。
今回は、PT3をLinuxカーネルに含まれてるdvbドライバで動かしてるんだけど、rootでしかアクセスできなくて録画プログラムが動かない。
で、こんな感じでudevのファイル書いてみた。
$ cat /etc/udev/rules.d/99-dvb.rules
KERNEL==”dvb*” GROUP=”video”, MODE=”0666″
KERNEL==”dvb0.dvr0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb1.dvr0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb2.dvr0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb3.dvr0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb0.demux0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb1.demux0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb2.demux0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb3.demux0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb0.frontend0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb1.frontend0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb2.frontend0″ GROUP=”video”, MODE=”0666″
KERNEL==”dvb3.frontend0″ GROUP=”video”, MODE=”0666″
……もっとちゃんとした書き方ある気がするけど、動いたからまあいいか。
あ、修正したら再起動しないと反映されなかった。udevのサービス再起動ではなぜかダメ。
他にもsystemdになったので、スタートアップのやり方が変わっていたりする。
全部動いてる状態で、
pm2 save
pm2 startup
とすればOK。