今回はさくらのクラウドサーバー上にプライベートなシングルホストバージョンのHeroku「Dokku」を構築する。
Dokkuの特徴
- Dockerを搭載しているので、どんなハードウェアにもDokkuをインストールすることができる
- ホスト上にセットアップしたら、Herokuと互換性のあるアプリケーションをGit経由でプッシュすることができる。
- Herokuのビルドパックを使ってビルドし、分離されたコンテナで実行する。
GitHubのSSH接続設定
事前にGitHubのSSH接続設定を済ましておく必要がある。
クラウドサーバーの構築
ディスクソース>アーカイブにチェック、今回アーカイブにはUbuntu Server 22.04.1 LTS 64bit(cloudimgでない物)を使用した
- 後ほどUbuntuにrootユーザーでログインする際に必要となる管理ユーザーのパスワードを入力
- 先ほどGitHubに公開したSSHキーを利用するので、github.comのUsernameから取得にチェックを入れユーザー名を入力し、紐付ける
ドメインの作成とDNSの設定
- さくらのドメインでドメインを取得する
さくらのドメイン - ドメインコントロールパネル>さくらのドメイン一覧>ゾーン情報
で@と*のレコードにサーバーのIPアドレスを入力する
Ubuntuにログインする
ターミナルを開いて以下のコマンドを入力
$ ssh ubuntu@${YOUR_IP_ADDRESS}
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! が出力された場合
$ ssh-keygen -R ${YOUR_IP_ADDRESS}
でssh-keygenコマンド情報を打ち消してから再度実行する。
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? → yes
Dokkuのインストール
#At the Server
$ wget -NP . https://dokku.com/install/v0.30.6/bootstrap.sh
$ sudo DOKKU_TAG=v0.30.6 bash bootstrap.sh
SSHキーとVirtualhost設定のセットアップ
#At the Server
$ curl https://github.com/${GITHUB_USERNAME}.keys | dokku ssh-keys:add admin
$ dokku ssh-keys:list #キーの確認
$ dokku domains:set-global ${DOMAIN_NAME}
$ cat /home/dokku/VHOST #設定されたドメインの確認
$ dokku domains:set-global ${YOUR_IP_ADDRESS}
$ dokku domains:set-global ${YOUR_IP_ADDRESS}.sslip.io
アプリのデプロイ
使用するアプリ heroku/node-js-getting-started
#At the Local
$ git clone git@github.com:heroku/node-js-getting-started.git
$ cd node-js-getting-started
$ git remote add ${REMOTE_NAME} dokku@${DOMAIN_NAME}:node-js-getting-started
$ git push ${REMOTE_NAME} main
※次回はDokkuの主要な機能とデータベースの導入などについて掲載予定