nextCloud24.02のサーバーにPHP 8.1をインストールする

【環境】

PPAからリポジトリを追加する

aptコマンドでインストールしたいが、現時点で公式パッケージにPHP 8.1が存在しない。
そのため個人のパッケージ保管庫(Personal Package Archive, PPA)からダウンロードする。

リポジトリをaptに追加する。

sudo add-apt-repository ppa:ondrej/php

PHP 7.4をアンインストールする

sudo apt remove php7.4*
sudo apt auto-remove

PHP8.1とnextCloudに必要なPHPモジュールをインストールする

sudo apt install php8.1 php8.1-ctype php8.1-curl php8.1-dom php8.1-GD php8.1-iconv php8.1-JSON php8.1-mbstring php8.1-mysql php8.1-zip php8.1-bz2 php8.1-intl php8.1-apcu php8.1-memcached php8.1-imagick php8.1-gmp php8.1-bcmath -y

php -vでバージョンを確認してみる

PHP 8.1.7 (cli) (built: Jun 10 2022 12:22:48) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
with Zend OPcache v8.1.7, Copyright (c), by Zend Technologies

以上

.htaccessで404エラーを指定したページに飛ばす

存在しないディレクトリ、ファイルへの海外からのアクセス


nextCloudを運用しているWebサーバに海外から/wp/、/wordpress/、/blog/などにアクセスが来てログを見ると404ばかり。毎日ログ見ている訳では無いから正確な数は知らないが、鬱陶しいので.htaccessを使いGoogleに飛ばしてやる事にした。

.htaccessを使用して404を指定したページにリダイレクト

/var/www/html/に.htaccessファイルを作成する。

viエディタを使って作成する。
sudo vi /var/www/html/.htaccess

404エラーすべてを特定のWebページ(https://www.example.com/など)にリダイレクトする場合は、.htaccessファイルに次の行を追加するだけ。

ErrorDocument 404 https://www.example.com/

ApacheServerを再起動

sudo systemctl apache2 reload

nextCloudを22.2.6から23.0.3にバージョンアップした時の記録

nextCloudを23.0.3にバージョンアップしたら以下の警告が表示された。

エラー内容


You have not set or verified your email server configuration, yet. Please head over to the Basic settings in order to set them. Afterwards, use the "Send email" button below the form to verify your settings.


設定から個人情報をクリックして、プロフィールのメール欄に使用したいメールアドレスを入力する。

次に基本設定をクリックし、メールサーバー部分のフォームに入力する。今回はGmailOutlookの両方で試してみたのでどちらも記載しておく。
どちらも入力時にnextCloudのログインパスワードを求められるので準備しておくこと。

Gmailを使う場合

送信モード SMTP
暗号化 SSL/TLS
送信元アドレス 未入力でOK
認証方法 ログイン(認証を必要とするにチェックをつけること)
サーバーアドレス smtp.gmail.com
ポート 465
資格情報 プロフィールで設定したGmailのメールアドレス
パスワード Gmailのパスワード

※二段階認証を使用している場合は、パスワード欄にアプリパスワード(無ければGoogleにログインして発行する)を入力する。

Outlookを使う場合

送信モード SMTP
暗号化 STARTTLS
送信元アドレス 未入力でOK
認証方法 ログイン(認証を必要とするにチェックをつけること)
サーバーアドレス smtp.office365.com
ポート 587
資格情報 プロフィールで設定したOutlookのメールアドレス
パスワード Outlookのパスワード

※二段階認証を使用している場合は、パスワード欄にアプリパスワード(無ければOutlookにログインして発行する)を入力する。

上記の情報を入力したら「保存ボタン」を押して情報を保存し、「メールを送信ボタン」を押す。
プロフィールで指定したメールアドレスに「XXX(ユーザー名)さん、成功です!」とのメールが届けば完了。

nextCloudを22.2.3から22.2.6にバージョンアップした時の記録

nextCloudを22.2.3から22.2.6にアップデートする際にセキュリティ&セットアップ警告に「最後のバックグラウンドジョブの実行は4ヶ月前を実行しました。何かがおかしいようです。」との表示を確認。
cronのバックグラウンドジョブが4ヶ月前に実行されたっきりらしい。

/var/www/nextcloud/cron.phpを見てみると、中身が空の状態になっていた。
バージョンアップをしたら解決するかと思い、22.2.3から22.2.6にしてみたがバックグラウンドジョブの問題は解決しない。
それどころか新たに以下のデータベースのエラーが発生した。

エラー内容


データベースにいくつかのインデックスがありません。大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。 "occ db:add-missing-indices"を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。 インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。

  • テーブル "oc_filecache"のインデックス "fs_storage_path_prefix"が見つかりません。
  • テーブル "oc_filecache"のインデックス "fs_id_storage_size"が見つかりません。
  • テーブル "oc_properties"のインデックス "properties_pathonly_index"が見つかりません。
  • テーブル "oc_jobs"のインデックス "job_lastcheck_reserved"が見つかりません。

取り敢えずデータベースのエラー解決から手を付けてみる


nextCloudが配置されているディレクトリでocc db:add-missing-indicesを実行するも、

「Command 'occ' not found, but there are 21 similar ones.」

と表示されてしまう。

やり方を間違えていたようだ。
sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-indicesを実行してみる。
すると、


An unhandled exception has been thrown:
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)


