misskey + heroku
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: > [email protected] install
misskeyをherokuで動作させるポイントとしては、.config/default.yml
とheroku $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
# 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上で動作させることができます。
Author And Source
この問題について(misskey + heroku), 我々は、より多くの情報をここで見つけました https://qiita.com/syui/items/da0f9aa99cef09ea7e71著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .