Dokploy入門 — Docker Compose対応のセルフホストPaaSをVPSで動かす実務ガイド

Dokploy は Docker と Docker Compose の上に構築された OSS のセルフホスト PaaS で、自前の VPS に Heroku や Vercel に近いデプロイ体験を持ち込めるツールです。本記事ではインストールから Docker Compose アプリのデプロイ、DB・バックアップ管理、Coolify や Vercel との比較検証、チーム運用の実務 Tips まで解説します。

Dokploy とは — VPSにHeroku風のデプロイ体験を持ち込むセルフホストPaaS

Dokploy は TypeScript 製の OSS プロジェクトで、GitHub 上で 36,000 スター超を獲得しています。Traefik をリバースプロキシとして内蔵し、Git push をトリガーにアプリケーションを自動デプロイできる点が最大の特徴です。

  • アプリデプロイ: Node.js・Python・Go・PHP・Ruby など主要ランタイムに対応し、Dockerfile または buildpacks 相当の仕組みでビルド
  • Docker Compose / Swarm 対応: 既存の compose.yaml をそのまま持ち込んでデプロイでき、複数ノードへのスケールも可能
  • DB 管理: PostgreSQL・MySQL・MongoDB・MariaDB・Redis・libSQL をワンクリックで作成、バックアップも標準搭載
  • SSL 自動発行: Traefik 経由で Let’s Encrypt 証明書を自動取得・更新
  • 350 以上のテンプレート: 主要 OSS プロジェクトをワンクリックでデプロイできるテンプレートライブラリ

Vercel や Netlify のような月額課金の PaaS を使わず、自社 VPS のコストだけでチームの検証環境や小〜中規模の本番環境を運用したいケースに向いています。

インストールとセットアップ

動作要件

公式ドキュメントおよびコミュニティのガイドをまとめると、最低要件は次の通りです。

項目最小構成推奨構成(本番)
RAM2GB4〜8GB以上
CPU1 vCPU2 コア以上
ストレージ30GB SSD50GB以上
ポート80 / 443 を開放(Traefik・Let’s Encrypt 用)同左

Dokploy 自体のアイドル時メモリ消費はおよそ 300〜600MB とされており、2GB の VPS でも小規模なアプリ + DB 程度なら動作します。ただし本番運用では余裕を見て 4GB 以上を選ぶのが無難です。

インストールコマンドと初期設定

Docker がインストール済みの Ubuntu VPS であれば、ワンライナーでセットアップが完了します。

curl -sSL https://dokploy.com/install.sh | bash

インストールスクリプトが Docker Swarm の初期化・Traefik の起動・管理用コンテナの起動までを自動で行い、完了後に http://<サーバーIP>:3000 へのアクセス URL が表示されます。初回アクセス時に管理者アカウントを作成すれば準備完了です。

# Swarm ノードの状態確認
docker node ls

# Dokploy / Traefik のサービス状態確認
docker service ls

Docker Compose アプリケーションのデプロイとDB管理

Git リポジトリ連携

ダッシュボードから「Create Project」→「Application」を選び、GitHub / GitLab / Bitbucket のリポジトリを連携します。ビルドタイプはデフォルトの Nixpacks(自動検出)に加え、Dockerfile・Heroku Buildpacks・Paketo Buildpacks・静的サイト用の Static から選択でき、Webhook を登録すれば git push のたびに自動デプロイされます。

docker-compose.yml のデプロイ

複数サービスで構成されたアプリは「Compose」タイプのプロジェクトとして、リポジトリ内の docker-compose.yml をそのまま指定します。

# docker-compose.yml(Dokploy でそのまま読み込める構成例)
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - DATABASE_URL=${DATABASE_URL}

  worker:
    build:
      context: .
      dockerfile: Dockerfile.worker
    command: ["node", "worker.js"]
    depends_on:
      - app

ドメインは UI 上の「Domains」タブから app サービスを選んで追加するだけで済みます。Dokploy がデプロイ時に Traefik 用ラベルを compose ファイルへ自動的に書き込んでくれるため、docker-compose.yml 側で Traefik のラベルを手書きする必要はありません。

@dokploy/cli(npm)を使えば、ダッシュボードを開かずにデプロイをキックすることもできます。

npm install -g @dokploy/cli
dokploy application deploy --applicationId <application-id>

データベース管理とバックアップ

