🐳

なんでも1つのVPS上でデプロイできるOSS「Dokploy」を推したい

に公開

DokployでNext.jsアプリをセルフホスティング ~独自ドメイン・HTTPS・Basic認証・Supabaseも簡単デプロイ~

Dokployとは?オープンソースのセルフホスティングPaaS

Dokploy(ドクプロイ)は、オープンソースで無料のセルフホスティング型PaaS(Platform as a Service)です。つまり、自分で用意したサーバー上にHerokuやVercelのようなアプリケーションプラットフォーム環境を構築できます (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.)。Dokployを使うと、Node.jsやPythonなどさまざまな言語のアプリケーションやデータベースをDockerコンテナで簡単にデプロイ・管理できます (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.) (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.)。インフラの専門知識がなくても、ウェブGUIからデプロイやスケール、ドメイン設定、監視などが可能で、開発に集中できるのが特徴です。

Dokployは内部でDockerとTraefik(トラフィック)というリバースプロキシを活用しており、アプリのルーティングやHTTPS化を自動化しています (Dokploy - Effortless Deployment Solutions)。そのため、独自ドメインの設定やSSL証明書の取得もとても簡単です(詳細は後述)。さらに、NixpacksやHeroku Buildpacksといったビルドツールに対応しており、リポジトリのソースコードから自動で最適なコンテナイメージをビルドしてくれます (Dokploy - Effortless Deployment Solutions)。自分でDockerfileを書く必要がなく、VercelのようにコードをプッシュするだけでOKです。

Nixpacksとは?

Nixpacksは、ソースコードから必要なランタイムや依存パッケージを解析し、自動的にコンテナイメージを作成してくれるオープンソースのビルドツールです。Railway社が開発し公開したもので、言語ごとのビルド手順が組み込まれているため、多くの場合は設定ファイルなしで「とりあえずデプロイが動く」ことを目指しています。 (Introduction | Nixpacks)例えばNode.jsプロジェクトであれば、Nixpacksが自動でNodeのバージョンやビルドコマンド(npm run buildなど)を検出し、Dockerイメージをビルドしてくれます。必要に応じてカスタマイズも可能ですが、基本的にはデフォルト設定で動作するのが魅力です。

加えて、Dokployはデータベースの作成・管理機能も持っています。MySQLやPostgreSQL、MongoDB、Redisなどをワンクリックでセットアップでき、スナップショットによるバックアップ機能も備えています (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.)。さらにDocker Composeでマルチコンテナ構成のアプリも扱えたり、Docker Swarmによるマルチノード・クラスタ構成もサポートするなど (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.)、小規模サービスから本格的なシステムまでスケールできます。

