LoginSignup
4
0

More than 5 years have passed since last update.

misskey + heroku

Last updated at Posted at 2019-04-04

misskey on heroku.

misskeyという分散snsをherokuというpaasで動かしてみた記録です。

heroku-info
remote:        * Stack heroku-18

remote:        NPM_CONFIG_LOGLEVEL=error
remote:        NODE_ENV=production
remote:        NODE_MODULES_CACHE=true
remote:        NODE_VERBOSE=false

remote:        Resolving node version 10.x...
remote:        Downloading and installing node 10.15.3...
remote:        Using default npm version: 6.4.1

remote:        > misskey@10.98.3 install 

misskeyをherokuで動作させるポイントとしては、.config/default.ymlheroku $PORTです。

herokuは、deployする度にPORTが変動し、その値は、PORTの環境変数に入っています。しかし、misskeyのsource codeはそれに対応していないようなので、少しだけcodeをPaaS向きに書き換える必要があります。

追記 : 環境変数のPORTが設定されている場合、それが適用されるようになったので、この処理は不要になりました。 

$ git clone https://github.com/syuilo/misskey
$ cd !$:t

# git reset --hard 551d1b7f8624d2e9c19a99dd80aaf49f096ce836

$ git branch
$ git checkout -b master

$ heroku create $APP_NAME
$ heroku git:remote -a $APP_NAME
$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-nodejs
# heroku buildpacks:set https://github.com/heroku/heroku-buildpack-nodejs#v143

# gitignoreに注意、.configが入っている可能性
$ cat .gitignore
$ cat ~/.gitignore

$ cd .config/
$ mv example.yml default.yml
$ mv mongo_initdb_example.js mongo_initdb.js 

$ heroku addons:create mongolab:sandbox
$ heroku addons:create heroku-redis:hobby-dev
$ heroku config

$ vim default.yml
default.yml
# Final accessible URL seen by a user.
url: https://$APP_NAME.herokuapp.com
#url: http://localhost
port: 80
#port: 8000

# mongodb://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}
mongodb:
  host: $DB_HOST
  port: $DB_PORT
  db: $DB_NAME
  user: $DB_USER
  pass: $DB_PASS

drive:
  storage: 'db'

# redis://h:${REDIS_PASS}@${REDIS_HOST}:${REDIS_PORT}
redis:
  host: $REDIS_HOST
  port: $REDIS_PORT
  pass: $REDIS_PASS

autoAdmin: true
disableHsts: true
clusterLimit: 1
# repo rootに移動
$ cd ..

$ heroku config
$ cat docs/setup.ja.md

$ mongo ${DB_HOST}:${DB_PORT}/${DB_NAME} -u ${DB_USER} -p ${DB_PASS}
 2. `use misskey` misskeyデータベースを使用
 3. `db.createUser( { user: "$USER", pwd: "$PASS", roles: [ { role: "readWrite", db: "misskey" } ] } )` misskeyユーザーを作成
 4. `exit` mongoシェルを終了



## herokuのPORT対応(最新のcommitで対応されていますので、この処理は不要になりました)
# grep -R 'config.port' src/
## default.yml
# vim ./src/config/load.ts
+ config.port = process.env.PORT;
## production
# vim ./src/server/index.ts
- server.listen(config.port);
+ server.listen(process.env.PORT || 8000);

# previewするには、`.config/default.yml`の値を`url:localhost`と`port:8000`とかにする
$ npm i
$ npm run build
$ NODE_ENV=production npm start

$ vim Procfile
web: NODE_ENV=production npm start

# gitignoreに注意、.configが入っている可能性
$ cat .gitignore
$ cat ~/.gitignore

$ git add .
$ git commit -m "first"
$ git push -u heroku master

# 問題の調査
$ heroku logs
$ heroku run bash

misskeyの管理について

autoAdmin: trueで最初に作成されたユーザーが管理者になります。

single user mode(個人インスタンス)にするには、ログイン後に/adminにアクセスして、インスタンス -> ユーザー登録を停止するです。

動いた日 : 2019/04/04

Heroku Deploy Button

misskeyがmongodbからpgsqlに移行しました。これによって、heroku上では動作しなくなりました。pgsqlにデータが送られるとき、エラーが出ているみたいで、それが解消できません。おそらく、devlopが開発版で、master(or v10)が安定版なので、master(or v10)で使えば、動くと思います。

よって、mongodbで動いている最新(v10)のmisskeyをheroku用に書き換えて、heroku deploy buttonを動くようにしてみました。

これによって、ボタンをクリックして必要な値を入力すれば(LOCAL_DOMAIN=https://APP_NAME.herokuapp.comのところだけ書き換えればあとはデフォルトでOK)、ほぼ確実にheroku上で動作させることができます。

Deploy

4
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0