DB は「Database」タブから種類(PostgreSQL / MySQL / MongoDB / MariaDB / Redis / libSQL)を選ぶだけでコンテナが作成され、接続文字列がダッシュボード上に発行されます。アプリからは環境変数で参照するだけで済みます。

バックアップは S3 互換ストレージ(AWS S3・Cloudflare R2・MinIO など)を接続先として登録し、cron 形式でスケジュールを組めます。

# バックアップスケジュール例(毎日3時にフルバックアップ)
0 3 * * *

リストア時はダッシュボードからバックアップ世代を選んで「Restore」を実行するだけで、手動での pg_restore 実行は不要です。バックアップ先を Dokploy が動く VPS と別リージョンのストレージにしておくと、VPS 障害時にもデータを守れます。

Coolify・Vercelとの比較検証

Dokploy vs Coolify

同じ「セルフホスト PaaS」カテゴリの代表格が Coolify です。実務での使い分けの勘所は次の通りです。

観点DokployCoolify
スケーリングDocker Swarm をネイティブ統合、複数ノードに標準対応単一サーバー運用が主。マルチサーバーは発展途上
アイドル時メモリ約300〜600MB約300〜500MB
UI/学習コストシンプルで機能が絞られており初学者向け機能が豊富な分、初見では情報量が多い
ビルド方式Nixpacks(デフォルト)/ Dockerfile / Heroku・Paketo Buildpacks / StaticNixpacks による自動検出が中心

チームで複数ノードにスケールさせる前提なら Dokploy、Nix ベースの自動検出やプレビュー環境などの機能を優先するなら Coolify、という選び方が実務的です。筆者のチームでは検証環境用に 2〜3 ノード構成を組みたかったため、Swarm 統合が標準の Dokploy を選びました。

Dokploy vs Vercel / Heroku

Vercel・Heroku はマネージド PaaS であり、インフラ管理不要な代わりに従量課金がかかります。Dokploy は VPS のコストのみで運用でき、DB やバックグラウンドワーカーを含む構成でも追加課金なしに複数サービスを動かせるのが利点です。一方で、Traefik や Docker Swarm の障害対応・アップデート・セキュリティパッチ適用は自分たちの責任範囲になる点は導入前に理解しておく必要があります。個人開発や検証環境ではコストメリットが大きく、本番のミッションクリティカルな用途では運用体制とセットで検討するのが現実的です。

実務での活用パターンと運用ノウハウ

マルチサーバー構成でのDocker Swarm活用

「Servers」からリモートサーバーを追加し SSH 鍵を登録すると、Docker Swarm のワーカーノードとして参加させられます。アプリのデプロイ設定でレプリカ数を指定すれば、複数ノードに自動で分散配置されます。

services:
  app:
    deploy:
      replicas: 3
      resources:
        limits:
          memory: 512M

監視・通知設定

CPU・メモリ・ディスクの使用率はダッシュボードでリアルタイム確認でき、閾値超過やデプロイ失敗を Slack・Discord・Telegram・メールへ通知する設定も可能です。障害の第一報を Slack に飛ばすようにしておくと、当番制の運用でも検知が早くなります。

CI/CDパイプラインとの組み合わせ

GitHub Actions からデプロイ完了を待ってから E2E テストを流したい場合は、CLI コマンドの終了コードを利用してパイプラインを制御します。

# .github/workflows/deploy.yml
- name: Deploy via Dokploy CLI
  run: |
    npm install -g @dokploy/cli
    dokploy application deploy --applicationId ${{ secrets.DOKPLOY_APPLICATION_ID }}
  env:
    DOKPLOY_URL: ${{ secrets.DOKPLOY_URL }}
    DOKPLOY_API_KEY: ${{ secrets.DOKPLOY_API_KEY }}

まとめ

項目ポイント
概要TypeScript製OSSのセルフホストPaaS。Traefik内蔵でHeroku風のデプロイ体験をVPS上で実現
要件最小2GB RAM/1vCPU、本番は4〜8GB以上を推奨。80/443ポート開放が必須
デプロイ方式Git連携の自動デプロイ、またはdocker-compose.ymlをそのまま指定するCompose型
DB管理主要DBをワンクリック作成、S3互換ストレージへのバックアップをcronで自動化
Coolifyとの違いDocker Swarmのマルチノード対応が標準。UIはシンプルで学習コストが低い
Vercel/Herokuとの違い従量課金なしで運用できる一方、インフラの障害対応は自己責任
チーム運用監視通知の連携とマルチサーバー構成でレプリカ数を指定し可用性を確保