アクセス解析その3(備忘録)

October 29, 2022

この記事の要約


umamiというアクセス解析のサーバーをFly.ioに変更する備忘録

以下オタクの日記


結構前にumamiというアクセス解析を建てたんですがその間データベースをHerokuからSupabaseへ引っ越していました。でもumamiをアップデートしたらデータベース接続が調子悪くなってしまいどうもSupabase特有の問題っぽいしSQL何も分からんなのでまた引っ越しをしました。丁度Heroku大移動勢が発生しているシーズンで参考になる記事がたくさんあって助かった。Heroku無料枠11月で終わるよ!(大声)

Railway.appかFly.ioかなという感じだったんだけど

  • Railway:デプロイは超簡単だけど無料枠が500時間(稼働時間)なので月末にアクセス解析が出来なくなる(致命的)。

  • Fly.io:難易度はSupabaseと同等だけどCLIからしかデプロイ出来ない。無料枠がでかい(重要)。

ということでFly.ioに決定。でも月5〜10ドルくらい払えやと言われると言い返せない。うちのサイトは年9ドルくらいのドメイン代しか払っていない。.comドメインも値上がりしてるけどね…円安だし…。

なんだかんだ丸一日掛かったし公式ドキュメントにまだのってないので備忘録しておきます。

手順


参考: https://community.fly.io/t/deploying-umami/5117

まずFly.ioに登録してCLIをインストールしてサインイン。

brew install flyctl
flyctl auth login

postgresのappを作成。

flyctl postgres create
? Choose an app name (leave blank to generate one): hoge
automatically selected personal organization: ***
? Select regions: Tokyo, Japan (nrt)

インストラクションに従って諸々入力。東京リージョンあるの何気にポイント高い。

? Select configuration:  [Use arrows to move, type to filter]
> Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk
  Production - Highly available, 2x shared CPUs, 4GB RAM, 40GB disk
  Production - Highly available, 4x shared CPUs, 8GB RAM, 80GB disk
  Specify custom configuration

umami程度ならシングルノードの256MB RAMで十分だと思う。容量は1GBで2年くらいなら持つんじゃないかな(適当)。半年くらい使ったSupabaseは225MB使ってた。私はデータベースいっぱいになったらリセットしちゃうけど持たせたい人は無料枠いっぱいまで増やせばいいと思う。

で最後までやるとpostgresの設定が出てくるからConnect to postgresの部分のURLをメモする。

postgres://{{username}}:{{password}}@{{hostname}}:{{PGport}}

こういうの。でumami本体をデプロイする。まずgitのリポジトリをローカルにコピーしてDockerfileにRUN apk --update add postgresql-clientを追加。

Dockerfile
# Production image, copy all the files and run next
FROM node:16-alpine AS runner
+ RUN apk --update add postgresql-client

.envファイルをルートディレクトリに新規作成してさっき作ったpostgresのURLを書いて保存。

.env
DATABASE_URL=postgres://{{username}}:{{password}}@{{hostname}}:{{PGport}}

fly launchを打ち込んでアプリを新規作成。終わったらCLIからHASH SALTを設定。

fly secrets set HASH_SALT={{任意の文字列}}

自動生成されたfly.tomlを編集。

fly.toml
app = "アプリの名前"

kill_signal = "SIGINT"
kill_timeout = 5
processes = []

+ [env]
+ DATABASE_TYPE = "postgresql"

+ [deploy]
+ release_command = "yarn check-db"

[experimental]
allowed_public_ports = []
auto_rollback = true

[[services]]
 http_checks = []
- internal_port = 8080
+ internal_port = 3000
processes = ["app"]

最後にfly deployして終了。長かった…。前はversel+supabaseで構成してたんだけどFly.io一本にしたら爆速になって良かった。


Profile picture

オタクの日記です。