あんパン

こしあん以外は認めない

dokku環境を作ってStartSSLでhttps化するまで

Heroku使ってますか。Heroku便利なんですけど、最近無料版だとコンテナを24時間upし続けることができなくなりました。

まぁたいていの実験的なWebAppならなんとかなるんですけど、Twitterのupdate-name(なんかのツイートをトリガーに自分の名前変えるやつ)とかSlack用のHubotとか24時間監視系のアプリを常時立ち上げするのが難しくなりました。

7ドルくらい支払えよという気持ちもわかるのですが、何分金欠なので別のソリューションが欲しいところです。

dokkuというものを使うとHerokuとほぼ同様な感じでアプリケーションをデプロイできて便利なのでその話をします。

dokku

dokkuは200行くらいのBashで書かれている(実際は依存ファイルとかツール群があってそれに助けられてる)PaaS環境みたいなやつです。Dockerをベースにしていて、gitでpushするとよしなにデプロイしてくれます。中でheroku-buildpackというのを使っていい感じにビルドしてくれます。なので、デプロイするときもHerokuみたいな出力がでてきます。

dokkuの環境を作るにはここの指示に従えば良いです。 Dokku - The smallest PaaS implementation you've ever seen

Nginxの設定とかを豪快に吹っ飛ばすのでまっさらな状態のUbuntu 14.04にインストールする必要があります。まああとはよしなにやるととりあえずデプロイできるようになります。ドメインが1つ必要で、サブドメインごとワイルドカードでdokkuホストに向ける必要があります。

StartSSL

Let’s Encryptとかいう無償のSSL証明書発行サービスが11月くらいにでるのですが、ワイルドカード証明書は取れないのでStartSSLでワイルドカード証明書をとります。Let’s Encryptは取得も自動化できるのでpushをhookして証明書を取得すればなんとかなるという気もしますが、Nginxのconfを動的に書き換えてリロードする必要があり、やはり面倒なのでワイルドカード証明書をとることをオススメします。

StartSSLは基本的に無料でSSL証明書を取得できますが、ワイルドカード証明書をとるにはPersonal Identity Verificationというものを受ける必要があります。これを受けるには59.90ドル/2年かかり、かつ個人を証明するための書類(顔写真/誕生日/住所が記入されている)が2セット、携帯または固定電話の請求書(氏名/住所/電話番号が記入されている)が必要になります。最初の書類はアップローダでアップロードしますが、以後はメールでやりとりする必要があります。当然英語です。

電話の請求書を送ると、その番号に電話が来ます。相手はちゃんと人間で、名前の確認と誕生日、住所を質問されます。うまく答えられると3時間くらいでapproveされるという話を聞かされます。

英語が苦手な人は請求書がないみたいな話をすると国際特殊通常書留でverification codeが送られてきて、Webで入力するとなんとかなるという噂です。が、これを選択すると全プロセスを終えるのに15日前後かかるため受け答えができるのであれば電話の請求書を送ったほうが早いです。

あと、StartComの人は国際電話に慣れてないらしく、電話をかけられないというメールを送ってくることがあります。

www.howtocallabroad.com

ここのURLを投げつけてexit codeとか確認して電話してくれみたいな話をするとうまく電話がきました。

approveされると通常のSSL証明書取得プロセスと同様の手順でワイルドカード証明書(サブドメインが*の証明書)を取得できるようになります。

これを

ここらへんを参考によしなにやるとdokkuをhttps化できます。

まとめ

以上の手順でさくらのVPS 2Gプランにdokkuをインストールしました。普通にupdate-nameをデプロイしただけだとメモリ使用量が5%くらいでとても快適です。

dokku自体、WebUIがない、スケールができない、マルチテナント/マルチユーザ(アクセス制御)ができないなどいろいろな不便な点はありますが、単純に個人的に使うのであればProcfileを書けばシュッとデプロイできるので、これ以上ない環境だと思います。興味のあるかたはぜひ構築してみてください。