webshでやったことまとめ
websh
という
webアプリ
を作成して運用している
だいたいどういうことやったのか忘れないようにまとめる
ソースコード
アプリケーションとデプロイパイプラインの実装
https://github.com/jiro4989/websh
インフラ
のコードは非公開
アプリの実装 (
nim
/
docker
)
フロントエンド (
karax
)
バックエンド (
jester
)
GitHubActions
でデプロイパイプライン作成
インフラ
セキュリティ
対策
パスワード認証でサーバにsshできなくする
SSH
ポート番号の変更
iptables
(
ufw
)でアクセスポート制限
ipsetで大量のIPをブロック
fail2ban
で不正アクセス監視+BAN+
slack
通知
AIDE
でファイル改ざん検知
不要なサービスの停止
Infrastructure as Code
Ansible
でプロビジョニング
Serverspec
で
インフラ
のテスト
fabric
でデプロイ
監視
prometheus
と
Grafana
、
loki
でサービス・リソース・ログ監視
ログ監視に合わせたログの
JSON
化
UptimeRobot
でサービス生存監視
daemon
管理
systemd
(途中から使うのやめたけれど
supervisor
)
ログ
systemd-journald
でログ管理
systemd-journald
から
promtail
、
loki
に流して
grafana
から見る
logrotate
でログローテーション
(途中から使うのやめたけれど
fluentd
)
他
さくらVPS
でサーバのレンタル
ドメイン
取得
DNS
設定
Lets encrypt
で証明書の自動取得
アプリのフロントとして
Nginx
でプロキシ
障害対応
webshのシステム構成図
を書いた
前は
draw.io
で書いていたけれど今は
PlantUML
Docker API
の有効化
ストレージ制限をするための
パーティション
作成
cron
で定期実行ジョブ管理
感想
振り返ってみるとやはり
インフラ
側のほうが圧倒的にやることが多い
websh
のアプリ側はめちゃくちゃ単純なのもある
画面は特に手抜き
サーバレス
やマネージド、コンテナ技術の機運が高まっているのも納得
websh
くらいのアプリなら
heroku
とかでも運用できたのでは、とか思う
まあ
websh
の目的は
インフラ
の勉強なので
heroku
使っちゃ意味がない