OSS探訪

Docker化したWeb appをSSHでbare metalやcloud VMへ配備し、kamal-proxyでzero-downtime切替を行う

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
14,627
主要言語
Ruby
ライセンス
MIT
リポジトリ最終更新
2026/09/30
ページ内ナビ

概要

KamalはDocker化したWeb applicationをbare metalやcloud VMへdeployするRuby製toolです。SSHKitで複数serverへcommandを実行し、kamal-proxyで新旧container間のtrafficを切り替えてzero-downtime deploymentを行います。Rails向けに始まりましたが、DockerでcontainerizeできるWeb app全般を対象にします。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

Docker imageをbuild・registry経由でserverへ配布する

KamalはapplicationのDockerfileからimageをbuildしてregistryへpushし、対象serverへpullしてcontainerを起動する一連のdeployを自動化します。

出典:[1][2]

kamal-proxyで新旧containerのtrafficを切り替える

新versionがhealth checkへ応答した後にkamal-proxyがtrafficを切り替え、旧containerを停止することでzero-downtime releaseを実現します。

出典:[1][2]

SSH・secrets・hooksを使って複数server運用をまとめる

複数serverへSSHで接続し、config/deploy.ymlと.kamal/secrets、hooksを使ってdeployment構成と周辺処理を管理できます。

出典:[2][3]

向いている用途

Kubernetesを導入せずDocker hostへ直接deployしたい場合に向く

Dockerが動くVMやbare metalを少数〜複数台運用し、application deployを軽量なtoolchainで統一したいteamに向きます。

出典:[1]

導入前の確認

kamal setupはremote hostへDocker導入やcontainer起動を行う

初回kamal setupはSSH接続、必要に応じたDocker install、registry login、image build/push/pull、proxyとapplication container起動まで実行します。実行前に対象server・権限・networkを確認してください。

出典:[2]

registry・secret・SSH keyの管理はdeployment設計の一部になる

private registry credentialやapplication secretを.kamal/secretsとenvironmentから扱うため、CIやoperator端末を含めたcredential保護とrotation方針が必要です。

出典:[2]

server lifecycleやbackupはKamal外の責務として設計する

Kamalはapplication deploymentを簡素化しますが、OS patching、database backup、storage、監視、障害時のhost復旧などを包括的に管理するplatformではありません。

出典:[1][2][4]

参考にした公式資料

  1. [1]Kamal v2.12.0 README(2026-10-03)
  2. [2]Kamal installation guide(2026-10-03)
  3. [3]Kamal init command(2026-10-03)
  4. [4]Kamal v2.12.0 release(2026-10-03)
  5. [5]Kamal MIT license(2026-10-03)
編集部からの補足

Kubernetes clusterを用意せず、Dockerが動くVMやbare metalへapplicationを直接配備したいteamに向きます。手軽さの代わりにSSH権限、registry、secrets、host patchingやbackupなどserver運用の責任範囲は自分たちで明確にしてください。

3ステップで試す

  1. 1

    Kamal 2.12.0を導入する

    Ruby環境へstable releaseをversion固定で導入します。

    gem install kamal -v 2.12.0
  2. 2

    CLI versionを確認する

    remote serverへ接続せず、対象versionのKamal CLIが起動することを確認します。

    kamal version
  3. 3

    local deploy設定のstubを生成する

    config/deploy.yml、.kamal/secrets、sample hooksをlocalに生成します。kamal setupはremote hostを変更するため、このQuick Startでは実行しません。

    mkdir kamal-demo && cd kamal-demo && kamal init
公式READMEで確認

成長

成長の推移 · 直近30日

14,627 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
2
Open PR
86

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
14,627
Forks
754
Watchers
100
Open Issues
67
Contributors
167
所有者種別
Organization
主要言語
Ruby
ライセンス
MIT
リポジトリ最終更新
2026/09/30

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?