diff options
-rw-r--r-- | README.md | 7 | ||||
-rw-r--r-- | app.json | 111 | ||||
-rwxr-xr-x | bin/heroku | 35 | ||||
-rwxr-xr-x | bin/setup | 6 | ||||
-rw-r--r-- | package.json | 6 |
5 files changed, 162 insertions, 3 deletions
@@ -15,6 +15,13 @@ Thanks for using! :smile: Before you go too far, here is the great docker repo for HackMD. With docker, you can deploy a server in minutes without any downtime. +Heroku Deployment +--- + +You can quickly setup a sample heroku hackmd application by clicking the button below. + +[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) + [migration-to-0.4.0](https://github.com/hackmdio/migration-to-0.4.0) --- diff --git a/app.json b/app.json new file mode 100644 index 00000000..95c2ffbf --- /dev/null +++ b/app.json @@ -0,0 +1,111 @@ +{ + "name": "HackMD", + "description": "Realtime collaborative markdown notes on all platforms", + "keywords": [ + "Collaborative", + "Markdown", + "Notes" + ], + "website": "https://hackmd.io", + "repository": "https://github.com/hackmdio/hackmd", + "logo": "https://github.com/hackmdio/hackmd/raw/master/public/hackmd-icon-1024.png", + "success_url": "/", + "scripts": { + "postdeploy": "./node_modules/.bin/sequelize db:migrate" + }, + "env": { + "BUILD_ASSETS": { + "description": "Our build script variable", + "value": "true" + }, + "NPM_CONFIG_PRODUCTION": { + "description": "Let npm also install development build tool", + "value": "false" + }, + "DB_TYPE": { + "description": "Specify database type. See sequelize available databases. Default using postgres", + "value": "postgres" + }, + + "HMD_DOMAIN": { + "description": "domain name", + "required": false + }, + "HMD_URL_PATH": { + "description": "sub url path, like `www.example.com/<URL_PATH>`", + "required": false + }, + "HMD_ALLOW_ORIGIN": { + "description": "web app port", + "required": false, + "value": "80" + }, + "HMD_PROTOCOL_USESSL": { + "description": "set to use ssl protocol for resources path (only applied when domain is set)", + "required": false + }, + "HMD_URL_ADDPORT": { + "description": "set to add port on callback url (port 80 or 443 won't applied) (only applied when domain is set)", + "required": false + }, + "HMD_FACEBOOK_CLIENTID": { + "description": "Facebook API client id", + "required": false + }, + "HMD_FACEBOOK_CLIENTSECRET": { + "description": "Facebook API client secret", + "required": false + }, + "HMD_TWITTER_CONSUMERKEY": { + "description": "Twitter API consumer key", + "required": false + }, + "HMD_TWITTER_CONSUMERSECRET": { + "description": "Twitter API consumer secret", + "required": false + }, + "HMD_GITHUB_CLIENTID": { + "description": "GitHub API client id", + "required": false + }, + "HMD_GITHUB_CLIENTSECRET": { + "description": "GitHub API client secret", + "required": false + }, + "HMD_GITLAB_BASEURL": { + "description": "GitLab authentication endpoint, set to use other endpoint than GitLab.com (optional)", + "required": false + }, + "HMD_GITLAB_CLIENTID": { + "description": "GitLab API client id", + "required": false + }, + "HMD_GITLAB_CLIENTSECRET": { + "description": "GitLab API client secret", + "required": false + }, + "HMD_DROPBOX_CLIENTID": { + "description": "Dropbox API client id", + "required": false + }, + "HMD_DROPBOX_CLIENTSECRET": { + "description": "Dropbox API client secret", + "required": false + }, + "HMD_GOOGLE_CLIENTID": { + "description": "Google API client id", + "required": false + }, + "HMD_GOOGLE_CLIENTSECRET": { + "description": "Google API client secret", + "required": false + }, + "HMD_IMGUR_CLIENTID": { + "description": "Imgur API client id", + "required": false + } + }, + "addons": [ + "heroku-postgresql" + ] +} diff --git a/bin/heroku b/bin/heroku new file mode 100755 index 00000000..12f9cc17 --- /dev/null +++ b/bin/heroku @@ -0,0 +1,35 @@ +#!/bin/bash + +set -e + +if [ "$BUILD_ASSETS" = true ]; then + BUILD_ASSETS=false npm install && npm run assets:install + + # setup config files + cat << EOF > .sequelizerc +var path = require('path'); + +module.exports = { + 'config': path.resolve('config.json'), + 'migrations-path': path.resolve('lib', 'migrations'), + 'models-path': path.resolve('lib', 'models'), + 'url': process.env.DATABASE_URL, + 'dialect': process.env.DB_TYPE +} + +EOF + + cat << EOF > config.json + +{ + "production": { + } +} + +EOF + + cp public/js/config.js.example public/js/config.js + + # build app + npm run build +fi @@ -2,7 +2,9 @@ # run command at repo root CURRENT_PATH=$PWD -cd $(git rev-parse --show-toplevel) +if [ -d .git ]; then + cd $(git rev-parse --show-toplevel) +fi if ! type npm > /dev/null then @@ -34,7 +36,7 @@ if [ ! -f .sequelizerc ]; then fi echo "install npm and bower packages" -npm install && bower install +BUILD_ASSETS=false npm install && bower install cat << EOF diff --git a/package.json b/package.json index 80a0e22b..abd6096f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "license": "MIT", "scripts": { "dev": "webpack --config webpack.config.js --progress --colors --watch", - "build": "webpack --config webpack.production.js --progress --colors" + "build": "webpack --config webpack.production.js --progress --colors", + "assets:install": "bower install", + "postinstall": "bin/heroku", + "start": "node app.js" }, "dependencies": { "Idle.Js": "github:shawnmclean/Idle.js", @@ -121,6 +124,7 @@ "devDependencies": { "babel-core": "^6.17.0", "babel-loader": "^6.2.5", + "bower": "^1.7.9", "bower-webpack-plugin": "^0.1.9", "css-loader": "^0.25.0", "ejs-loader": "^0.3.0", |