Database


OpenTAKServer uses SQLAlchemy to handle its database. SQLite is the default database engine. You can change this to any other database engine supported by SQLAlchemy using the SQLALCHEMY_DATABASE_URI option in config.yml. SQLAlchemy supports the following engines

  • SQLite

  • MySQL/MariaDB

  • PostgreSQL

  • Microsoft SQL Server

  • Oracle

See SQLAlchemy’s documentation for more details.

PostgreSQL


OpenTAKServer can be configured to use PostgreSQL as its database backend.

Prerequisites

Before configuring OpenTAKServer to run on PostgreSQL, ensure you have:

  • The database CA certificate (if an SSL connection is desired or required)

  • Access to your PostgreSQL database with a typical database client

  • Database connection details (hostname, port, username, password)

Installation

Install the required PostgreSQL adapter in OpenTAKServer:

sudo apt-get install libpq-dev
cd ~/.opentakserver_venv
bin/pip install psycopg2

If ssl_mode=required is on, download the database CA certificate from your provider and place it in the ~/ots directory.

Modify the settings in ~/ots/config.yml to include:

SQLALCHEMY_DATABASE_URI: postgresql://[user]:[password]@[hostname]:[port]/[database]?sslmode=require
SQLALCHEMY_ENGINE_OPTIONS:
  pool_pre_ping: true
  connect_args:
    sslmode: require
    sslrootcert: database-ca.crt

Replace [user], [password], [hostname], [port], and [database] with your actual database connection details. You can leave SQLALCHEMY_ENGINE_OPTIONS as is if the database does not use an SSL connection.

Troubleshooting

OpenTAKServer does not produce detailed error reports when something is wrong with the configuration file or database. It’s easier to temporarily turn the service off and run the program directly for debugging.

To get detailed feedback about connection issues, run OpenTAKServer directly instead of as a service:

sudo systemctl stop opentakserver.service
~/.opentakserver_venv/bin/opentakserver

If you encounter schema permission issues, ensure the database user owns the public schema. You may need to recreate it with the correct ownership.

Finally, stop the OTS process in the terminal (Ctrl+C) and restart the service:

sudo systemctl start opentakserver.service