手順通りにやったらなんとかなったのでわくわく要素は無。個人のSlackのmastodonチャンネルに4.1.1の情報が流れてきたので更新した。4.1.0が出てから運用を開始したので初のアップデート。手順はリリースノートの通り。github.comどうせ自分しか使っていないので一旦サービスを落とす。依存を更新したらrebootしたくなるのでそうした。systemd上はenableされているので再起動後にMastodonのservice群は勝手に立ち上がる。リリースノートにはDBのバックアップを用意するといいぞいって書いてあるけど自分しか使ってないしいいかとおもってなにもせずに更新した。いずれにせよマネージドなPostgreSQLを利用しているので日次でスナップショットが撮られていて便利。自分は明日の前日祭からスタッフをやっているので来場されるみなさま一緒にわいわいしましょう。読者になるもっと読むコメントを書く2023-03-10SSHでログインされたらSlackに通知する割とn番煎じっぽい小ネタ。このブログは自分用メモみたいなところがあるのでそういうものです。SSHでログインされたらSlackに通知したい。誰かが入ってきたら分かるようにしたい。コンテナ化された現代の開発ではSSHログインされるサーバがまずなかったりするわけだが、個人がお金をケチって運用しているとまあある。PATH_TO_BINの1行を足せば良い。PAMはLinuxにおける認証まわりをよしなに扱えるようにする仕組み。configに書いてある行を評価していってログインの成否を決める。sessionはユーザ認証の前後あたりで実行するモジュールを指し、optionalとすることで、以降の成否が認証の成否に影響を与えないようにする。コマンドがコケても無視するというところ。pam_execを利用するといくつかの値が環境変数に設定された状態でPATH_TO_BINの実行ファイルが実行される。close_session.とのこと。これを読みつつPATH_TO_BINの中身は実際には以下のようなシェルスクリプトにしている。catatsuyさんが作られているプロダクトで、この実行ファイルをポン置きしたもの。Slackに投稿する部分はcurlなどで書くと煩雑になるので、標準入力で渡せば適当に流してくれるのはありがたい。いうことで、ここまで設定するとSSHログイン時に以下のような通知がSlackへ送られてくる。Slackにやってきた通知(いろいろ隠した)SSHログイン時だけでなく単純なユーザのログインなどもトリガーにできるので、デスクトップLinuxでもいろいろ遊べそう。読者になるもっと読むコメントを書く2023-03-03CDKでISUCONの練習環境を立ち上げる最近、ISUCON*1の練習でもしようかな〜と思いAWSに環境を立ち上げることにした。これまでは有志で作られていたTerraformの定義をありがたく利用させてもらっていたのだが、AWSだしCDKで立ち上げられると便利だよな〜という思いがあり定義を書いた。ここ2年くらい天下n品というチームでISUCONに参加していて、ときどき練習もしている。この中で使えるといいなと思って天下n品のorgに置いておいた。以下のような手順で練習環境を立ち上げることができる。Ed25519の公開鍵をEC2に送るので、デプロイ前にrepoの直下に配置しておく。持っていなかったら作る必要がある。YOUR_AWS_PROFILE各環境(ISUCON9予選とかISUCON10予選とか)がそれぞれひとつのStackとなっていて、何も指定せずにデプロイすると全環境を立ち上げようとするので注意。lsisucon10qisucon11qisucon8qisucon9qいまのところ8から11の予選に対応している。12は公式にCloudFormationの定義が配られているのでそちらを使うのがよさそう。id:tmatsuu)が管理されているmatsuu/aws-isuconを利用している。いつもお世話になっています。定義があるのでこれを書き換えれば良い。中で実際の予選で使われたのと同等のインスタンスタイプを指定していたり、optionalでセキュリティグループの開放ポート設定を行えたりする。詳しくはコードを読んでください。TypeScriptだしコード量も少ないので読みやすいはず。いうわけで、8から11の予選を立ち上げたい場合はどうぞご利用ください。ところでcdk-isuconを書いた結果、環境を立ち上げるので満足してしまってまだ練習はできていない。*1:「ISUCON」は、LINE株式会社の商標または登録商標です。この記事は「ISUCON」を運営するLINE株式会社とは一切関係ありません。Lightsailに立てる最近はあんまりTwitterを見ておらずMastodonにいる。某サーバにいたけれど水が合わないと感じていて、せっかくならおひとりさまインスタンスを持っておくといいだろうなと思い、建立することにした。立てる前にMasto.hostやHostdonなどのマネージドおひとりさまインスタンス建立サービスも眺めてみたが、運用で遊べる方がいいという気持ちが勝った。やるなら面白そうなほうがいい。あと単純にActivityPubの勉強用途でも使えるんじゃないかという魂胆もある。なんらか遊ぶ過程でMastodonのコードは眺めにいくことになると思う。いうわけで単純におひとりさまインスタンスが欲しいだけであればこれらのマネージドサービスを推す。ここからは道楽のコーナーです。普段からAWSにいろいろデプロイして遊んでいるので今回もAWS上に置くことにした。動かすための要件として考えたのは最低限遊べるくらいのスペックのインスタンスただしDBの運用はマネージドに逃がしたい(スナップショットとか勝手に撮ってほしい)くらい。LightsailにもマネージドMySQL/PostgreSQLの機能があり、こちらの方が若干安いように見えたのでこれにした。最終的な構成は以下の通り。手順通りに進めていく。ひっかかったので順を追って書いていきたい。いっても手順側は悪くなくて、自分が手順から逸脱しようとして転んだ話。swap領域を作るいきなり手順に書いてないことだけど、1GBメモリだとswap領域を作らないと足りないので初手で作っておく。/etc/fstab上から順に実行してあげればswap領域を作ることができる。様子を見てあげると丁寧。Node.jsのバージョンなにごとも最新がいいでしょ、と思って最新版を入れたらやや詰まった。Rubyについては.ruby-versionでバージョンが固定されているので手順通りのバージョンを指定しないと動かない。Node.jsについては16が指定されているが18を入れても動く。