Upgrade to Pro — share decks privately, control downloads, hide ads and more …

万国のサーバ管理者よ, 自動化せよ!

sksat
November 16, 2021

万国のサーバ管理者よ, 自動化せよ!

さくらのマイクロコミュニティ マイクラサーバー管理者の会 #2 のLT枠で発表しました

sksat

November 16, 2021
Tweet

More Decks by sksat

Other Decks in Programming

Transcript

  1. 万国のサーバ管理者よ,
    自動化せよ!
    sksat (mc.yohane.su 管理者)
    Администраторы сервера всех стран, автоматизируйте!
    さくらのマイクロコミュニティ
    マイクラサーバー管理者の会 #2

    View Slide

  2. 自己紹介
    ・sksat
    ・最近はインターンで人工衛星作ってる
    ・マイクラはあんまりやってない
    ・マイクラでオーバーエンジニアリングするのはたのしい
    ・mc.yohane.su 管理者

    View Slide

  3. mc.yohane.su

    View Slide

  4. mc.yohane.su

    View Slide

  5. View Slide

  6. 変なドメインで鯖やってます

    View Slide

  7. 構成
    ・オンプレ
    ・PaperMC,ほぼバニラ
    ・ユーザ管理: ホワイトリスト方式
    ・サーバ管理: GitHub
    ・デプロイ: 全自動
    ・プラグイン: 自動更新

    View Slide

  8. オンプレ
    ・コイツ
    ・コレを直接公開?
    → No

    View Slide

  9. Cloudflare Tunnel
    Cloudflare Accessデータシートより

    View Slide

  10. 過労死太郎,過労死!

    を持
    して!
    今はこのマシンで動いてます ...
    発表1週間前に!

    View Slide

  11. 実際の構成(過労死前)

    𝙄𝙣𝙩𝙚𝙧𝙣𝙚𝙩
    𝙬𝙞𝙧𝙚𝙡𝙚𝙨𝙨
    自室
    AP
    (応用情報ではない)
    𝙢𝙞𝙘𝙧𝙤𝙬𝙖𝙫𝙚
    𝙤𝙫𝙚𝙣
    𝓭𝓸𝓸𝓻
    𝓭𝓸𝓸𝓻
    過労死太郎
    cloudflared
    papermc
    mc.yohane.su
    cloudflared
    25565
    MySQL
    sql-exporter
    オタク共

    View Slide

  12. PaperMC
    ・Spigotのフォーク(なんか速いらしい)
    ・paperclipという便利システムがある
    ・公式のjarに対してバイナリパッチ的にパッチ適用するやつ
    (初回のみ)
    ・これを含んだコンテナは再配布しても大丈夫
    : papermc-dockerを自作
    ・開発速度がそこそこ速い

    View Slide

  13. papermc-docker
    ・コンテナイメージ作りました
    ・paperclip.jarしか入ってないので再配布
    OK
    ・GitHub Actionsでpaperclip.jarをビルド
    ・自動でPaperMC/Paperのmasterに追従
    ・複数のベースイメージに対応
    ・元々はイメージのビルドも
    mc.yohane.suでやっていたが分離

    View Slide

  14. デプロイするのダルい

    View Slide

  15. 自動デプロイ: compose-cd
    ・自作の雑自動更新スクリプト
    : compose-cd
    ・systemd timerでremote repo見に行って更新あったらgit pull
    ・イメージも新しいのがあったら
    docker pull
    ・更新したらdocker-compose down/up -d

    View Slide

  16. サーバ更新
    ・PaperMC:結構開発速い(し,リリース打たない)
    ・プラグイン:ほぼバニラなのであんまりない
    ・とはいえ入れたいものはある
    ・DiscordSRV,CoreProtect,Prometheus Exporter

    View Slide

  17. 更新するのダルい

    View Slide

  18. それ,Renovateでできるよ
    ・Renovate: 依存関係を監視してプルリク送ってくれる太郎
    https://renovatebot.com

    View Slide

  19. Renovateで諸々を更新
    ・諸々の言語,設定ファイルに対応
    ・Cargo.toml, docker-compose.ymlなど
    ・対応してないやつも正規表現でマッチできる
    ・コンテナは別repoにしてdigestを更新
    ・https://github.com/sksat/papermc-docker/

    View Slide

  20. ユーザ管理
    ・最初はなにも考えずに全開放
    ・荒らしが来た
    →ホワイトリスト

    View Slide

  21. whitelist.json

    View Slide

  22. SSHして追加するのダルい

    View Slide

  23. GitHubに置いてしまえ

    View Slide

  24. whitelist.jsonの検証ダルい

    View Slide

  25. minecraft-whitelist-validator
    ・Rustで雑に書いた
    ・GitHub marketplaceに公開(簡単に使える)
    ・誰が使うんだこんなの

    View Slide

  26. サーバの様子
    ・ゲーム内の問題もIssueで!
    ・やたら昆布がある
    ・やたら卵がある
    ・やたら人参がある

    View Slide

  27. やたらって何個?

    View Slide

  28. 正しい評価は正しい計測から

    View Slide

  29. 無茶振り
    ・手近な異常プラグイン開発者に依頼

    View Slide

  30. できた

    View Slide

  31. できた
    ・kory33/itemstack-count-infrastructure

    View Slide

  32. サーバ管理・発表: sksat

    View Slide

  33. 僕の無茶振りでプラグインを開発: Kory__3

    View Slide

  34. ロシア語監修: hsjoihs

    View Slide

  35. いくら自動化しようが
    disk fullからは逃げられない

    View Slide