というメッセージが表示された。

どうやらメモリキャッシングに問題があるようだ。
管理者に移行して以下のファイルを開いてみる。

/etc/php/バージョン番号/cli/php.ini

ファイルを見てみると理由は分からないが設定したはずの「コマンドラインからのPHP実行時にAPCuを有効にする」という設定が消えていた。

そこで以下をファイルの末尾に追記。

apc.enable_cli=1

改めて、sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-indicesを実行してみる。
結果は以下のとおり。


Check indices of the share table.
Check indices of the filecache table.
Adding additional path index to the filecache table, this can take some time...
Filecache table updated successfully.
Adding additional size index to the filecache table, this can take some time...
Filecache table updated successfully.
Check indices of the twofactor_providers table.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Check indices of the cards table.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Check indices of the schedulingobjects table.
Check indices of the oc_properties table.
Adding properties_pathonly_index index to the oc_properties table, this can take some time...
oc_properties table updated successfully.
Check indices of the oc_jobs table.
Adding job_lastcheck_reserved index to the oc_jobs table, this can take some time...
oc_properties table updated successfully.


nextCloudのセキュリティ&セットアップ警告を見ると、データベースのエラーが消えていた。
どうやら成功したらしい。

なお、バックグラウンドジョブのエラーはデータベースのエラー解決から数分おいて/var/www/html/nextcloud/cron.phpを確認してみたら、構築当初に書き込んだ設定(5分おきに実行)に戻っており問題は解決した。
何故当初/var/www/html/nextcloud/cron.phpの中身が空だったのかはっきりと原因は分からないが、やはりメモリキャッシングが怪しいと考えている。

外資系の転職エージェント、ヘッドハンターを使って思ったこと

今回応募した求人を含めて2回外資系の転職エージェント、ヘッドハンターと関わった。
そして余りのいい加減さに怒り果てた。

メールが届かない事が多い


求人に応募してエージェントから「ウチに登録していないから、このメールに履歴書と職務経歴書を日本語と英語で送って欲しい」「登録面談と今回求人について説明したいからWeb面談を組みたい」と2月中旬にメールが送られてきた。早速準備してメール送る。

しかし2月後半になっても連絡が取れない。そのため電話してみる。因みに一度で出ないので何度かけた。

ようやく連絡が来たら相手は「メールが無い」と言い出す。私はメールの送信履歴から日時とメールアドレスを伝えてみるも相手の返事は「やはりありません」だ。仕方が無いからもう1回送る事にした。今度は無事に受信した様でやっと書類の送付とWeb面談の日時が決まり、後日Web面談を行った。

