Dokkuアプリイメージを利用する
1.Dokkuについて
1-1.Dokkuとは
Dokkuは、オープンソースのセルフホスト型PaaS(Platform as a Service)で、アプリケーションのデプロイや管理を簡単に行うことができます。
Dockerを基盤として、Herokuの代替サービスとして注目を集めており、Gitを用いたデプロイをサポートしています。
1-2.特徴
特徴 | 説明 |
---|---|
Gitによるデプロイ | 作成したコードをGitリポジトリにpushするだけで、アプリケーションを自動でデプロイできます。 |
プラグインによる拡張 | SSL対応、データベース連携、バックアップなど、多彩なプラグインによって機能を拡張できます。 |
1-3.活用例
活用例 | 説明 |
---|---|
小規模なWebアプリのホスティング | 個人開発やスタートアップ向けの小規模プロジェクトを簡単にデプロイ・管理できます。 |
CI/CDパイプラインの構築 | GitHub ActionsやGitLab CIと連携し、自動デプロイを実現できます。 |
ステージング環境の構築 | 同サーバー内で、本番環境とは別に、テスト用のステージング環境を構築できます。 |
2.Dokkuアプリイメージ インストール手順
3.事前準備
3-1.パケットフィルターの設定
Dokkuを利用するには、使用する機能に応じて、以下のポートを開放する必要があります。
必須ポートについては必ず開放し、任意ポートについては必要に応じて設定してください。
VPSパネルの「パケットフィルター設定」画面から「ONにする(推奨)」にチェックを入れ、該当のポートを許可するルールを追加してください。
必須ポート
用途 | ポート番号 | 目的 |
---|---|---|
HTTP | TCP 80 | ホスティングするアプリに非暗号化通信でアクセスするため。 ※Let's EncryptでSSL/TLSを設定する場合、SSL証明書の取得・更新に使用します |
HTTPS | TCP 443 | ホスティングするアプリに暗号化通信でアクセスするため。 |
任意ポート
用途 | ポート番号 | 目的 |
---|---|---|
SSH | TCP 22 | Tera TermなどのSSHクライアントを使ってサーバーに接続する場合。 |
ご利用の構成や機能に応じて必要なポートのみ開放してください。
使用していない機能に関連するポートは、セキュリティ上の観点から開放しないことを推奨します。
パケットフィルターの設定は下記マニュアルからご確認ください。
パケットフィルターの設定について
3-2.接続情報の確認
3-3.ドメインの準備
Dokkuでホスティングするアプリへのアクセスでは、SSL/TLSによる暗号化通信(HTTPS)の利用を推奨します。
独自のドメインを準備し、DNSの「Aレコード」にVPSのIPアドレスを設定してください。
4.Dokkuセットアップ手順
4-1.アプリケーションの起動確認
1.初期ページへアクセス
「接続情報の確認」で確認したURLにアクセスすると、下記のページが表示されます。
2.アプリケーションの起動確認
起動から3分ほど待つと下記のようなページが表示され、デフォルトアプリケーションが起動していることを確認できます。
4-2.git用ssh公開鍵の変更
デフォルトの公開鍵を変更する場合は、「SSH」でVPSにログインするか、「コンソール」からログインし、下記のコマンドを実行してください。
なお、赤字で記載している箇所は一例です。ご利用になる内容に置き換えてください。
1.ssh公開鍵の登録を削除
dokku ssh-keys:remove admin
2.新規ssh公開鍵の作成
ssh-keygen
# Dokku用SSH鍵 「dokku_rsa、dokku_rsa.pub」を作成する場合 # Generating public/private rsa key pair. ### 作成するファイルパスを入力 ### Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/dokku_rsa ### パスワードを入力、入力文字は表示されない ### Enter passphrase (empty for no passphrase): [test-password] ### パスワードを再入力、入力文字は表示されない ### Enter same passphrase again: [test-password] ### ファイルが正しく作成されると、保存された場所が表示される ### Your identification has been saved in /root/.ssh/dokku_rsa ### 同時に公開鍵「dokku_rsa.pub」が作成され、保存された場所が表示される ### Your public key has been saved in /root/.ssh/dokku_rsa.pub The key fingerprint is: ### root@「ホスト名」の形で表示される ### SHA256:o+R05hd1KhB41OibcA8EkngLJh0APeSFxsHOjWS54rM root@example The key's randomart image is: +---[RSA 3072]----+ |+B+*o..+oo | |../.o.. +.. | | O.B . +. . . | |. = o . +. . o | |.. ooS=o . | | o + =o..o | | o o . . | | E . | | | +----[SHA256]-----+
3.作成したssh公開鍵の登録
# Dokku用SSH鍵 「dokku_rsa.pub」を設定する場合 # cat /root/.ssh/dokku_rsa.pub | dokku ssh-keys:add admin
4.sshコンフィグの修正
nano /root/.ssh/config
# Dokku用SSH鍵 「dokku_rsa」を設定する場合 # Host (VPSのIPアドレス) hostname (VPSのIPアドレス) IdentityFile ~/.ssh/dokku_rsa StrictHostKeyChecking no
以上で編集は完了です。
ファイルの保存は「ctrl」と「x」を同時に入力してください。
「変更されたバッファを保存しますか?」と表示されるので、「y」を入力してください。
「書き込むファイル」にてファイルの指定に問題がなければ「enter」を入力し保存完了です。
4-3.ドメインの変更
Dokkuでホスティングするアプリにドメインを割り当てる場合は、Dokkuのドメイン設定を行う必要があります。
1.ドメインの設定
2.接続確認
下記のURLへアクセスして、ドメインが設定できたことを確認してください。
http://<指定したドメイン>
4-4.SSL/TLS設定
セキュリティ対策として、SSL/TLS(HTTPS)による暗号化通信の導入を推奨しています。
通信を暗号化することで、第三者による内容の盗聴や改ざんを防ぐことができます。
Dokkuで提供されているLet's Encryptのプラグインを利用することで、無料でSSL証明書の取得が可能です。
1.プラグインの導入
2.SSL証明書の取得と適用
以下のコマンドを実行して、Let's Encryptの証明書に関する通知(有効期限の警告や更新失敗など)を受け取るためのメールアドレスを設定します。
dokku letsencrypt:set <Dokkuアプリ名> email <メールアドレス>
次に、対象のアプリケーションにSSL証明書を適用します。
dokku letsencrypt:enable <Dokkuアプリ名>
証明書が正しく設定されたか確認するには、以下のコマンドを実行します。
「true」と表示されれば、SSL/TLSが有効になっています。
dokku letsencrypt:active <Dokkuアプリ名>
最後に、下記のURLへアクセスして、HTTPSで接続可能かを確認してください。
https://<アプリに設定したドメイン>
3.証明書の自動更新の有効化
以下のコマンドを実行すると、SSL証明書の有効期限が近づいた際に自動で更新されるようになります。
※本設定は、サーバー全体で1回のみ実行すれば有効となり、以降すべてのアプリケーションが自動更新の対象となります。
dokku letsencrypt:cron-job --add