カテゴリ「メモ」に属する投稿24件]2ページ目)

Icon of naoki
kmyblueにElasticsearchを導入してみた忘備録

 気が付いたら3時間ほど格闘していたので、今後の為に忘備録を!忘れる前に!!
 それなりに文章が長くなるかもしれないので、畳んでおきます。
#わーさんがやってみた

参考サイト・公式系
https://github.com/kmycode/mastodon/wiki/ElasticSearch%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95 (kmyblue公式wiki)
https://docs.joinmastodon.org/admin/elasticsearch/ (Mastodonのドキュメントサイト・英語)
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/install-elasticsearch.html (Elasticsearchのドキュメントサイト・英語)
https://github.com/WorksApplications/elasticsearch-sudachi (Sudachiプラグインを置いてある場所・英語)
https://github.com/WorksApplications/elasticsearch-sudachi/releases (実際に使用中のElasticsearchに対応したSudachiプラグインを探す先・英語)
https://github.com/WorksApplications/SudachiDict (Sudachiプラグイン用の辞書ファイル・英語)

参考サイト・忘備録系
https://blog.noellabo.jp/entry/2019/04/19/YNUL9UsohRgNKSya (『ElasticsearchをMastodonとは別のサーバに設置する』Fedibird管理人のえるさんによる2019年の忘備録)
https://github.com/felx/mastodon-documentation/blob/master/Running-Mastodon/Elasticsearch-guide.md (2018年の英語記事)
https://www.geekfeed.co.jp/amazonlinux2-elasticsearch7-sudachi#elasticsearch-sudachi (『AmazonLinux2にelasticsearch7と日本語の形態素解析器「Sudachi」プラグインをインストール』2020年の記事)

実際に行った作業手順
0.下調べした結果、別サーバーへの設置を諦める
 主にVPS同士の通信面への知識不足と、VPSの必要スペックがよく分からなかったことなどから、断念。

1.Elasticsearchの推奨スペックを求めて唸る
 普通に検索すると、64GBの物理メモリを準備して半分を割り当て云々……みたいなのが引っかかってきたり、ストレージの必要量もよく分からなかったりしたので、取り敢えず自鯖(RAM 4GB)のメモリ使用量が半分くらいなのを確認の上で、メモリ1GBを割り当てることにしました。
 どうやら、MastodonでのElasticsearchは1GBで止まることあり、2GBあれば普通に動くけれど4GBが安定?という話があるようです(風の噂)
 のちに、のえるさんから、FedibirdのElasticsearchはRAM 4GBのVPSを3台使っているとの情報を得られました。

2.Elasticsearchをインストールする
 基本的にkmyblue公式wikiとMastodonやElasticsearchのドキュメントを見ながら進めていく感じです。
 2024年5月現在、Mastodonはバージョン7のElasticsearchを使用すること前提なので、バージョン7.17のElasticsearchを入れます。
 非DockerのUbuntuの場合、以下のような感じです。

sudo apt install openjdk-17-jre-headless
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
sudo apt install elasticsearch
systemctl daemon-reload
systemctl enable --now elasticsearch
sudo apt-mark hold elasticsearch

 最後の行はSudachiプラグインを使用する際に必要です。
 というのも、Sudachiプラグインは厳密にElasticsearchのバージョンに依存するので、勝手にアプデされると使えなくなってしまうからです。

 なお、/etc/elasticsearch/jvm.optionsを編集することで、割り当てるメモリを定義することができるようです。
 詳細な設定方法は https://github.com/felx/mastodon-documentation/blob/master/Running-Mastodon/Elasticsearch-guide.md (2018年の英語記事)の中ほどにありますが、今回は1GBだけ割り振りたかったので、以下を設定しました。

-Xms256m
-Xmx256m

 なお、設定後はElasticsearchの再起動が必要です。

3.Mastodonの設定ファイルを書き換える
 これに関してはMastodonのドキュメントサイト・英語の通りですね。
 .env.productionに最低限これだけでも書き足します。

ES_ENABLED=true
ES_HOST=localhost
ES_PORT=9200

 なお、まだMastodonの再起動は行いません。

4.Sudachiプラグインを導入する
 https://github.com/WorksApplications/elasticsearch-sudachi/releases (実際に使用中のElasticsearchに対応したSudachiプラグインを探す先・英語)から、Elasticsearch 7.17.何かしらの数字に対応した最新版のSudachiプラグインのアドレスを取ってきて、/etc/elasticsearch/に導入します。

