Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
自宅 PaaS でメンテナンスフリーな個人開発
Search
HORIUCHI Akihiko
December 26, 2025
Technology
39
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自宅 PaaS でメンテナンスフリーな個人開発
#tech-midnight で発表しました。
HORIUCHI Akihiko
December 26, 2025
More Decks by HORIUCHI Akihiko
See All by HORIUCHI Akihiko
What is LB? / LBaaS? / Managed LB?
hiconyan
0
110
Managed Load Balancer のつくりかた
hiconyan
0
1k
ベアメタルのつくりかた
hiconyan
1
1.4k
Other Decks in Technology
See All in Technology
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
520
[ホンマでっか SRE] あなたはなぜ SRE に?
_awache
0
510
Point Cloud as a Foreign Language for Multi-modal Large Language Model
takmin
0
320
Introduction to Bill One Development Engineer
sansan33
PRO
0
480
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
290
Claude Teamプランの コスト最適化を考える
rfdnxbro
1
820
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
AIエージェントのためのデータ設計
daiz21
0
550
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
77k
『自分で判断できるか』を基準に、プロダクトのハンズオン研修でAI利用の線を引いてみた / Where We Drew the Line on AI in Hands-on Training
honyanya
1
480
わたしが知り合いゼロの勉強会に 行けるようになるまで
r5ni4
2
840
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.3k
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
850
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
57k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
HDC tutorial
michielstock
2
830
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
790
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
260
Done Done
chrislema
186
16k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Navigating Team Friction
lara
192
16k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Transcript
自宅 PaaS で メンテナンスフリーな個人開発 Akihiko Horiuchi (@hiconyan) 2025/12/26 @ #tech-midnight
https://hiconyan.page/ 2
• いくつか Ruby や Node.js で作った個人開発の Web アプリがあり、これまでは Heroku の上で動かしてきた
◦ 家計簿、温湿度計、フォトアルバムなど ◦ Basic Dyno ($7 / 月) + Redis Mini ($3 / 月) の組み合わせのアプリが 2 つ ◦ その他もろもろで約 $30 / 月 • しかし、円安の影響で料金がかさんできたた ◦ ミニ PC を買って Dokku を入れ、そっちに移行することにした ◦ ただし、なるべく管理は楽にして、個人開発に注力したい ▪ メンテナンスフリー (OS やランタイム / ライブラリのバージョンアップなど) ▪ ステートレス / ポータビリティ (環境が壊れてもすぐに作り直せる) Background / Motivation 3
• Platform as a Service (PaaS) ◦ PaaS は、ソフトウェアを構築および稼動させるための土台となるプラットフォームを、インターネット 経由のサービスとして提供する
◦ 具体的には、インフラ / ミドルウェア / ユーザインタフェースなどのシステムを開発する手段となる ツールや、開発したシステムを運用するための環境など • Buildpack ◦ リポジトリに含まれる情報からランタイムやフレームワークを特定し、そのベスプラに則ってコンテナ イメージをビルドしてくれるもの ◦ Heroku が最初に開発し、その後 Pivotal も対応したが、現在は Cloud Native Buildpacks として標準 化されている • ちなみに… ◦ SDPF でも (ECL2.0 時代に) Cloud Foundry ベースの PaaS メニューがあったけど、サービス終了済み ◦ Pivotal が開発していたが VMWare に買収され、VMWare は Broadcom に買収された What is PaaS? Buildpack? 4
• Heroku ◦ 2007 年にアメリカで創業し、2010 年に Salesforce に買収された ◦
ソフトウェアは「Dyno」と呼ばれるコンテナの上で動き、Ruby / Python / Node.js / Go などがサポー トされている ◦ 公式のアドオンとしてマネージドな Postgres / Redis などのミドルウェアがあり、ダッシュボードや CLI から 1 クリックでインストールできる ◦ 料金はコンテナやミドルウェアの性能 (プラン) と、それを使った時間で決まる ▪ 無料枠があったけど 2022 年に廃止された • Dokku ◦ 2013 年頃に開発がはじまったオープンソースの PaaS ▪ Shell Script で実装されている (最近、Go でリライトしているらしい) ◦ ソフトウェアは Docker 上で動き、コンテナイメージは Heroku と同じく Buildpack で作られる ▪ 最近、マルチノードをサポートするために K3s (軽量な K8s) 上でも動かせるようになったけど、 試したことはない ◦ 公式のプラグインとして MySQL / Postgres / Redis / RabbitMQ などのミドルウェアがあり、CLI か ら 2 コマンド程度でインストールできる What is Heroku? Dokku? 5
• ミニ PC として Minisforum の UN100D を約 3 万円で購入して、Ubuntu
24.04 をインストール ◦ CPU: Intel N100 / メモリ: 16GB / SSD: 256GB • 外から SSH / HTTP でアクセスできるようにするために Cloudflare Tunnel を使うことにした (無料) ◦ ドメインの NS レコードを Cloudflare に向けておかないといけないけど、SSL も終端してくれる Infrastructure 6
• パッケージのセキュリティアップデートを自動適用して、自動再起動もして欲しい ◦ → unattended-upgrades を使って実現する ▪ 【Ubuntu】セキュリティアップデートの自動適用 | 開発者ブログ
| 株式会社Skrum ▪ 必要であれば 17:00 JST に再起動 (適当) • ランタイム / ライブラリを自動バージョンアップして、CI が通ったらデプロイまで欲しい ◦ → GitHub Actions で頑張る (Appendix を参照) ▪ 毎週日曜日の 09:00 JST に自動バージョンアップ • ランタイムのパッチバージョンアップ • bundle update / npm update • Pull Request を作って auto-merge を有効化 ▪ CI は 壊れたら家族に怒られる 壊れたら困るアプリだけ真面目に書く • 自分しか使わない 壊れても困らないアプリは壊れたら直す • Unit Test は RSpec + Integration Test は Newman (Postman) ▪ Pull Request がマージされたら (main に Push されたら) Dependency Graph を更新 • Trivy で SBOM を作って GitHub にアップロード • 脆弱性が出たら GitHub の Notifications で教えて貰える Maintenance Free 7
• Dokku は ミドルウェア系のプラグインも豊富 だけど、Redis 以外は使わない ◦ データベースを使うと、バックアップのことを考えないといけなくなる ▪ →
Google Spreadsheet をデータベース代わりにする • 家族も分析できるし、アプリの開発を止めてもデータは残る • 書き込みには 2 〜 3 秒かかるけど、Redis にキャッシュしているので読み込みは 1 秒くらい ▪ → 画像などのアセットは AWS S3 にアップロードする • 画質や画像サイズを工夫すれば、$1 未満に治まる • クリーンインストールできる / 羃等に環境構築できるようにしたい ◦ → Shell Script で頑張る (Appendix を参照) ▪ 個人開発に Ansible は too much なので ▪ Shell Script は 200 行ちょっとで済んだ • パッケージの最新化と OS の初期設定 (SSH や TZ など) • cloudflared と docker & dokku 、mackerel-agent のインストールと設定 Stateless / Portability 8
• Pull Request が作成 / 更新されたら Review App を Dokku
にデプロイ ◦ Heroku だと Review Apps の設定をしておくだけで、自動でできるんだけど… • Pull Request がマージされたら (main に Push されたら) アプリを Dokku にデプロイ ◦ Heroku だと GitHub Integration の設定をしておくだけで、自動でできるんだけど… • Pull Request がマージされたら Review App を削除 ◦ 以下同文 → GitHub Actions で頑張る (Appendix を参照) Continuous Delivery 9
• その他にも色々と工夫していて… ◦ Ruby on Rails は使わずに Sinatra を使う (手に馴染むので)
◦ ログイン機能は作らない (username と secret token で認証するだけ) ◦ PWA (Progressive Web Apps) でネイティブアプリっぽく動かす ▪ CSS / JavaScript / Web フォントはプリコンパイルして端末にキャッシュしておく • 今後やってみたいこと… ◦ K3s スケジューラを使ってマルチノード化してみたい ▪ ただし、イメージレジストリを用意する必要がある ◦ ミドルウェアの自動バージョンアップもできるようにしたい ▪ dokku redis:upgrade するだけなので In addition ... / To be continued ... 10
https://gist.github.com/hico-horiuchi/64ce86f701b2d8c46b5cb89bed0372de • GitHub Actions ◦ update_dependencies.yaml ◦ sbom.yaml ◦ ci.yaml
◦ cd.yaml ◦ garbage_collect.yaml • Shell Script ◦ setup_un100d.sh Appendix 11