連絡が遅すぎる


とにかく連絡が遅すぎる。最悪なのは応募した結果も連絡せずにフェードアウトして1年後、平気に連絡してきた所だ。余りにも非常識である。こんな奴らが世界的に有名な転職エージェントだって?信じられない。

「完全自分達のペースでやっているようだから、こっちからケツ蹴っ飛ばしてやる」と思い、期日までに連絡を寄越すよう伝えてみたが、返事が期日に返ってきた試しが無い。おかげで進捗状況がさっぱり分からず予定が組めなかった。

伝言すらまともに出来ない


余りにも連絡が遅い件に激怒した私は相手の直通電話や代表電話宛にかけて伝言を頼んだ。4回やって4回とも伝言されておらず、結果としてエージェントから連絡が来ない。

「誰が」「何を」「いつまでに」「どのように行う」という基本的な事すら出来ないのか?それとも俺の優先順位は低いからそういう扱いなのか?

ようやく来たと思ったら期日をとっくに過ぎた深夜2時過ぎに送ってきた。結果は不採用。ふざけるなと。

父親と一方的に絶縁した

先日用事があり両親宅へ行った際、父親から以下3つの件について意見を言われて堪忍袋の緒が切れたので表題の結末になった。

【要点】

  • なんでも良いから仕事に就け
  • お前にキャリアや職歴なんて無い
  • お前の障害の特徴・特性?知らねえよそんなもん!

なんでも良いから仕事に就け


現在通っている就労移行支援が今年の10月で3年目になるため、その後のサポートは無くなってしまう。
その事で父親から「お前どうするんだこの先?」「あれがやじゃ~これがやじゃ~と言ってるから決まらないんだ!」「仕事なんて探せば幾らでもある!」と言われた。
そういえば、あの男は新卒・既卒で就職活動を行っている時にも同じ事を言っていた。

そしてお次には「都営住宅に入れ。俺が死んだら遺族年金とお袋の年金じゃ今の場所に暮らせない。」ときた。ああそう、つまりお前は「俺の余生をお袋の面倒見て終われと言ってるのか」と思った。ふざけるなゴミ。

お前にキャリアや職歴なんて無い


私はキャリアや職歴考えると同じ職種で進めた方が良いことを伝えた。これは過去に「IT業界を続けるかどうか悩んだ」際に転職エージェントに相談した結果からである。大体35歳の人間が異業界・異業種に行く方が難しい。

すると父親から「お前にキャリアや職歴なんて無い!ただその場にいただけだろ!」という、少なからず自分のやってきた事を全否定する発言をされた。

障害の特徴・特性?知らねえよそんなもん!


「お前にキャリアや職歴なんて無い!ただその場にいただけだろ!」という発言を受けて怒りかけたが、一度落ち着けてこう父親に質問した。

「俺の障害の特徴・特性理解したうえで発言している?何度も医者に説明されたよね?」

その途端「知らねえよそんなもん!」と怒鳴りつけられた。流石に頭にきた私は「分からないなら黙っていろ!もう喋るな!口を開くな!」と怒鳴りつけた。キッチンにあった包丁で刺し殺してやろうかと思ったくらいだ。

ADHDという特性上、ちまたに溢れる飲食業、接客業、単純作業の類いは全く向いていない事は過去の経験から分かっている。興味・関心が薄い事に対するやる気が湧かないのも理解している。
それだからこそ、自分に少しでも合った仕事をしないと雇う側も雇われる側も双方不幸になる。何故そんな事を理解出来ないのか。

家に帰る途中、父親だった男からの電話、メール、Skypeの着信・受信を全てブロックした。今後あの男がどうなろうと一切関知する気は無い。

才能のない発達障害者には生きる上で参考になるものが存在しない

ロールモデルの存在

ロールモデル。参考にすべき存在。自分自身「こうなりたい」「こうありたい」という存在。そんなもの。

