oinume journal

Scratchpad of what I learned

VPSにDokkuをインストールする

VPS上にDokkuというものをインストールして、Dokku上でHello WorldするRailsアプリを動かすまでのメモ。

Why Dokku?

DokkuのWebサイトに書いてあるように、Dokkuはオープンソース版のHerokuという立ち位置のソフトウェア。かれこれ7年ぐらいHerokuを使い続けていてとても便利だと思っているのだけど、アプリケーションを1つ動かすのに$5かかるようになってしまった。昨今の円安で750円ぐらいかかるし、アプリを複数作るとなるとそれなりにお金がかかるので、VPSでDokkuを動かしその上でアプリケーションを稼働させるようにしたいと思った。

また、WebARENA IndigoのVPSだと、2vCPUでメモリ2GBで税込814円 / 月という安さなので、これを使うとかなりコスト抑えられそうだなと思ったからだった。

インストール

以下の環境にDokku 0.32.3をインストールする。

  • WebARENA IndigoのVPS(4vCPU, MEM 4GB, SSD 80GB)
  • OS: Ubuntu 22.04

インストール自体はDokkuのドキュメントの通り、aptを使ってインストールすれば特にハマることはないはず。

SSHの公開鍵の登録

アプリケーションのデプロイ時にgit push dokku ...とやる場合、sshの公開鍵が登録されていないと失敗するので、以下のコマンドで登録しておく。

$ echo 'CONTENTS_OF_ID_RSA_PUB_FILE' | sudo dokku ssh-keys:add admin

ドメインの設定

インターネット上にDokkuを使ってアプリケーションを公開するためには、当然ながらドメインが必要なので用意しておく。自分は dokku.lampetty.net をベースドメインにして、これのサブドメインでアプリケーションを公開していくつもりなので、必要な設定をした。

まず、 domains:report コマンドで現状のドメインを確認する。

$ dokku domains:report --global

=====> Global domains information
       Domains global enabled:        true
       Domains global vhosts:         i-xxxxxxxxx

Domains global vhostsはデフォルトではホストマシンのホスト名になっているので、これを以下のコマンドで変更する。

dokku domains:set-global dokku.lampetty.net

次に、dokku.lampetty.net サブドメインがこのVPSのIPアドレスになるようにDNSレコードを定義する。Aレコードの方は別になくてもいいけど、IPとのマッピングは1箇所にしたいのでこうしている。

dokku.lampetty.net A <VPSのIP>
*.dokku.lampetty.net CNAME dokku.lampetty.net

digコマンドでDNSレコードを確認して、以下のように返ってくればOK。

$ dig example.dokku.lampetty.net

example.dokku.lampetty.net. 300 IN      CNAME   dokku.lampetty.net.

これでドメインの設定は完了したので、サンプルアプリケーションをデプロイする。

アプリケーションのデプロイ

サンプルアプリケーションのデプロイはドキュメント通りにやって、最後にgit remote add dokku ...のところだけ、自分の環境に合わせて以下のようにやった。

$ cd ruby-getting-started
$ git remote add dokku dokku@dokku.lampetty.net:ruby-getting-started
$ git push dokku main

動作確認

http://ruby-getting-started.dokku.lampetty.net/ にアクセスして、以下の画面が表示されればアプリケーションがデプロイされている。(ruby-getting-started 以降のドメインは先ほど設定したドメイン)

あとはアプリケーションを https でアクセスできるようにする対応なども必要だけど、いったんこれでVPS上にアプリケーションをデプロイできるようになりましたとさ。