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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
1
450
Claude Teamプランの コスト最適化を考える
rfdnxbro
1
820
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
MCPを待つな、パスキーを拡げよう(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
380
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
210
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
1
900
dbt と Snowflake と tag
kevinrobot34
2
300
dbt in Microsoft Fabric
ryomaru0825
0
300
信頼性はSREだけのものじゃない
hkawaras
0
350
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
0
230
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
1
460
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Color Theory Basics | Prateek | Gurzu
gurzu
0
440
The Language of Interfaces
destraynor
162
27k
Six Lessons from altMBA
skipperchong
29
4.5k
Product Roadmaps are Hard
iamctodd
55
12k
Claude Code のすすめ
schroneko
67
230k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Building AI with AI
inesmontani
PRO
1
1.2k
エンジニアに許された特別な時間の終わり
watany
108
250k
Raft: Consensus for Rubyists
vanstee
141
7.7k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
310
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