Installing HackDash
In a previous post I explained the project
history, goals and involved people. Shortly saying HackDash is a dashboard where
you can put your project ideas. It was specially designed for Hackatons but it
was used for other purposes with really good results.
Since I received lots of mails asking how to install it in different servers
I decided to make this post explaining how can you install it for yourself.
Furthermore I will explain the steps I usually do in order to install a
HackDash instance using Heroku and MongoLab (you can use it for free for small
projects, the free version for both services can hold a HackDash instance with an interesting amount of users and projects).
Basic Install
Installation Prequisites
HackDash is based on top of 2 open-source projects:
- Node.js: You can install it using the install button on the home page. If you are using Linux you can build the sources or use your favorite package manager.
- MongoDB: the downloads page will help you with the installation process.
That’s it. If you can run node.js and MongoDB, you can then install a HackDash instance.
Download the project and install the dependencies
First, download the project source. You can Download it from this link or clone the repo:
$ git clone git@github.com:danzajdband/hackdash.git
Then, inside the project folder, install the dependencies
$ npm install
Project configuration
When this process finish you'll need to config the app. The easiest way is to
copy the file called config.json.sample
to config.json
and
keys.json.sample
to keys.json
.
Open your config.json
file and set yur config settings.
The keys.json
file allows different auth providers. You need to fill at least
one of those to make your users LogIn. I want to provide email + password login
for the future but now is not available at the moment.
At the moment we allow 4 different auth providers: Twitter, Facebook, Meetup and
Github. Choose the services you want and fill the file with your credentials.
For example to get Twitter credentials you need to go to
Twitter dev and create a new application.
Keep in mind that the callback url format is /auth/{provider}/callback
while you generate the provider
credentials.
Run the app
To run the app you just need to start MongoDB (the fork option is optional, it
will run MongoDB in background) and init the node server.
$ mongod --fork your/log/file
$ node server.js
Then open your browser using the address you provide and will have a fully-working HackDash instance.
Deploy options
This apply to any node.js project but I left it as a good remainder (don't
forget the HackDash is not more than a ExpressJS app) some deployment good advices.
-
If you are going to deploy it in a production environment, start the script with the production flag. $ NODE_ENV=production node server.js
-
It is recommended to use a node script reloader. I recommend
Up but is up to you.
Forever is also widely used.
Make yourself the Dashboard admin
If you point your browser to yourdomain.com/install while logged in you'll
became the admin of the Dashboard. The /install route will redirect to the
previous page you visited if the admin was selected before.
Installation using Heroku and MongoLab
I choose these services because I made some successful installations on this
environment, and it's pretty easy to work with.
Prequisites
- Create a Heroku account and install the CLI.
Download and Configure
The steps (Download and Configure) are the same as the Basic installation, you'll want to
check it out above. For this type of installation I'll ask you to clone the
project instead of downloading the source tarball (It will be easy to deploy then). Once you finish configuring your project instance, this are
the next steps
Create a Procfile
Create a file in the root project folder called Procfile
and write inside
web: node server.js
Create the Heroku application
To create a Heroku app, follow this steps
$ heroku login
$ heroku create
Add the MongoLab add-on to the app
I choose the starter package that is free, you can select https://addons.heroku.com/mongolab.
$ heroku addons:add mongolab:starter
Then add your MongoLab URI to the config file, the url will override other db config. To get your MongoLab URI perform this command in your terminal
$ heroku config | grep MONGOLAB_URI
Commit the changes, and deploy
You need to commit the changes you made to push the files to heroku.
$ git add config.json Procfile
$ git commit -m "Heroku deploy config"
$ git push heroku master
Scale the app
If you want to use more than one process it’s cool, you just need to change the 1 in the following command
$ heroku ps:scale web=1
Logs
If you want to see the logs you can do $ heroku logs
Final notes
This is the process I usually do for both kind of deployments. If you have any questions, please contact me. The project is under
development, I’ll be glad to add more people to the list of awesome
contributors.