一般的な人間ならば学校をストレートに卒業して新卒で就職をして、勤続年数やスキル、キャリアを積み上げていく。勿論、今の時代ならば途中いくつか転職はすれども、定年まで辿り着くだろう。
そして定年退職したら老齢厚生年金を貰いながら(老齢年金の額がプラスであるか否かはここでは置いておく)適度に仕事しつつ暮らすなり、再就職するなりして余生を過ごした後に人生を終える。

無論、両親の若い頃の様に右肩上がりの時代では無い、日本の経済は30年停滞しているどころか下がりつつあるから一般人ですら苦労しているのは重々承知だ。

では一般人ですら苦労しているこの時代、私の様な人間はどうすれば良いのか?

  • 6年かかったが大学(工学部)は卒業した。
  • 精神障害ADHD睡眠障害)を持っている。
  • 実家は金持ちでは無く、父親は最終的に自己破産して20年住んだ家を失った。勿論一家離散済み。

そして自己で食っていける様な才能は無い。大学を卒業後、職を転々とした後に今では生活保護障害厚生年金によって生かされている状態が4年目を迎える。

こういった人間の人生のモデルというのは何がある?何か現状を覆すだけの何かがあるのか?
残念な事にこのままでは今のままの生活が死ぬまで続く未来しか見えない。

すべての幸せな家庭は似ている。不幸な家庭は、それぞれ異なる理由で不幸である。

この言葉はアンナ・カレーニナだったか。小説を読んだ事は無いが言葉は知っている。
私は「それぞれ異なる理由で不幸」な人間だ。
現実世界もインターネット世界にも、私の様な人間が「こうして生きればなんとかなる」という見本を見た事が無い。そして幸せな人間に似ている所が無い。

優秀な障害者の皆さん

「誰それは障害があってもこう生きている」「メディアを見ろ、お前と同じ障害を持っていても働いている人はいる」

うんざりする程聞かされたし、言われずともメディアが取り上げるから目にする事はある。

だがそれが何だ?彼らは他人や社会に認められる学歴や金になる才能を持っている。私とは天と地の差だ。元より精神障害によって健常者より生産性の低い人間がなんらかの才能によって自分の思うがまま人生を歩む事なんて想像がつかない。

何をやっても無駄なのか?

先に書いた通り何度か転職はしている。だが2社目以降は1社目で被った睡眠障害のせいで解雇され続けている。
睡眠障害の治療のため1年ほど当てて、その後再就職活動をしたがスキル不足と年齢、短期離職がたたっているのか箸にも棒にもかからない。たまに面接に呼ばれる事もあるが最終面接までいけたのは100社近く受けて3社だけだ。基本は書類落ち、良くて1次面接落ちという結果。

現在は就労移行支援に通っているが、馬鹿の一つ覚えの様に障害者雇用の求人を勧めてくるのでウンザリしている。実際に数十社受けてみたが一般就労の方が書類選考を突破する確率の方が圧倒的に高い。
正直、障害者雇用の「障害に対する配慮」なんて字面だけ。良くも悪くも色眼鏡で見られるのは分かりきっている。そんな中、最低賃金に等しい給料で周囲の目に怯えながら働けというのか?
役所の連中曰く「障害年金と組み合わせれば暮らしていける」という。ふざけるな。

「取り敢えず何かしら職に就かせよう」という魂胆が丸見えなのだ。

今後人生で何かしらイベントがあるかもしれない。そのときにそんな不確定な収入で暮らしていけるか。

参考にしたいのは自分と同じ様な人間の話

参考にしたいのは私の様な人間の話だ。断じて生きていけるだけの才覚に溢れた人間の話では無い。
自分一人で動く事すら困難な訳でも無く、自立して生きている様なご立派な存在でも無い、そんな吐き気さえ通り越した中途半端な存在が私なのだ。自分でも嫌になる。