wget https://github.com/WorksApplications/elasticsearch-sudachi/releases/download/v3.1.1/elasticsearch-7....
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///home/(ユーザー名)/elasticsearch-7.17.21-analysis-sudachi-3.1.1.zip

 無事にインストールできたかの確認は、以下のコマンドで。

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin list

5.Sudachiプラグイン用の辞書ファイルをダウンロード・展開
  https://github.com/WorksApplications/SudachiDict (Sudachiプラグイン用の辞書ファイル・英語)からリンクを辿って最新版の辞書を取ってきます。

wget http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict/sudachi-dictionary-latest-core.zi...
sudo apt install unzip
unzip sudachi-dictionary-latest-core.zip
mkdir /etc/elasticsearch/sudachi/
cp sudachi-dictionary-latest-core/system_core.dic /etc/elasticsearch/sudachi/system_core.dic

 辞書までインストールできたら、追加で/etc/elasticsearch/sudachi/config.jsonに下記を記述して保存します。

{
  "systemDict": "system_core.dic"
}

 念のためにElasticsearchを再起動しました。

sudo systemctl restart elasticsearch

6.kmyblueの再起動と設定
 この辺りはkmyblue公式wikiの手順通りです。

sudo systemctl restart mastodon-*

sudo su - mastodon
cd live
ln -s config/elasticsearch.default-ja-sudachi.yml .elasticsearch.yml

 念のためにもう一度Mastodonの再起動後、いよいよ満を持して

RAILS_ENV=production bin/tootctl search deploy


7.未知の領域・Elasticsearchをアプデするときは
 取り敢えず https://blog.noellabo.jp/entry/2019/04/19/YNUL9UsohRgNKSya (『ElasticsearchをMastodonとは別のサーバに設置する』Fedibird管理人のえるさんによる2019年の忘備録)を読むのが安定でしょう。
  • elasticsearchのプラグインはバージョンチェックが厳密で、本体のバージョンと完全一致したものを使う必要があり、毎回削除して入れ直しが必要
  • なので、本体だけうっかりアップデートすると死ぬので、普段はapt-markでholdしておくこと
  • https://github.com/WorksApplications/elasticsearch-sudachi/releases からanalysis-sudachiの最新リリースをチェックし、対応版がでてから切り替えるのが吉


sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-sudachi
sudo apt-mark unhold elasticsearch
sudo apt install elasticsearch
sudo apt-mark hold elasticsearch
wget https://github.com/WorksApplications/elasticsearch-sudachi/releases/download/次のバージョンの数値/analysis-sudachi-elasticsearch7.何かしらの数字-次のバージョンの数値.zip←バージョンにより数字は変わります
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///home/(ユーザー名)/analysis-sudachi-elasticsearch7.何かしらの数字-次のバージョンの数値.zip←同上
sudo systemctl restart elasticsearch
畳む
Icon of naoki
取り敢えず、参考サイトだけ貼り付けまくっておくか……(次のnote記事の下準備) #セキュリティ忘備録

https://note.com/lovely_daphne590/n/nfe6be1e5b79f
https://note.com/lovely_daphne590/n/n26c915c04856
↑ユーザ作成からのルート封じからのポート制限まで

https://zenn.dev/xurenjun/articles/a4a744c55a7085
↑モズさん情報(ConoHaでの設定方法、上記に加え、Fail2banまで)

https://manual.sakura.ad.jp/vps/support/security/firstsecurity.html
↑モズさん情報その2(サクラさんのマニュアル)

https://blog.naskya.net/post/6kic0tebueju/
↑なすきゃさんによるFirefishの建て方、ただしArch Linux
Icon of naoki
 自鯖系記事をnoteにアップしてて、ふと振り返ると記事数の多さにちょっと眩暈(めまい)がするよね。
 noteと自サイトだと、まあnoteの方が記事への流入は多そうだし末長く記事が残ってそうだとは思うけれど、noteは色んな方の記事がありすぎて、いざという時に過去に読んだ記事を探すのちょっと手間取る時があるような気がして、実際に流入があるかはさておき、自サイトの整備もやった方が良いのだろうなって思ってしまう。
 とは言いつつ、ヘルプ記事候補ってやっぱりアレか。
  • ハウツー自鯖
  • FediverseのSNS系プラットフォーム紹介(鯖缶目線はどうせ自鯖系で書くだろうから、一般目線とか前提知識とか)
  • Mastodonの初心者向け解説

 どの項目を見ても、それなり以上の分量が約束されているので、気長な作業だろうなと思うやつー。
