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上にアプリケーションをデプロイできるようになりましたとさ。