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

ソロクラウド開発(仮) /solocloud-development

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for ktaki8ra ktaki8ra
September 26, 2025

ソロクラウド開発(仮) /solocloud-development

2025/09/25に開催されたイベント「3-shake SRE Tech Talk #13 オンサイト」LT枠での発表資料です
https://3-shake.connpass.com/event/362683/

Avatar for ktaki8ra

ktaki8ra

September 26, 2025

Other Decks in Technology

Transcript

  1. ソロクラウドとは?(個人の造語) 【定義】 - グローバルIPが割り振られて外部からのアクセスが可能である(パブリッククラウド 的な要素を持つ ) - クラウドのサーバーを立てる権利に制限がある(プライベートクラウド的な要素を持 つ) -

    特定のグローバルIPアドレスからしかサーバーを立てることはできない。(個人所有 のVPNで接続する 必要がある) パブリッククラウドという程パブリッククラウドではない。 プライベートクラウドという程プライベートクラウドではない。 一人で使うが、外部に公開できる程度のクラウドではある。 よって、ソロクラウド
  2. ハードウェア 【自作PC】 用途:クラウドVM基盤としてのサーバー CPU:Ryzen 5 5500GT 6コア/12スレッド 3.6GHz メモリ:32GB(16GB *

    2枚) ディスク:HDD 1000GB(1TB) Hitachi OS:Ubuntu24.04 LTS 【Raspberry Pi 5】 用途:フロントサーバー(frontend, backendのapp搭載) CPU:ARM Cortex-A76 @ 2.4GHz メモリ:4GB ディスク:KIOXIA MicroSD 128GB OS:Debian12(bookworm) 【ネットワーク機器】 ルーター:YAMAHA RTX810(VPN接続用) スイッチ:Cisco SG300 28pp(2台) ここはもう話している余裕ない。 気になる方は後で見て下さい!
  3. ハードウェア・ネットワーク構成 YAMAHA RTX810 自作サーバー (クラウド基盤) Cisco SG300 28pp Raspberry Pi

    5 (Web) Cisco SG300 28pp Synology DS223j ONU VLAN1 VLAN3 フレッツ光 ルーター:YAMAHA RTX810 スイッチ:Cisco SG300 28pp * 2台 サーバー:ラズパイ 5(frontend、backend)、自作サーバー (クラウドVM基盤) IPアドレス:4つ - web:固定割り当て1つ - クラウドサーバー:自動割り当て 3つ 図のルーターから下は全 てバス型で構成されてい る!
  4. 現時点で実装されている機能 【アカウント認証】 - サインアップ - アカウント削除 - サインイン - サインアウト

    【VPS作成】 - 超絶シンプルなプラン選択 (OS、ディスク容量、メモリ、rootパスワード、SSHキー登録) - https://www.ktaki8ra.net/products/index.html 【VPS削除】 - 上記で作成したサーバーを消せる - ユーザーのログイン時のパスワードで一瞬で消せる。 今回話す内容は主にここ ※ 『ソロクラウド』ではなく、『プライベート VPS』となっている が、名前には大した意図はありません。 滝原が本プロジェクト開発当初に、自分専用の仮想サー バーだからという理由で勝手に VPSと名付けており、そのま まになっています。
  5. ユーザーからのリクエストの流れ Webフロント web サーバー DB 監視用 サーバー KVM クラウド基盤API 仮想化基盤

    WebAPI メール サーバー YAMAHA RTX810 1、ユーザーはまずルーターと VPNで接続する。(認証とサーバーの作成・削除は必ず指定の VPNを繋がないとリクエストが通らない。 ) 2、frontのFWが、許可している IPかどうかを判断。 (無許可の場合はパケットを落とす。 ) 3、frontのwebサーバーが、リクエストパスに応じて、許可している IPかどうかを判断。 (無許可の場合は forbiddenを返す。) 4、3まで通れば、WebAPIまでリクエストが届くようになる。 5、アカウント作成・削除、サインインを行う。 (クラウド基盤まで行かない。 ) 6(【サーバー作成】 )、アカウント認証が通れば、 WebAPI側でIPをランダムに割り振り、 DBの情報を更新。ユーザーが入力したサーバー情報と 合わせて、クラウド基盤 APIへサーバー作成のリクエストを投げる。クラウド基盤 APIはリクエストに応じて、 cloud-initの設定ファイルを作成し、 lvcreate、qemu、virt-install、virshを使ってサーバーを作成する。グローバル側はホストのブリッジを経由する。 (ここの部分については shellscriptで書いたスクリプトを Goのcmdで流している) 6(【サーバー削除】 )、アカウント認証が通れば、 WebAPI経由でクラウド基盤 APIへサーバー削除のリクエストを投げる。クラウド基盤 APIはリク エストに応じて、 lvremove、virshを使ってサーバーを削除する。 (ここの部分については shellscriptで書いたスクリプトを Goのcmdで流している) FW FW ※ スイッチは省略 VPS VPS ※ クラウド基盤ホストにも、 監視サーバーやpostfixなども載っています。 説明簡略化のため省略しております。 IP制限×3
  6. 開発者管理方法 Webフロント WebAPI webサーバー DB 監視用サーバー メールサーバー Github クラウド基盤API KVM

    仮想化基盤 ・アプリケーションとIaCのコード管理は全て Github上でやる ・デプロイには全てcapistranoを使う(安全なCDの方法があれば教えてください。 ) ・全てのアプリケーションは、 developとmainブランチのCIが通るまではデプロイしてはならない ・サーバー・パッケージ、設定ファイル等の管理は itamaeでやる ・ファイヤーウォールはルーターとサーバー内の iptables or nftables で多重化する ・監視の設定はmonitで統一し、アラート検知時や自動再起動時には、 postfix経由でメール通知するようにしている ・クラウド基盤までは、サーバー作成・削除のリクエストが来るまでは通過させない。クラウド基盤は基本的に VMを管理するだけ。 ・Githubで管理(コード・CI)、capistranoでデプロイ ・サーバー構築はitamaeで管理  (itamaeのコード自体はGithubで管理) ・アラート発生、自動再起動時にはメール通知  (デプロイ時の自動再起動設定込み ) FW FW
  7. おわり ・パブリッククラウドはありがたい (かかっても数十秒くらいで利用できるの便利 ) ・ブラウザから作成したサーバーへ接続可能になるまで 2・3分かかって、正直使い物にならない 🥱 ・今回構築するにあたって、マザーボードや CPU、メモリ、電源、ラズパイ、ケーブルなど物理機器を買ってくると ころから始めたのでだいぶお金が飛んだ。クラウドの方がいいけど、物理的に手を動かしてやるのは、エンジニ

    アリングの醍醐味だよね。 ・手先の不器用さのせいで、ネジがなかなかしめられなかったり、リビングのスイッチから作業部屋のラズパイ の約17m(壁を伝って)の距離を直接ケーブルで繋ぐといった物理的な障壁が存在しており、途中既存の配線と 絡まったりりして、かなりの苦行だった。配電事業者の方々による、あの芸術的な配線工事技術は尊敬しなけ ればならない。 ・『クラウドを使う』側ではなく『クラウドを作る』側を体験することで、クラウド事業者の実装、検証、保守管理の大 変さ、インフラ技術の奥深さを改めて知ることができた。 自宅クラウド開発楽しいよ!