generated at
webshでやったことまとめ
webshというwebアプリを作成して運用している
だいたいどういうことやったのか忘れないようにまとめる

ソースコード
アプリケーションとデプロイパイプラインの実装
インフラのコードは非公開

アプリの実装 (nim / docker)
フロントエンド (karax)
バックエンド (jester)
GitHubActionsでデプロイパイプライン作成

SSHポート番号の変更
iptables (ufw)でアクセスポート制限
fail2banで不正アクセス監視+BAN+slack通知
AIDEでファイル改ざん検知
不要なサービスの停止
Ansibleでプロビジョニング
Serverspecインフラのテスト
fabricでデプロイ
prometheusGrafanalokiでサービス・リソース・ログ監視
ログ監視に合わせたログのJSON
UptimeRobotでサービス生存監視
daemon管理
(途中から使うのやめたけれどsupervisor)
ログ
systemd-journaldでログ管理
systemd-journaldからpromtaillokiに流してgrafanaから見る
logrotateでログローテーション
(途中から使うのやめたけれどfluentd)
さくらVPSでサーバのレンタル
DNS設定
Lets encryptで証明書の自動取得
アプリのフロントとしてNginxでプロキシ
前はdraw.ioで書いていたけれど今はPlantUML
Docker APIの有効化
ストレージ制限をするためのパーティション作成
cronで定期実行ジョブ管理

感想
振り返ってみるとやはりインフラ側のほうが圧倒的にやることが多い
webshのアプリ側はめちゃくちゃ単純なのもある
画面は特に手抜き
サーバレスやマネージド、コンテナ技術の機運が高まっているのも納得
webshくらいのアプリならherokuとかでも運用できたのでは、とか思う
まあwebshの目的はインフラの勉強なのでheroku使っちゃ意味がない