要するに、Dokployは**「自分でホストできるHeroku/Vercel」**のような存在です (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。私も「自前のVPSで手軽にNext.jsアプリをデプロイできたらいいな」と思い、Dokployを試してみました。ここからは実際にNext.jsアプリをデプロイしてみた体験をベースに、独自ドメインの設定やBasic認証、テンプレート機能を活用したSupabaseの構築まで、Dokployの使い勝手を紹介します。

Dokployのインストールと初期セットアップ

まずはDokployを動かす環境を用意します。DokployはDockerコンテナとして動作するので、UbuntuやDebian系のLinuxサーバーがあれば簡単にインストールできます(Docker未導入でもスクリプトが自動でセットアップしてくれます)。公式ドキュメントによれば最低2GBのRAMと30GB程度のストレージを推奨とのことです (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。ここでは例としてUbuntu搭載のVPSを使用しました。

Dokployのインストール自体は、公式が提供する一行スクリプトを実行するだけで完了します。ターミナルで以下のコマンドを実行すると、Dokploy本体および必要なDocker等の依存コンポーネントがインストールされます。

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

インストール後、DokployのWeb管理画面はデフォルトでサーバーのポート3000で立ち上がります。ブラウザで http://<あなたのサーバーIP>:3000 にアクセスすると、Dokployの初期セットアップ画面が表示されるはずです。初回アクセス時に管理者ユーザーの作成を求められるので、指示に従ってユーザー名・パスワードを設定しましょう。管理者アカウントでログインすれば、Dokployのダッシュボードが利用できるようになります。

Next.jsアプリを自動デプロイしてみる

それでは、実際にNext.jsアプリケーションをDokployにデプロイしてみます。今回は例として、GitHubに用意したNext.jsのプロジェクト(ソースコード一式)を、本番用にDokploy上へデプロイする手順を試しました。DokployではGitリポジトリをソースに指定してデプロイすることができ、**プッシュすると自動で再デプロイ(Auto Deploy)**させる機能もあります (Auto Deploy | Dokploy) (Auto Deploy | Dokploy)。まさにVercelのような開発フローを、自前サーバーで実現できるわけです。

大まかなデプロイ手順は以下のとおりです。

  1. プロジェクトの作成: Dokployダッシュボードで「Create Project」をクリックし、プロジェクト(例:「Nextjs-App」など)を新規作成します。ここでいうプロジェクトとはアプリやデータベースなど関連するサービスをまとめるグループのようなものです。
  2. サービス(アプリケーション)の作成: 作成したプロジェクト内で「+ Create Service」をクリックし、サービスの種類として「Application(アプリケーション)」を選択します (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。サービス名を入力すると、新しいアプリケーション枠がダッシュボードに追加されます。
  3. リポジトリの連携: アプリケーションの設定画面で、デプロイ元となるGitリポジトリを指定します。まず「Provider」としてGitHubやGitLabなど使用するGitサービスを選択し、Dokployにリポジトリの情報を教えます (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)(GitHubの場合はDokploy側でトークン発行やOAuth連携を行うだけでOKです)。次にリポジトリのURL(SSHかHTTPS)とブランチ名(例:main)を入力します (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。プライベートリポジトリの場合はDokployにSSHキーを登録し、GitHub/GitLab側にその公開鍵を追加する必要があります。
  4. デプロイの実行: リポジトリを設定したら、Dokployの画面から「Deploy」を実行します。Dokployが自動的にソースコードをクローンし、Nixpacks等を用いてビルドを開始します。Next.jsの場合、ビルドと同時に npm installnpm run build などが内部で実行され、コンテナイメージが構築されます。ビルドログはリアルタイムでGUI上に表示され、エラーがあればログから原因を確認できます。無事ビルドとデプロイが完了すると、アプリケーションがDokployサーバー上で起動しました!

以上でNext.jsアプリがDokploy上で動き始めました。特にDockerfileを自作したりサーバーにNode.js環境を構築したりすることなく、ソースコードを指定してボタンを押すだけでデプロイできた点は非常に便利です。私の場合、初回デプロイはビルドも含めて数分ほどで完了し、Next.jsのデフォルトページが表示されることを確認できました。「おお、自前のVPSでVercelっぽいことができた!」と感動です。

コードの更新と自動デプロイ(Auto Deploy)

Next.jsアプリを無事デプロイできたら、次に試したいのは自動デプロイ(Auto Deploy)機能です。Dokployではアプリケーション設定でAuto Deployを有効化するだけで、指定したGitリポジトリにプッシュした際に自動で再デプロイを実行してくれます (Auto Deploy | Dokploy) (Auto Deploy | Dokploy)。設定方法はGitプラットフォームごとに若干異なりますが、基本的にはWebhook URLを発行してリポジトリ側に登録する形です。

例えばGitHubの場合、Dokploy側でAuto DeployをオンにするとWebhook用のURLが発行されます (Auto Deploy | Dokploy)。そのURLをGitHubリポジトリの設定画面の「Webhooks」に追加してあげます。これで以後、該当ブランチへコミットをプッシュするたびにDokployがWebhookを受信し、自動で最新コードのビルド・デプロイを行ってくれます。GitLabやBitbucket、Giteaなどでも同様にWebhookを登録すればOKです (Auto Deploy | Dokploy)。

Auto Deployを活用すれば、いちいち手動でデプロイボタンを押さなくてもCI/CDのようにデプロイを自動化できて快適です。ブランチを間違えたりするとWebhookが反応しないので、Dokploy側の設定ブランチとプッシュするブランチが一致しているか注意しましょう(設定がずれていると「Branch Not Match」エラーになるとのことです (Auto Deploy | Dokploy))。

独自ドメインの設定とHTTPS化

Next.jsアプリがDokploy上で動いたら、次は独自ドメインで公開してみましょう。初期状態では http://<サーバーIP>:<ポート> のようなURLでアクセスする形ですが、Dokployは独自ドメインの割り当ても簡単にできます。Traefikによるルーティング統合のおかげで、ホスト名とコンテナの関連付けや証明書の管理をDokployが肩代わりしてくれます (Dokploy - Effortless Deployment Solutions)。

ドメインを設定する手順は以下のようになります。

  • ドメインのDNS設定: お名前.comやCloudflareなど、お使いのドメイン管理サービスで、Dokployを稼働させているサーバーのIPアドレスにドメインのAレコードをポイントします。例えば app.example.com というサブドメインで公開したい場合、app に該当するAレコードを追加し、値にDokployサーバーのIPを設定します。
  • Dokploy側でドメイン追加: Dokployダッシュボードの対象アプリケーション設定画面で「Domains」セクションに移動し、「Add Domain」をクリックします (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。表示されるフォームに独自ドメイン(例:app.example.com)を入力し、ルーティング先のコンテナ内部ポートを指定します(Next.jsのBuildタイプがStaticやNixpacksの場合はポート80を指定、とドキュメントにあります (Domains | Dokploy))。
  • HTTPSの有効化: ドメインを追加すると一覧に登録されます。続いてそのドメイン設定で「HTTPS」を有効にしましょう。DokployではLet's Encryptによる無料のSSL証明書発行を自動で行ってくれるため、チェックボックスをオンにするだけでHTTPS化できます (Domains | Dokploy)。Certificateの項目は通常letsencrypt(デフォルト)を選択します。あとはDokploy側がLet's Encryptに証明書をリクエストし、Traefikが証明書を取得・更新してくれます (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。

以上の設定を終えると、少し待ってから https://app.example.com にアクセスしてみてください。独自ドメインでNext.jsアプリにアクセスでき、アドレスバーに錠前マークが表示されれば成功です!これで自前サーバー上のアプリにもHTTPSで安全に接続できるようになりました。証明書は自動更新されるため、一度設定してしまえばメンテナンスフリーなのも嬉しいポイントです。

補足: 独自ドメインがまだ用意できていない場合でも試せるように、Dokployにはデフォルトで *.traefik.me ドメインの利用機能があります (Domains | Dokploy)。Traefikの提供する一時サブドメインで、Dokploy画面から「Generate Domain」を押すと あなたのアプリID.traefik.me のようなURLが自動生成されます (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。これを使えばDNS設定なしで一応の動作確認が可能です(※ただしこのtraefik.meドメインはHTTPのみで、HTTPSを有効にするにはやはり証明書を用意する必要があります (Domains | Dokploy))。

アプリにBasic認証をかける(Basic Auth機能)

公開したアプリケーションをBasic認証で保護したい場合も、Dokployなら数クリックで設定できます。ステージング環境なので認証をかけたい、といったケースに便利です。Basic認証を有効化するには、対象のアプリケーション設定画面で「Advanced」タブ内の「Security」セクションを開きます。そこにユーザー名とパスワードを設定する項目があり、値を入力して保存するだけで即座に反映されます (Advanced | Dokploy)。

Basic認証をオンにしたアプリにアクセスすると、ブラウザ標準の認証ダイアログが表示され、先ほど設定したユーザー名/パスワードを要求されます (Advanced | Dokploy)。認証に成功しない限りコンテンツにはアクセスできません。この機能もTraefikのリバースプロキシで実現されており、中間に認証層を挟むことでアプリ側の実装変更なしに簡易認証を追加できるわけです。

例えば社内向けのツールや開発中のサイトをDokployでホストしている場合、本番公開前にBasic認証で閲覧制限をかけておく、といった使い方ができます。これも従来であればNginxやApacheの設定を書いたりする必要がありましたが、DokployならUI上でポチポチするだけなのでお手軽ですね。

テンプレート機能でSupabaseを一発デプロイ

Dokployには、自分のアプリ以外にも**便利なテンプレート(ひな形)**が多数用意されています。これはWordPressやGhost、Plausible、Supabaseといったオープンソースソフトウェアをワンクリックでデプロイできる機能です (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.) (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.)。公式サイトによれば、Supabase, Cal.com, Pocketbaseなど人気のサービスもテンプレートに含まれており、ボタン一つで必要なコンテナ群を起動できるとのこと (Dokploy - Effortless Deployment Solutions)。自前で環境構築が面倒なツールも、この機能を使えばすぐ試せるので非常に魅力的です。

私も試しにこのテンプレート機能からSupabaseをデプロイしてみました。SupabaseはFirebaseのオープンソース代替となるBaaSで、PostgreSQLデータベースと認証・ストレージ機能がセットになったものです。通常、公式Docker Composeなどで複数コンテナを立ち上げる必要がありますが、Dokployならテンプレート経由で簡単でした。

(Dokploy - Effortless Deployment Solutions)実際、Dokploy上のプロジェクト内にSupabaseやPlausible、Ghostなど複数のサービスを追加してみた様子が上のスクリーンショットです。左側のメニューからプロジェクト「Testing」を選択し、右上の「+ Create Service」ボタンから次々とテンプレートデプロイした結果、SupabasePlausibleGhostAppwriteなどが一覧に並んでいるのが分かります。コンテナ同士のネットワークや依存関係もDokployが適切に配置してくれるため、例えばSupabaseをデプロイするだけでPostgresやAPIサーバーなど必要なコンポーネントがまとめて起動しました。数分待つと管理画面URLやAPIエンドポイントが表示され、すぐにSupabaseの機能を使い始めることができました。

テンプレート機能は他にも非常に多くのソフトウェアが登録されています (Open Source Templates | Dokploy) (Open Source Templates | Dokploy)。ブログ作成ならGhost、ウェブ解析ならPlausible、スケジュール予約ならCal.com、ノーコードDBならNocoDBなど、一通りの自炊サービスは網羅されている印象です。これらはおそらくDokployコミュニティによってメンテナンスされており、100種類以上のテンプレートがデフォルトで利用可能です (Open Source Templates | Dokploy)。もちろん自分でカスタムテンプレートを作成してプロジェクト内で使い回すこともできます。よく使う構成をテンプレ化しておけば、新規プロジェクト立ち上げ時のセットアップがさらに高速化するでしょう。

まとめ:Dokployを使ってみた感想

最後に、Dokployをひと通り使ってみたまとめです。

  • 手軽さ: Dockerの知識がなくてもGUI操作中心でデプロイやサービス追加ができ、非常に手軽に感じました。特にNext.jsアプリの自動デプロイではNixpacksのおかげで設定いらずで、まさに「セルフホスト版Vercel」という触れ込みに偽りなしです。 (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)
  • 多機能さ: アプリだけでなくデータベースの作成やバックアップ、独自ドメイン設定、Let's EncryptによるSSL自動化、Basic認証、リソース監視、通知連携(Slackやメール)など、開発・運用に欲しい機能がオールインワンで揃っています。 (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.) (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.)特にTraefik連携によるHTTPS対応は初学者にとって大きな障壁なので、自動化されている点は大きなメリットでしょう。
  • 拡張性と自由度: Dokploy自体がオープンソースであり自分のVPSに導入するため、カスタマイズやデータの保有面での自由度が高いです。Dockerコンテナベースなので、最悪Dokployを使わずとも中身は標準的なDocker環境として管理できますし、ベンダーロックインもありません。必要に応じてCLIやAPI経由でスクリプトから操作することも可能です (GitHub - Dokploy/dokploy: Open Source Alternative to Vercel, Netlify and Heroku.)。
  • 学習コスト: 一方で、多機能ゆえに初めて触れる際は多少UIの項目に戸惑う部分もありました。プロジェクト/サービスの概念や、各タブ(Environment変数やAdvanced設定など)の使い所はドキュメントを見ながら理解すると良いでしょう。 (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide) (Advanced | Dokploy) ただ基本的なデプロイの流れは直感的で、公式ガイドに沿って進めれば迷わず使える印象です。

総じて、個人開発者や小規模チームが**「低コストで手軽にセルフホスティングしたい」**というニーズに応える素晴らしいツールだと感じました。これまで筆者はDocker Composeで地道に環境構築をしていましたが、Dokployを使えばかなりの時間短縮になりますし、何よりGUIで一覧管理できる快適さがあります。「自分でサーバーを用意するのはちょっとハードルが高い…」という場合でも、Dokployのおかげでインフラ管理の負担がグッと減るはずです。

興味がある方はぜひDokployをインストールして、Next.jsアプリやSupabaseなどをデプロイしてみてください。公式ドキュメントも充実しており導入手順や各種機能の詳細が説明されています (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide) (How to Deploy a Next.js App with Dokploy: A Step-by-Step Guide)。セルフホストのPaaSによって、自分だけのクラウド環境を構築する体験はなかなか楽しいものです。Dokployを活用して、インフラ構築の悩みから解放されつつ、自由自在なアプリホスティングをぜひ実現してみてください!

Discussion