1.8K Views
December 16, 23
スライド概要
細野英朋▼#Apple #Fediverse #Ingress (RES) #Linux #クリスチャン (プロテスタント) #剣道 (三段、休み中) #セキュリティ (CISSP・登録セキスペ)#鉄道 #武蔵境▼プロフィール画像 @inaharu0717
Mastodon.Tokyoのくふう 第0回 Fediverse Linux User Group勉強会 2023年12月16日 @[email protected]
自己紹介 @[email protected] • インターネット老人 • 1995 : 大学でUnix • 1998 : JRPMからLinux • 2021 : Mastodon.Tokyo • Mastodon.Tokyoは2代目 • macOS・Linux
Mastodon.Tokyo Ubuntu 22.04 LTSベース • Mastodon v4.2.3、機能追加なし • アセットを変更 • VPS 1台(2台に増強予定) • パッケージをインストール • PostgreSQL・PgBouncer・Redis • Apache(Nginxは使っていない) • 自前インストール • Ruby・node.js
Mastodon.Tokyoのくふう (設定内容は省略します) • WireGuardでSSHの口を塞ぐ • moshでSSH接続を継続する • systemdのドロップイン • direnv・nodenv・rbenv • Let's Encryptの小ネタ • sudoの設定 • アセット変更
WireGuardでSSHの口を塞ぐ SSHのポート番号変更より確実に攻撃試行を防げる。 • インストール • (Ubuntu)apt install wireguard • (macOS)brew install mas; mas install 1451685025 • WireGuard経由のSSHセッションだけufwで許可する。 • 公開鍵認証̶̶https://h12o.blessedgeeks.com/a-introduction-of-wireguard-and-tailscale/ • 「WireGuardでは必ずコンピュータ同士を公開鍵暗号で認証しあい、認証が成功してはじめて ピアを成立させる仕組みになっています。ピアが成立したコンピュータ同士ではグローバルなイ ンターネットから切り離されたIPネットワークを作ることができ、そこにSSH通信など守るべ き重要な通信を移行できます。」
mosh ノマド(死語)でもSSH接続を継続、ドヤリング(死語)できる。 • インストール • (Ubuntu)apt install mosh • (macOS)brew install mosh • SSHをUDPで飛ばすことで、ネットワークが切れてもセッションを保持して くれる。 • mosh=MObile SHell
systemdのドロップイン serviceファイルを書き換えないで済ませる。 • ドロップインはserviceファイルをオーバーライドしてくれる。 • /etc/systemd/system • mastodon-sidekiq.service・mastodon-sidekiq.service.d/override.conf • [email protected]・[email protected]/override.conf • mastodon-streaming.service・mastodon-streaming.service.d/override.conf • [email protected]・[email protected]/override.conf • mastodon-web.service・mastodon-web.service.d/override.conf
direnv RAILS̲ENV=production bundle exec bin/tootctl……を打たずに済ませる。 • インストール • (Ubuntu)apt install direnv • .bashrcなり.zshrcなりに初期設定をしておけば、ディレクトリに出入りしたとき に./.envrcを読み、環境変数やPATHを設定してくれる。 • https://github.com/h12o/.zsh/blob/ 19ae5bd16e423a1a1f6ea5466866f38b0a6ad7c1/.zshrc#L177 • tootctl cache clearとだけ打てばRAILS̲ENV=production bundle exec bin/ tootctl cache clearを実行したことになる。
nodenv・rbenv Mastodon公式の手順にあるnodeのaptリポジトリは使いたくない。 • git clone https://github.com/rbenv/rbenv ~mastodon/.rbenv • git clone https://github.com/rbenv/ruby-build ~mastodon/.rbenv/plugins/ ruby-build • git clone https://github.com/nodenv/nodenv ~mastodon/.nodenv • git clone https://github.com/nodenv/node-build ~mastodon/plugins/nodebuild • git clone https://github.com/pine/nodenv-yarn-install ~mastodon/plugins/ nodenv-yarn-install
Let's Encryptの小ネタ ドメイン名-le-ssl.confという名前が好きではない。 • /etc/letsencrypt/cli.ini • apache-le-vhost-ext = s.conf • これで/etc/apache2/sites-available/mastodon.tokyo̲http.confをもと に/etc/apache2/sites-available/mastodon.tokyo̲https.confができる。 • ドメイン名̲http.confという名前にするのがポイント
sudoの設定 環境変数SSH̲CLIENT・SSH̲CONNECTIONは引き継がせる。 • /etc/sudoers.d/99-env̲keep • Defaults env̲keep += "SSH̲CLIENT SSH̲CONNECTION" • プロンプトの出し分けに使っている。 • SSH接続していればホスト名を、そうでなければlocalhostをプロンプトに 入れている。
アセット変更 プログレッシブウェブアプリで使うことを想定した。
まとめ Mastodonをただ運用するだけでも、Linuxユーザーなら学びがある。