Icon of naoki
 Mastodon系ですら、のえるさんが「生きている」初心者向け記事を探すくらいに初心者向け記事が枯渇しているんだなと思うと、ひょわーって思う。
 まぁ、Misskey系はもしかしたらあるのかもしれないけれど。Sharkeyのは、わーさん途中までやりかけて頓挫してるけど。

 自鯖系記事も続き書かなきゃって思うけれど、初心者向け記事も書いた方がFediverseの輪は広がるのだろうなと、いやしかし記事メンテの労力……(悩
Icon of naoki
 いいかげんにWordPress製なのに放置中のHostdon私的まとめを何とかしないとなぁと思って、移転させました。
 そうしたら、まさかのCSS記載あったから、コード部分を表現するCSSも結局考えることになった。

 そんなわけで、もうnote記事とかもその気になったら引っ張って来れそうな気がするようなしないような。
 単純に記事数が多いので、さっくりと持って来られることはないと思うけれど。
Icon of naoki
 現在、自鯖本を電子書籍か何かで出そうかなって格闘しているけれど、内容をここのサイトに適宜載せていくか悩み中。
 因みにもしも載せるとなったら、コマンド系の表示用CSSを頑張って作らなきゃなぁ(遠い目)ってのが一番のネックになってる。

【追記】
 現時点で表に出せそうなものをnote記事にしたら6つも記事を増やすことになって大草原。
Icon of naoki
 そう言えば、最近はゆるっと鯖缶情報まとめをひっそり運用してますが、わーさんの独断と偏見で、わーさんまで流れてきた鯖缶情報網からのアレコレをゆるっと投げてますので、鍵運用です。
 わーさんが信用してないと、フォロー承認されません。拡散防止のため、現在は基本的にフォロワー限定投稿しかしてません。
 中身が気になる方は、一回わーさんの本体に聞いてみましょう。そこで該当スクショが出てきたら、フォロー申請も承諾される可能性が高いです。
Icon of naoki
kmyblue引っ越してみたメモ

例によって長いので、畳みます。
後ほど、先達さんも記事を上げてくれるらしいです、楽しみ。
#わーさんがやってみた

kmyblueサーバー移行 やったこと

* 新鯖にkmyblueを新規インストール(参照0)して、mastodon:setup開始直前まで進める(mastodon:setupは行わない、データベースユーザーmastodonのパスワードは念のため旧鯖にそろえる)
* 旧鯖止める(参照1)
* .env.productionを移行(live下隠しファイル)
* バックアップするべき容量を減らす(参照2)
* Postgresのダンプとロードを行う(参照3)
* 旧鯖のローカルファイルを圧縮、新鯖に持って行って解凍(参照4)
* RAILS_ENV=production bundle exec rails assets:precompile を実行し、Mastodon をコンパイル
* 各ユーザーのホームタイムラインを再構築するために RAILS_ENV=production ./bin/tootctl feeds build を実行(しなかったので、タイムライン消えまくりw)
* 新しいサーバーでマストドンを起動
* DNS 設定を更新
* Nginxの設定を更新またはコピーし、必要に応じてLetsEncryptを再実行(参照0に則って新規設定し直ししたが、参照5を試しても良かった)


参照0
https://github.com/kmycode/mastodon/wiki/Installation


参照1
sudo systemctl stop mastodon-{web,sidekiq,streaming}


参照2
# どのファイルが容量を食っているのか算出
RAILS_ENV=production bundle exec bin/tootctl media usage

# 過去の投稿を削除。日数は適宜調整
RAILS_ENV=production bundle exec bin/tootctl status remove --days=90

# プレビューカードを削除。日数は適宜調整
RAILS_ENV=production bundle exec bin/tootctl preview_cards remove --days=180

# リモートメディアを削除
RAILS_ENV=production bundle exec bin/tootctl media remove --days=0

# 孤立メディアを削除
RAILS_ENV=production bundle exec bin/tootctl media remove-orphans


参照3
mastodon:setup を実行する代わりに、template0 データベースを使用して空の Postgres データベースを作成 。
(これは Postgres のダンプをリストアするときに便利だそう。pg_dump のドキュメントに記載)
古いシステムの mastodon ユーザーで以下を実行。

pg_dump -Fc mastodon_production -f backup.dump

rsync または scp を使って backup.dump ファイルをコピー。
次に、新しいシステムで mastodon ユーザで空のデータベースを作成。

createdb -T template0 mastodon_production

そして、コピーしたバックアップをインポート。
(念のため、旧鯖と同じ位置にインポート、ユーザー権限やパーミッションもそろえておく)

chown --recursive mastodon: /home/mastodon/backup.dump

chmod 664 /home/mastodon/backup.dump

pg_restore -Fc -U mastodon -n public --no-owner --role=mastodon \
  -d mastodon_production backup.dump

(新しいサーバでユーザ名が mastodon でない場合、上記の -U と --role の値を変更する必要があることに注意。なお、2つのサーバ間でユーザ名が異なっていても問題ない模様)


参照4
旧鯖にて

tar czf systemfiles.tar.gz /home/mastodon/live/public/system

これが作業ユーザーに入ったら新鯖に持っていく
解凍は(必要に応じてsudo入れつつ)

tar -xvf systemfiles.tar.gz

すると作業ユーザーの下に新たにhomeから増えたので、以下で持っていく(指定なければ作業ディレクトリ内の解凍らしいので、移動前パスは適宜探してください)

sudo mv /home/(ユーザ名)/home/mastodon/live/public/system /home/mastodon/live/public/.


参照5
Let's Encrypt SSL証明書の再発行
移行先サーバにて、 Let's Encrypt SSL証明書の再発行を行う。

sudo certbot certonly --standalone -d yourdomain.tld
(SSL証明書そのものをコピーしてこればいい説もあるが。。。)

Nginx の起動
↓ 一般ユーザ作業

# SSL証明書が正しく取得・インストールされていれば、問題なく立ち上がる
sudo systemctl start nginx
sudo systemctl start mastodon-{web,sidekiq,streaming}



参考サイト
https://github.com/kmycode/mastodon/wiki/Installation
https://dolphilia.com/translation/mastodon/running/migrating
https://qiita.com/neustrashimy/items/520838806e4524b229b9

後で発見したサイト
https://www.nan1.casa/blog/2023-06-12-backup-mastodon/
畳む
Icon of naoki
Spam attack on Twitter/X rival Mastodon highlights ‘fediverse’ vulnerabilities 和訳挑戦
元サイト: https://techcrunch.com/2024/02/20/spam-attack-on-twitter-x-rival-mastodon-highlights-fediverse-vulne...

 かなり大雑把な翻訳ですが、長くなるので畳みます。
 なお、個人的には、繊細な方には続きを読むことはオススメしません。語気強い方々の意見も出てましたので。
 ついでに、元記事そのものが本当に正しいことを書いているのか、についても各々で精査をお願いしたいところ……(わーさんが読んだ範囲だけでも色々怪しい)

 そんなわけで、
【めっちゃ雑な要約】スパム湧いたよ、みんなちゃんと戸締まりしようね!

Twitter/XのライバルであるMastodonにスパム攻撃がおこなれ、「フェディバース」の脆弱性が浮き彫りになる
 スパムによる攻撃がMastodonやMisskeyなどのフェディバースを襲った。ここ数日では、攻撃者はMastodonの、主に小規模サーバーを対象として、登録が開放されているのを良いことに自動でスパムアカウントを作成し続けた。Mastodonの創設者、兼CEOであるEugen Rochko氏は、週末にこの攻撃について言及し、Mastodonサーバーの管理者たちに対し、登録を承認制にすることと使い捨てアドレスのプロバイダーをブロックすることが問題解決の助けになると述べた。
 フェディバースがスパム攻撃に晒されるのは初めてではないとはいえ、Rochko氏が言うには、今まではMastodon.socialのような大規模サーバーのみが標的とされることがほとんどで、しかもMastodon.socialは開発陣によるサーバーであるため、自ら攻撃を凌ぐことができていた。しかし今回は小規模の、むしろ放置されているようなサーバーが狙われたため、急激なスパムアカウントの登録とスパム投稿が可能となった。

(訳註:元記事ではここに、該当投稿のスクリーンショット。上記の他、Rochko氏は、MastodonがhCaptchaも使えることを述べている)

 このスクリプトにより全自動化されたスパム攻撃は、Discord上の紛争に端を発している。Mastodonのレポートによると、Discord上のとあるサーバーをBANさせようとしたようだ。(訳註:リンク先はMisskey系のサーバーの投稿で、内容も、Discordのbotに損害を与えられたのが発端らしいと書いている模様)攻撃の対象はMastodonにとどまらず、Misskeyにも及んだ。スパムの文章が最初は日本語であったことから、日本でも多くの攻撃が行われた。

 スパムによる攻撃は、フェディバースの構造上の脆弱性の1つを浮き彫りにした。Mastodonはソースが公開されており、誰でも自分のサーバーを立て、連合できるようになっている。
 小規模サーバーの多くは愛好家が趣味で立てるため、このようなスパム攻撃に対して対策が後手に回ることになった。普段からサーバーの状態に注意を払わず、登録も公開していた管理者のサーバーが、スパムの踏み台になったのである。
 自身もサーバーの管理者である@Chris@mastodon.cosmicnation.coは、次のように言及した。
「今回のことで、自分がサーバーを持っていたと思い出した管理者もいる。更に、まだまだ多くの無防備な放置サーバーの存在があることがわかったんだ」
 ここ数日で、サーバー管理者たちは協力しあって、サーバーをスパムから守るブロックリスト作成の助けとなればと、放置サーバーのリストを作成した。また、多くのサーバーが管理者の判断により攻撃が止まるまで連合を切る(訳註:鎖国する)こととなった。

 Tapbotsによる有名なMastodonサードパーティアプリのIvoryは、緊急アップデートによりスパムらしきメンションを弾くフィルターを実装したが、それでもプッシュ通知はどうにもできなかったとのことである。

 スパム攻撃は今朝方から収束に向かっているようにも見え、この4日間の中で初めてスパムアカウントの凍結数が40を下回ったと報告する管理者もいる。MastodonがTechCrunch(訳註:記事の発行元)に言うには、活動している管理者、もしくはモデレーションチームの有効なサーバーであれば、Mastodonには自動アカウント作成を防ぐようなツールが多くある。その中には承認制やCAPTCHA、ブロックのための豊富な設定が含まれるため、素早く対応できたのであろうと。また、今回の騒ぎの発端となった紛争が収まりつつあることも影響しているだろうとのことであった。

 フェディバースの脆弱性が明らかになったことで、さらなる対応策ができると前向きに考える人もいる一方で、Rochko氏がスパム攻撃の始まった頃に反応しなかったことを腹立たしく思っている人もいる。サーバー管理者の中には、諦めたくなった人もいたようだ。

 MastodonのCTOであるRenaud Chaput氏は、攻撃を受けることでソフトウェアは堅牢に洗練されていくのだという見解を示した。
「現状、この問題はアプリに何かを組み込むことでサクッと解決するようなものではないが(何せフェディバースの連合は複雑なので!)、ソフトウェアの改善は続けていく。また、デフォルトで登録を公開状態にしないようにする、登録を公開するときには管理人に対し、しっかりとモデレーションする必要があるなどの、慎重な判断を促す注意文を表示するといった対策をとっていくつもりだ」

 Instagram Threadsが登場し、Actibity Pubにも連合予定なことでMastodonの使用率は落ちてきていた。昨年の10月に180万あった活動的なアカウントは、Threadsの公開と共に150万、Blueskyの公開で100万まで落ち込んでいる。フェディバース全体ではおよそ290万ほどの活動的なアカウントがあるが、今後ここにThreadsが参入することでスパム予防への期待がある一方、Metaに乗っ取られるのではという心配の声も多数ある。
畳む
Icon of naoki
kmyblueの強み英訳チャレンジ(途中)
 https://github.com/kmycode/mastodon の一部を英語にしてみるメモ。
 長いので、たたみます。
#kmyblue英訳チャレンジ

Following upstream changes of Mastodon

kmyblue will follow the changes in Mastodon instead of making too many original features. New features in Mastodon will be available in kmyblue, with the existing original features still remaining at the same time.

Good for Half-closed communities

Since the first kmyblue server was made for Japanese subculture artists (maybe famous as “Otaku”), kmyblue is specialized in their needs. One of the most important needs for “Otaku” is not to spread out all of their behavior (especially their inner spirits) to everywhere else, which became an important feature of kmyblue as protected privacy.

Original “Public-unlisted” posts may be available, which can be seen from your local timeline, but won’t go to other server’s global timelines. The Japanese naming is similar to “local only” posts in Misskey, though it is an apparently different thing. “Local only” cannot be seen from other servers, while “Public-unlisted” goes to home timelines of those who follow you, whether they are on your same server or not.

There is a feature named “Circle” that is similar to the Circle function in former Twitter. It allows you to make a post to your specific followers that you grouped in your Circle beforehand, and if your Circle member replied to it, it will also be seen by all of your Circle members. But you have to beware that this is a feature of kmyblue and Fedibird, because other servers cannot handle this feature properly yet.

畳む

■Share

MaMiShare

■旅空ノ夢(Misskey):

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■新着画像リスト:

全1個 (総容量 119.9KB)

■日付検索:

■カレンダー:

2024年5月
1234
567891011
12131415161718
19202122232425
262728293031

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年10月12日(日) 06時41分26秒〔103日前〕