スティーブ・ジョブズアルバート・アインシュタイン発達障害者だった」

などと言う人がいるが、だから何だというのか

何の罰なのか

私が障害・異常を抱え、尚且つ才能に恵まれずに産まれてきたのは何の罰なのだろうか?

「五体満足なだけありがたく思え」

今までの人生で馬鹿どもに幾度も言われてきた言葉である。
だがあいにく私は色弱と永久歯一部欠損も持って産まれている。どちらも重度の物ではないし、別段今すぐ死ぬ様な問題でも無い。
だが脳と目の障害によって出来る仕事が制限されているのは事実だ。人生の選択肢は健常者よりも狭い事は言うまでも無い。永久歯一部欠損についてはどうやらヒトという種の進化の証らしいが、この乳歯はいつまで持つのかという四半世紀来の不安もある。

一体私が何をした?前世で余程の大罪でも犯したというのか、それとも先祖の供養が足らないとでも言うのか?仮に前世という物があったとして、それを今の私がどうできようと言うのだ。全ては私が産まれた瞬間に始まり死んだ瞬間に終わる。
もう原因の分からない障害を抱えて苦痛を受け続けるのはうんざりだ。再スタートを切ろうと動く度に「お前は要らない」とお祈りメールを叩きつけられる。自己の存在を否定されるのはもう嫌だ。

酒が飲めない体質だったら、とっくに自殺していたのではないかと思う。

私と同じ様な人がいたら、貴方が死ぬまでに何が足らないのか是非記録を残していって欲しい。

Thunderbirdで受信トレイ以外のフォルダを自動的に受信する

受信トレイ以外のフォルダを自動的に受信する

サブフォルダを見るとデフォルトだと、「このフォルダーに新着メッセージがないか確認する」にチェックが入っていない。

設定エディタ

ツール→設定→詳細→設定エディターで(一番最後にある)設定エディターを開ける。

f:id:QfP4yQA6DA:20211224194758p:plain


「mail.server.default.check_all_folders_for_new」を検索し、「true」に変更。
ダブルクリックで変更できる。

Thunderbirdを再起動すれば反映される。

nextCloudを21.0.7にバージョンアップした際のセキュリティ&セットアップ警告を解消

解決手順

nextCloud21.0.7にアップデートした際、以下の4つの警告が表示された。
それぞれ解消法を記載する。

ユーザーがインポートしたSSL証明書をチェックするバックグラウンドジョブが保留になっています。しばらくして再度確認してください。

時間をおいてみる。調べたところ1日も経てば自動的に解決するとのこと。今回は後述の作業中に勝手に解決していた(2時間くらい)

Webサーバーは適切にホスト名 "/.well-known/webfinger" が引けるように設定されていません。より詳しい情報については、ドキュメントを参照ください。
Webサーバーは適切にホスト名 "/.well-known/nodeinfo" が引けるように設定されていません。より詳しい情報については、ドキュメントを参照ください。

/etc/apache2/apache2.confの最終行に以下を追記して再起動

Redirect 301 /.well-known/webfinger https://example.net/nextcloud/index.php/.well-known/webfinger
Redirect 301 /.well-known/nodeinfo https://example.net/nextcloud/index.php/.well-known/nodeinfo

ご使用のシステムには、デフォルトの電話地域が設定されていません。これは、国コードなしでプロファイル設定の電話番号を検証するために必要です。
国コードなしで番号を許可するには、地域のそれぞれの ISO3166-1コードとともに "default_phone_region" を設定ファイルに追加してください。

/var/www/html/nextcloud/config/config.phpの$CONFIG = arrayの中に

'default_phone_region' => 'JP',

を追記してページを再読み込みする。

データベースにいくつかのインデックスがありません。
大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。
"occ db:add-missing-indices"を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。
インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。

下記コマンドを叩く。
cd /var/www/html/nextcloud/
sudo -u www-data php /var/www/html/nextcloud/occ occ db:add-missing-indices

