2024-02-23

Nextcloudアップグレードでエラー

Nextcloud 28にアップグレードしたら(Dockerコンテナをpullしたら)、メンテナンスモードになって使えなくなってしまった。

Maintenance modeをoffにしようとすると失敗し、コマンドラインでアップグレードしようとするとこんなエラー。

$ docker-compose exec -u www-data app php occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Setting log level to debug
Updating database schema
Exception: Database error when running migration 28000Date20230906104802 for app core
Index name "card_name_index" for table "cards_properties" collides with the constraint on table "oc_cards_properties".
Update failed
Maintenance mode is kept active
Resetting log level

どうもoc_なんちゃらってテーブルが悪さしているようなので、全部dropしたった。初めはエラーが出るテーブルを1つ1つ消してたんだけど、ずーっとエラーが繰り返されて面倒になったのでこんな感じでoc_で始まるテーブルを全削除。

# mariadb -u root --password=xxxx nextcloud -e 'show tables;' -s|grep oc_|xargs -I "@@" mariadb -u root --password=xxxx nextcloud -e "drop table @@"

これでもう1回occ upgradeしたら、なんか色々作り直してる的なメッセージが出て、無事起動。
よかったよかった。

2022-06-12

Cloudflareに魂を売ってみた

うちの回線遅いなーフレッツ光に変えようかなーでも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暗号モードをフル(厳密)に変更しておいたが、ただのフルとどう違うのかはよくわからん。

とりあえずここまでやって満足したが、ゼロトラストなんかもできちゃうみたいなので、まだ色々遊べそう……しかし、なんでこれが無料なのか全く謎だわ……

2021-07-16

またもNextcloudが動かん

いつの間にかNextcloudがVer22になっているのだが、今度はMariaDBをいっしょにアップデートしたせいで動かなくなってしまった。

mariadbを5.6に固定するか、起動オプションに--innodb_read_only_compressed=OFFを付ければよいらしい。
docker-compose.ymlのcommand:にこれを追加したら無事アップデートできました。

2021-03-05

Nextcloudが動かん

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からも削除。
で、無事動きましたとさ。

2021-02-23

n8n.ioを立ててみる

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ショートカットを組み合わせればなにかできるかな)

2020-08-10

PrometheusとGrafana

Nature Remoが赤点滅から復帰しなくなってしまって、修理に出したら新品になって返ってきた。ありがてえ。

ということでIoT熱が再燃したので、またダッシュボードでも作るかということでPrometheusとやらに手を出してみたのです。以前はGoogle Spreadsheetとか使ってたんだけど、PrometheusGrafanaの組み合わせが流行りっぽい。

いつも通り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、簡単にいろいろ視覚化できて楽しい。なにかグラフにするネタないかなー。

2020-03-07

Send URLワークフロー再び

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