Skip to content
More than just another GUI to Kong Admin API
JavaScript HTML CSS
Branch: master
Clone or download
Pull request Compare This branch is 39 commits behind pantsel:master.
Latest commit 59ffbb3 Jan 28, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
api Fix case of empty response body Jan 27, 2019
assets Fix date conversions on consumer credentials Jan 28, 2019
bin Fix wrong require path Aug 22, 2018
certs Update README.md and added SSL env vars Jul 24, 2018
config Better snapshots implementation Dec 28, 2018
docs Onboarding Sep 29, 2018
makedb
screenshots
tasks removed orphaned links from the pipeline Jul 24, 2018
test refs Sep 28, 2017
views Fix date conversions on consumer credentials Jan 28, 2019
.bowerrc Massive Refactoring Mar 11, 2017
.dockerignore updated .dockerignore Mar 11, 2017
.env_example Use .env instead of local.js and update README.md Aug 21, 2018
.gitignore
.jshintrc Worked on snapshots and notifications May 26, 2017
.sailsrc Massive Refactoring Mar 11, 2017
.travis.yml
CHANGELOG.md Change release date Jan 27, 2019
Dockerfile Update node to 8.12-alpine Dec 24, 2018
Gruntfile.js Massive Refactoring Mar 11, 2017
LICENSE updated LICENSE Oct 22, 2016
README.md
ROADMAP.md Merge branch 'master' of https://github.com/pantsel/konga Apr 22, 2017
app.js Use .env instead of local.js and update README.md Aug 21, 2018
bower.json Fix listing size and added pagination to consumer groups. Ref issue p… Dec 24, 2018
dummy.js Massive Refactoring Mar 11, 2017
ecosystem.config.js
package-lock.json
package.json Updated version Jan 28, 2019
start.sh Fix typo Jul 18, 2018

README.md

More than just another GUI to KONG Admin API Build Status Gitter chat

Dashboard

Konga is not an official app. No affiliation with Kong.

Site and working demo here

Summary

Discussions & Support

If you need to discuss anything Konga related, we have a chatroom on Gitter:

Gitter chat

Features

  • Manage all Kong Admin API Objects.
  • Import Consumers from remote sources (Databases, files, APIs etc.).
  • Manage multiple Kong Nodes.
  • Backup, restore and migrate Kong Nodes using Snapshots.
  • Monitor Node and API states using health checks.
  • Email & Slack notifications.
  • Multiple users.
  • Easy database integration (MySQL, postgresSQL, MongoDB, SQL Server).

Compatibility

From 0.14.0 onwards, Konga is ONLY compatible with Kong >= 1.0.0

If you're on an older Kong version , use this branch or konga:legacy from docker hub instead.

Prerequisites

Used libraries

Installation

Install npm and node.js. Instructions can be found here.

Install bower, ad gulp packages.

$ git clone https://github.com/pantsel/konga.git
$ cd konga
$ npm i

Configuration

You can configure your application to use your environment specified settings.

There is an example configuration file on the root folder.

.env_example

Just copy this to .env and make necessary changes to it. Note that this .env file is in .gitignore so it won't go to VCS at any point.

Environment variables

These are the general environment variables Konga uses.

VAR DESCRIPTION VALUES DEFAULT
PORT The port that will be used by Konga's server - 1337
NODE_ENV The environment production,development development
SSL_KEY_PATH If you want to use SSL, this will be the absolute path to the .key file. Both SSL_KEY_PATH & SSL_CRT_PATH must be set. - null
SSL_CRT_PATH If you want to use SSL, this will be the absolute path to the .crt file. Both SSL_KEY_PATH & SSL_CRT_PATH must be set. - null
KONGA_HOOK_TIMEOUT The time in ms that Konga will wait for startup tasks to finish before exiting the process. - 60000
DB_ADAPTER The database that Konga will use. If not set, the localDisk db will be used. mongo,mysql,postgres,sqlserver -
DB_URI The full db connection string. Depends on DB_ADAPTER. If this is set, no other DB related var is needed. - -
DB_HOST If DB_URI is not specified, this is the database host. Depends on DB_ADAPTER. - localhost
DB_PORT If DB_URI is not specified, this is the database port. Depends on DB_ADAPTER. - DB default.
DB_USER If DB_URI is not specified, this is the database user. Depends on DB_ADAPTER. - -
DB_PASSWORD If DB_URI is not specified, this is the database user's password. Depends on DB_ADAPTER. - -
DB_DATABASE If DB_URI is not specified, this is the name of Konga's db. Depends on DB_ADAPTER. - konga_database
DB_PG_SCHEMA If using postgres as a database, this is the schema that will be used. - public
KONGA_LOG_LEVEL The logging level silly,debug,info,warn,error debug on dev environment & warn on prod.
TOKEN_SECRET The secret that will be used to sign JWT tokens issued by Konga - -

