misskeyをherokuで立てる[2022年度版]
pleromaと同じくmisskeyをherokuで立てるのにも多少の苦労があるかもしれません。さらに運用するとなると様々な問題が絡んできます。
今回もherokuでmisskeyのインスタンスを立ち上げるまでのヒントを書いていければと思います。
ref : https://misskey-hub.net/docs/install/manual.html
$ git clone https://github.com/misskey-dev/misskey.git
$ cd misskey
$ cp .config/example.yml .config/default.yml
$ vim .config/default.yml
db:
host: $DB_HOST
port: $DB_PORT
db: $DB_NAME
user: $DB_USER
pass: $DB_PASS
extra:
ssl: { rejectUnauthorized: false }
redis:
host: $REDIS_HOST
port: $REDIS_PORT
pass: $REDIS_PASS
まずmisskeyとheroku-postgresを接続するポイントは、ssl:true
ではなくssl:{ rejectUnauthorized: false }
です。
必要な情報は以下から得ましょう。
$ heroku addons:create heroku-postgresql:hobby-dev
$ heroku pg:credentials:url
$ heroku addons:create heroku-redis:hobby-dev
$ heroku redis:credentials
$ yarn install
$ yarn build
$ yarn run init
$ yarn start
redisへの接続に問題があります。heroku-redisの接続制限的に厳しいのかもしれません。ioredis
が使われるようになったみたいです。
https://devcenter.heroku.com/ja/articles/connecting-heroku-redis#connecting-in-node-js
編集するファイルとしては、packages/backend/src
にある db/redis, server/index.ts, config/load.ts などです。
process.env.PORT
やprocess.env.HEROKU_REDIS_AQUA_URL
, process.env.HEROKU_REDIS_AQUA_URL
などを設定してみるといいかも。
Procfileには、web: NODE_ENV=production yarn start
を書きます。
rediscloud
回避策としてaddons:rediscloud
を使用すると動きます。
$ heroku addons:create rediscloud:30
$ heroku config
redis://default:${REDIS_CLOUD_PASS}@${REDIS_CLOUD_HOST}:${REDIS_CLOUD_PORT}
redis:
host: ${REDIS_CLOUD_HOST}
port: ${REDIS_CLOUD_PORT}
family: 4 # 0=Both, 4=IPv4, 6=IPv6
pass: ${REDIS_CLOUD_PASS}