<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dokku on oinume journal</title>
    <link>https://blog-lampetty-net.web.app/categories/dokku/</link>
    <description>Recent content in Dokku on oinume journal</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <lastBuildDate>Sat, 30 Dec 2023 15:00:00 +0900</lastBuildDate><atom:link href="https://blog-lampetty-net.web.app/categories/dokku/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>HasuraをDokku上で動かす</title>
      <link>https://blog-lampetty-net.web.app/posts/hasura-on-dokku/</link>
      <pubDate>Sat, 30 Dec 2023 15:00:00 +0900</pubDate>
      
      <guid>https://blog-lampetty-net.web.app/posts/hasura-on-dokku/</guid>
      <description>
        
          
            &lt;p&gt;&lt;a href=&#34;https://journal.lampetty.net/entry/install-dokku-on-vps&#34;&gt;VPS上にDokkuを構築した&lt;/a&gt;ので、そこに&lt;a href=&#34;https://hasura.io/&#34;&gt;Hasura&lt;/a&gt;を動かしてみるテスト。Hasuraとは簡単に言うとPostgreSQLのテーブルスキーマからGraphQLサーバーを構築してくれるミドルウェア。&lt;/p&gt;
&lt;p&gt;前提として、Dokkuはすでに構築済みとする。(自分の場合はUbuntu 22.04 上にDokku 0.32.3を構築済み)&lt;/p&gt;
&lt;h2 id=&#34;手順&#34;&gt;手順&lt;/h2&gt;
&lt;p&gt;まずは最初に&lt;code&gt;hasura&lt;/code&gt;という名前のアプリケーションを作成する&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dokku apps:create hasura
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;次に、HasuraのためのPostgreSQL databaseを建てる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dokku postgres:create hasura-db
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Waiting &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; container to be ready
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Creating container database
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Securing connection to &lt;span class=&#34;nv&#34;&gt;database&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=====&lt;/span&gt;&amp;gt; Postgres container created: hasura-db
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=====&lt;/span&gt;&amp;gt; hasura-db postgres service information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Config dir:          /var/lib/dokku/services/postgres/hasura-db/data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Config options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Data dir:            /var/lib/dokku/services/postgres/hasura-db/data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Dsn:                 postgres://postgres:&amp;lt;redacted&amp;gt;@dokku-postgres-hasura-db:5432/hasura_db
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Exposed ports:       -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Id:                  272a6f8b722310887317b3d7e10821ed3cfcc88dae7911945c10590be338c09c
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Internal ip:         172.17.0.4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Initial network:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Links:               -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Post create network:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Post start network:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Service root:        /var/lib/dokku/services/postgres/hasura-db
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Status:              running
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Version:             postgres:15.4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上で構築したhasura-dbをhasuraアプリケーションにリンクする。ただし、この時点ではまだ&lt;code&gt;hasura&lt;/code&gt;はアプリケーションの設定がされていないので&lt;code&gt;App image (dokku/hasura:latest) not found&lt;/code&gt;のエラーが出るけどOK。&lt;/p&gt;
          
          
        
      </description>
    </item>
    
    <item>
      <title>VPSにDokkuをインストールする</title>
      <link>https://blog-lampetty-net.web.app/posts/install-dokku-on-vps/</link>
      <pubDate>Sat, 07 Oct 2023 20:10:00 +0900</pubDate>
      
      <guid>https://blog-lampetty-net.web.app/posts/install-dokku-on-vps/</guid>
      <description>
        
          
            &lt;p&gt;VPS上に&lt;a href=&#34;https://dokku.com/&#34;&gt;Dokku&lt;/a&gt;というものをインストールして、Dokku上でHello WorldするRailsアプリを動かすまでのメモ。&lt;/p&gt;
&lt;h2 id=&#34;why-dokku&#34;&gt;Why Dokku?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://dokku.com/&#34;&gt;DokkuのWebサイト&lt;/a&gt;に書いてあるように、Dokkuはオープンソース版のHerokuという立ち位置のソフトウェア。かれこれ7年ぐらいHerokuを使い続けていてとても便利だと思っているのだけど、アプリケーションを1つ動かすのに$5かかるようになってしまった。昨今の円安で750円ぐらいかかるし、アプリを複数作るとなるとそれなりにお金がかかるので、VPSでDokkuを動かしその上でアプリケーションを稼働させるようにしたいと思った。&lt;/p&gt;
&lt;p&gt;また、&lt;a href=&#34;https://web.arena.ne.jp/indigo/&#34;&gt;WebARENA Indigo&lt;/a&gt;のVPSだと、2vCPUでメモリ2GBで税込814円 / 月という安さなので、これを使うとかなりコスト抑えられそうだなと思ったからだった。&lt;/p&gt;
&lt;h2 id=&#34;インストール&#34;&gt;インストール&lt;/h2&gt;
&lt;p&gt;以下の環境にDokku 0.32.3をインストールする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WebARENA IndigoのVPS(4vCPU, MEM 4GB, SSD 80GB)&lt;/li&gt;
&lt;li&gt;OS: Ubuntu 22.04&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;インストール自体は&lt;a href=&#34;https://dokku.com/docs/getting-started/install/debian/&#34;&gt;Dokkuのドキュメント&lt;/a&gt;の通り、aptを使ってインストールすれば特にハマることはないはず。&lt;/p&gt;
&lt;h2 id=&#34;sshの公開鍵の登録&#34;&gt;SSHの公開鍵の登録&lt;/h2&gt;
&lt;p&gt;アプリケーションのデプロイ時に&lt;code&gt;git push dokku ...&lt;/code&gt;とやる場合、sshの公開鍵が登録されていないと失敗するので、以下のコマンドで登録しておく。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ echo &amp;#39;CONTENTS_OF_ID_RSA_PUB_FILE&amp;#39; | sudo dokku ssh-keys:add admin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;ドメインの設定&#34;&gt;ドメインの設定&lt;/h2&gt;
&lt;p&gt;インターネット上にDokkuを使ってアプリケーションを公開するためには、当然ながらドメインが必要なので用意しておく。自分は dokku.lampetty.net をベースドメインにして、これのサブドメインでアプリケーションを公開していくつもりなので、必要な設定をした。&lt;/p&gt;
&lt;p&gt;まず、 &lt;code&gt;domains:report&lt;/code&gt; コマンドで現状のドメインを確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dokku domains:report --global
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=====&lt;/span&gt;&amp;gt; Global domains information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Domains global enabled:        &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Domains global vhosts:         i-xxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Domains global vhosts&lt;/code&gt;はデフォルトではホストマシンのホスト名になっているので、これを以下のコマンドで変更する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dokku domains:set-global dokku.lampetty.net
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;次に、&lt;code&gt;dokku.lampetty.net&lt;/code&gt; サブドメインがこのVPSのIPアドレスになるようにDNSレコードを定義する。Aレコードの方は別になくてもいいけど、IPとのマッピングは1箇所にしたいのでこうしている。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dokku.lampetty.net A &amp;lt;VPSのIP&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.dokku.lampetty.net CNAME dokku.lampetty.net
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;digコマンドでDNSレコードを確認して、以下のように返ってくればOK。&lt;/p&gt;
          
          
        
      </description>
    </item>
    
  </channel>
</rss>