/open-dash

A realtime dashboard to view/control all of your home automation toys.

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

OpenDash

A realtime dashboard to view/control all of your home automation toys.

CircleCI

Deploy

OpenDash can be deployed with Docker and Docker Compose. See Docker install docs for your platform.

To launch an official prebuilt image of OpenDash, create a docker-compose.yml and add the following:

opendash:
  image: opendash/opendash:latest
  links:
    - mongo
  ports:
    - 80:3000
  environment:
    MONGO_URL: mongodb://mongo:27017/opendash

mongo:
  image: mongo:latest
  command: mongod --storageEngine=wiredTiger

Now you can start the app and database by running the following command from the same directory as your docker-compose.yml.

docker-compose up -d

...and the app should be available at http://localhost

Development

Before cloning this project to work with it locally or build from source, make sure you have installed all of the dependencies for your operating system. For more info, see the install docs.

Once you've installed the dependencies for your OS, you're ready to download, build, and run OpenDash. Note that the instructions below are specifically for local development/testing. Docker should be used for production deployments. More production deployment details for various platforms coming soon.

Install

git clone https://github.com/open-dash/open-dash.git

cd open-dash

meteor npm install

Configure

Default Settings

Client side user creation is disabled, so you will need to set a default user (or users) in a settings.json file. Note that admin is currently the only role with access to everything, so be sure to set that for your user. You can also import any application settings the same way. If you run the app with a settings.json like below, it will create the default users (only if none exist) and the remaining settings will be inserted into the Settings collection (if the given field is not already defined in the database).

Once you've imported settings, you can run the app without your settings.json because your settings will now be saved in the database and can be viewed/updated at the /settings route.

Example settings.json

The latest example settings.json will always be available in the root of the app and will contain all currently supported values. It is recommended that you copy that into your own file and make sure to never commit it to source control (since it contains things like default passwords and API keys)

I recommend creating a settings file for development and one for production so you use different API keys in each environment.

# create a copy to modify from the provided example
cp settings.json settings.dev.json

Now open your new settings.dev.json file and add any desired users or settings.

// settings.dev.json

{
  // Add as many users to the array as you'd like.
  // Note that they will only be created if there are 0 users in the database.
  "defaultUsers": [
    {
      "email": "admin1@example.com",
      "username": "admin",
      "password": "admin123",
      "roles": ["admin"]
    },
    {
      "email": "admin2@example.com",
      "username": "admin2",
      "password": "admin456",
      "roles": ["admin"]
    }
  ],

  "app" : {
    "title" : "OpenDash",
    "adminEmail" : ""
  },

  "mail" : {
    "smtpUrl" : ""
  },

  "smartthings" : {
    "clientId" : "",
    "clientSecret" : ""
  },

  "kadira" : {
    "appId" : "",
    "appSecret" : ""
  },

  "segment" : {
    "writeKey" : "  "
  }
}

Run

# start the app and specify your settings file
meteor --settings settings.dev.json

# running on http://localhost:3000

You new user(s) will be created and your settings saved in the database. Any subsequent app starts can simply be:

# start the app
meteor

# running on http://localhost:3000