Databases Integration

Konga is bundled with It's own persistence mechanism for storing users and configuration.

A local persistent object store is used by default, which works great as a bundled, starter database (with the strict caveat that it is for non-production use only).

The application also supports some of the most popular databases out of the box:

  1. MySQL
  2. MongoDB
  3. PostgresSQL

In order to use them, set the appropriate env vars in your .env file.

Running Konga

Development

$ npm start

Konga GUI will be available at http://localhost:1337

Production


In case of MySQL or PostgresSQL adapters, Konga will not perform db migrations when running in production mode.

You can manually perform the migrations by calling $ node ./bin/konga.js prepare , passing the args needed for the database connectivity.

For example:

$ node ./bin/konga.js  prepare --adapter postgres --uri postgresql://localhost:5432/konga

The process will exit after all migrations are completed.


Finally:

$ npm run production

Konga GUI will be available at http://localhost:1337

Production Docker Image

The following instructions assume that you have a running Kong instance following the instructions from Kong's docker hub

$ docker pull pantsel/konga
$ docker run -p 1337:1337 \
             --network {{kong-network}} \ // optional
             --name konga \
             -e "NODE_ENV=production" \ // or "development" | defaults to 'development'
             -e "TOKEN_SECRET={{somerandomstring}}" \
             pantsel/konga

To use one of the supported databases

  1. Prepare the database

Note: You can skip this step if using the mongo adapter.

You can prepare the database using an ephemeral container that runs the prepare command.

Args

argument description default
-c command -
-a adapter (can be postgres or mysql) -
-u full database connection url -
$ docker run --rm pantsel/konga:latest -c prepare -a {{adapter}} -u {{connection-uri}}
  1. Start Konga
$ docker run -p 1337:1337 
             --network {{kong-network}} \ // optional
             -e "TOKEN_SECRET={{somerandomstring}}" \
             -e "DB_ADAPTER=the-name-of-the-adapter" \ // 'mongo','postgres','sqlserver'  or 'mysql'
             -e "DB_HOST=your-db-hostname" \
             -e "DB_PORT=your-db-port" \ // Defaults to the default db port
             -e "DB_USER=your-db-user" \ // Omit if not relevant
             -e "DB_PASSWORD=your-db-password" \ // Omit if not relevant
             -e "DB_DATABASE=your-db-name" \ // Defaults to 'konga_database'
             -e "DB_PG_SCHEMA=my-schema"\ // Optionally define a schema when integrating with prostgres
             -e "NODE_ENV=production" \ // or 'development' | defaults to 'development'
             --name konga \
             pantsel/konga
             
             
 // Alternatively you can use the full connection string to connect to a database
 $ docker run -p 1337:1337 
              --network {{kong-network}} \ // optional
              -e "TOKEN_SECRET={{somerandomstring}}" \
              -e "DB_ADAPTER=the-name-of-the-adapter" \ // 'mongo','postgres','sqlserver'  or 'mysql'
              -e "DB_URI=full-connection-uri" \
              -e "NODE_ENV=production" \ // or 'development' | defaults to 'development'
              --name konga \
              pantsel/konga

The GUI will be available at http://{your server's public ip}:1337

It is possible to seed default users on first install.

You may also configure Konga to authenticate via LDAP.

Upgrading

In some cases a newer version of Konga may introduce new db tables, collections or changes in schemas. The only thing you need to do is to start Konga in dev mode once so that the migrations will be applied. Then stop the app and run it again in production mode.

FAQ

1. Getting blank page with Uncaught ReferenceError: angular is not defined

In some cases when running npm install, the bower dependencies are not installed properly. You will need to cd into your project's root directory and install them manually by typing

$ npm run bower-deps
2. Can't add/edit some plugin properties.

When a plugin property is an array, the input is handled by a chip component. You will need to press enter after every value you type in so that the component assigns it to an array index. See issue #48 for reference.

3. EACCES permission denied, mkdir '/kongadata/'.

If you see this error while trying to run Konga, it means that konga has no write permissions to it's default data dir /kongadata. You will just have to define the storage path yourself to a directory Konga will have access permissions via the env var STORAGE_PATH.

4. The hook grunt is taking too long to load

The default timeout for the sails hooks to load is 60000. In some cases, depending on the memory the host machine has available, startup tasks like code minification and uglyfication may take longer to complete. You can fix that by setting then env var KONGA_HOOK_TIMEOUT to something greater than 60000, like 120000.

More Kong related stuff

Author

Panagis Tselentis

License

The MIT License (MIT)
=====================

Copyright (c) 2015 Panagis Tselentis

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
You can’t perform that action at this time.