+++ date = "2022-07-08" tags = ["misskey","heroku"] title = "misskeyをherokuで立てる[2022年度版]" slug = "misskey" +++ pleromaと同じくmisskeyをherokuで立てるのにも多少の苦労があるかもしれません。さらに運用するとなると様々な問題が絡んできます。 今回もherokuでmisskeyのインスタンスを立ち上げるまでのヒントを書いていければと思います。 ref : https://misskey-hub.net/docs/install/manual.html ```sh $ git clone https://github.com/misskey-dev/misskey.git $ cd misskey $ cp .config/example.yml .config/default.yml $ vim .config/default.yml ``` ```yml:.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](https://devcenter.heroku.com/articles/connecting-heroku-postgres)を接続するポイントは、`ssl:true`ではなく`ssl:{ rejectUnauthorized: false }`です。 必要な情報は以下から得ましょう。 ```sh $ heroku addons:create heroku-postgresql:hobby-dev $ heroku pg:credentials:url $ heroku addons:create heroku-redis:hobby-dev $ heroku redis:credentials ``` ```sh $ 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`を使用すると動きます。 ```sh $ heroku addons:create rediscloud:30 $ heroku config redis://default:${REDIS_CLOUD_PASS}@${REDIS_CLOUD_HOST}:${REDIS_CLOUD_PORT} ``` ```.config/default.yml redis: host: ${REDIS_CLOUD_HOST} port: ${REDIS_CLOUD_PORT} family: 4 # 0=Both, 4=IPv4, 6=IPv6 pass: ${REDIS_CLOUD_PASS} ```