Ubuntu18.04から20.04へのアップグレード手順(AWS Lightsail)

アップグレード手順

SSHポートを一時的に開けておく

# nft add rule ip filter input iifname eth0 tcp dport 1022 accept

$ sudo apt update
$ sudo apt upgrade
$ sudo apt full-upgrade

$ sudo apt autoremove

A new version of /boot/grub/menu.lst is available, but the version installed currently has been locally  modified.

What would you like to do about menu.lst?

install the package maintainer's version ←こっち選択

keep the local version currently installed


$ sudo apt install update-manager-core ←インストール済みだった

$ do-release-upgrade -c

$ sudo do-release-upgrade

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?

Continue [yN] y ←yを押す

Starting additional sshd

To make recovery in case of failure easier, an additional sshd will
be started on port '1022'. If anything goes wrong with the running
ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port.
Asthis is potentially dangerous it's not done automatically. You can
open the port with e.g.:
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT'

To continue please press [ENTER] ←Enterを押す

Updating repository information
Third party sources disabled
Some third party entries in your sources.list were disabled. You can
re-enable them after the upgrade with the 'software-properties' tool
or your package manager.

To continue please press [ENTER] ←Enterを押す

Do you want to start the upgrade?

18 installed packages are no longer supported by Canonical. You can
still get support from the community.

3 packages are going to be removed. 140 new packages are going to be
installed. 537 packages are going to be upgraded.

You have to download a total of 267 M. This download will take about
33 minutes with a 1Mbit DSL connection and about 10 hours with a 56k
modem.

Fetching and installing the upgrade can take several hours. Once the
download has finished, the process cannot be canceled.

 Continue [yN]  Details [d] ←yを押す

The LXD project puts out monthly feature releases which while backward compatible at an API and CLI level, will contain some behavior change and potentially require manual intervention during an upgrade. 

In addition to those, every 2 years a LTS release is made which comes with 5 years of support through frequent bugfix-only releases.                                                                                             

The LXD team recommends you pick "4.0" for production environments and use "latest" if you're interested in getting the latest LXD features.

LXD snap track

latest
3.0
4.0 ←選択してEnterを押す

Configuration file '/etc/vim/vimrc'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** vimrc (Y/I/N/O/D/Z) [default=N] ? ←Enterを押す

A new version (/tmp/file65YM5R) of configuration file /etc/ssh/sshd_config is available, but the version installed currently has been locally modified.                                                             x

What do you want to do about modified configuration file sshd_config?

keep the local version currently installed ←選択してEnterを押す

古いパッケージ一覧が表示されるので削除

/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/50-cloudimg-settings.cfg'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-1039-aws
Found initrd image: /boot/microcode.cpio /boot/initrd.img-5.4.0-1039-aws
Found linux image: /boot/vmlinuz-5.4.0-1038-aws
Found initrd image: /boot/microcode.cpio /boot/initrd.img-5.4.0-1038-aws
Found linux image: /boot/vmlinuz-4.15.0-1021-aws
Found initrd image: /boot/microcode.cpio /boot/initrd.img-4.15.0-1021-aws
done
Processing triggers for dbus (1.12.16-2ubuntu2.1) ...
Processing triggers for rkhunter (1.4.6-8) ...
Invalid SCRIPTWHITELIST configuration option: Non-existent pathname: /usr/bin/egrep
Invalid SCRIPTWHITELIST configuration option: Non-existent pathname: /usr/bin/fgrep
Reading package lists... Done
Building dependency tree
Reading state information... Done

Searching for obsolete software
Reading state information... Done

Remove obsolete packages?

51 packages are going to be removed.

Continue [yN]  Details [d] ←yを押す

アップグレードを完了させる為に再起動

System upgrade is complete.
Restart required
To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.

Continue [yN] ←yを押す(押すと再起動する)

2~3分待ってからSSHで接続する

以下のコマンドを実行してVERSIONが20.04になっていたら成功
$ more /etc/os-release