3.4 KiB
3.4 KiB
+++ date = "2019-04-04" tags = ["misskey","heroku"] title = "misskeyをherokuで立てる" slug = "misskey" +++
misskey
という分散snsをherokuというpaasで動かしてみた記録です。
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.yml
とheroku $PORT
です。
herokuは、deployする度にPORTが変動し、その値は、PORTの環境変数に入っています。しかし、misskeyのsource codeはそれに対応していないようなので、少しだけcodeをPaaS向きに書き換える必要があります。
$ 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シェルを終了
$ grep -R 'config.port' src/
# herokuのPORT対応
# 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`の値を`ur:localhost`と`port:8000`にする
$ npm i
$ 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
で最初に作成されたユーザーが管理者になります。
/admin
にアクセスして、インスタンス -> ユーザー登録を停止する