More than just another GUI to KONG Admin API
Konga is not an official app. No affiliation with Kong.
- Features
- Compatibility
- Prerequisites
- Used libraries
- Installation
- Configuration
- Environment variables
- Running Konga
- Upgrading
- FAQ
- More Kong related stuff
- License
- 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.
- MySQL/PostgreSQL database integration
(This fork of) Konga is ONLY compatible with Kong 2.x
- A running Kong installation
- Nodejs >= 16
- Npm
- Sails.js, http://sailsjs.org/
- AngularJS, https://angularjs.org/
Install npm
and node.js
. Instructions can be found
here.
Install bower
, ad gulp
packages.
$ git clone https://github.com/onematchfox/konga.git
$ cd konga
$ npm i
You can configure your application via environment variables. See the 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.
These are the general environment variables Konga uses.
VAR | DESCRIPTION | VALUES | DEFAULT |
---|---|---|---|
BASE_URL | Define a base URL or relative path that Konga will be loaded from. Ex: www.example.com/konga | - | |
DB_ADAPTER | The database that Konga will use. If not set, the localDisk db will be used. | postgres |
- |
DB_DATABASE | If DB_URI is not specified, this is the name of Konga's db. Depends on DB_ADAPTER . |
- | konga_database |
DB_HOST | If DB_URI is not specified, this is the database host. Depends on DB_ADAPTER . |
- | localhost |
DB_PASSWORD | If DB_URI is not specified, this is the database user's password. Depends on DB_ADAPTER . |
- | - |
DB_PG_SCHEMA | If using postgres as a database, this is the schema that will be used. | - | public |
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 . |
- | - |
HOST | The IP address that will be bind by Konga's server | - | '0.0.0.0' |
KONGA_BASE_URL | Base URL used to access the application. | https://konga.example.com | |
KONGA_HOOK_TIMEOUT | The time in ms that Konga will wait for startup tasks to finish before exiting the process. | - | 60000 |
KONGA_JWT_TOKEN_EXPIRY | The time in seconds that a user's session is active for. | - | 3600 |
KONGA_LOG_LEVEL | The logging level | silly ,debug ,info ,warn ,error |
debug on dev environment & warn on prod. |
KONGA_SEED_KONG_NODE_DATA_SOURCE_FILE | Seed default Kong Admin API connections on first run Docs | - | |
KONGA_SEED_USER_DATA_SOURCE_FILE | Seed default users on first run. Docs. | - | |
NO_AUTH | Run Konga without Authentication | true/false | - |
NODE_ENV | The environment | production ,development |
development |
PORT | The port that will be used by Konga's server | - | 1337 |
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 |
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 |
TOKEN_SECRET | The secret that will be used to sign JWT tokens issued by Konga | - | - |
Konga is bundled with its 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 the following databases out of the box:
- MySQL
- PostgreSQL
In order to use them, set the appropriate env vars in your .env
file.
$ npm start
Konga GUI will be available at http://localhost:1337
Konga will not perform DB migrations when running in production mode (Sails.js forbids this).
You can manually perform the migrations by calling:
$ node ./bin/konga.js prepare
The process will exit after all migrations are completed.
Finally:
$ npm run production
Konga GUI will be available at http://localhost:1337
The following instructions assume that you have a running Kong instance following the instructions from Kong's docker hub
$ docker pull onematchfox/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}}" \
onematchfox/konga
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 onematchfox/konga:latest -c prepare -a {{adapter}} -u {{connection-uri}}
$ docker run -p 1337:1337
--network {{kong-network}} \ // optional
-e "TOKEN_SECRET={{somerandomstring}}" \
-e "DB_ADAPTER=the-name-of-the-adapter" \ // 'postgres' 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 \
onematchfox/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" \ // 'postgres' or 'mysql'
-e "DB_URI=full-connection-uri" \
-e "NODE_ENV=production" \ // or 'development' | defaults to 'development'
--name konga \
onematchfox/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.
In some cases a newer version of Konga may introduce changes in database 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.
if you're using docker, you can lift an ephemeral container, as stated before:
$ docker run --rm onematchfox/konga:latest -c prepare -a {{adapter}} -u {{connection-uri}}
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
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.
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
.
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.
The MIT License (MIT)
=====================
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.