Skip to main content

Testiny Server

Testiny is built entirely on Docker and is designed to be deployed in your own infrastructure. Testiny Server is available for on-premises use.

info

If you're interested in trying out Testiny Server, please contact us via email: [email protected].

Setup

Testiny Server is shipped in a single docker image, which contains all necessary components.

  1. Pull the image from the provided container registry.
  2. Launch the image as described in Running Testiny Server.
  3. Open the Testiny Server web interface and follow the setup instructions.
  4. Apply your license key to unlock all features.

System Requirements

We recommend the following minimum system requirements for your Testiny Server installation for 50-100 users:

  • reasonable modern CPU with dual core
  • 4GB Memory

Environment variables

Testiny Server is completely configured using environment variables that need to be passed to the Docker container.
Without configuring the necessary environment variables, Testiny Server may not start correctly or its functionality may be impaired.

Important:

  • - in default value means no default value.
  • SERVER_URL has to be set correctly; otherwise, Testiny Server will not work correctly!

Required

VariableDescriptionExampleDefaults to
SERVER_URLPublic Url for Testiny Serverhttps://testiny.mycompany.org-
DBpostgres or sqlitepostgres-

Optional

VariableDescriptionDefaults to
PG_HOSTHost of postgres DB127.0.0.1
PG_PORTPort of postgres DB5432
PG_USERUser of postgres DBtestiny
PG_PASSWORDPassword of postgres DB-
PG_MAX_POOLSize of postgres connection pool20
PG_IDLE_TIMEOUTPostgres idle timeout in milliseconds60000
PG_USE_SSLPostgres connection uses SSLfalse
SMTP_HOSTHost of SMTP Mailserver127.0.0.1
SMTP_PORTPort of SMTP Mailserver587
SMTP_USERUser of SMTP Mailserver-
SMTP_PASSWORDPassword of SMTP Mailserver-
SMTP_AUTH_SECURESMTP requires secure authenticationfalse
SMTP_REQUIRE_TLSSMTP requires TLSfalse
TESTINY_MAIL_FROMSender mail address[email protected]
BLOB_MAX_SIZEMax attachment size (in bytes)104857600 (100MiB)
JSON_MAX_REQUEST_SIZEMay request size (in bytes)8388608 (8MiB)
TESTINY_LOG_LEVELdebug,info,warn,errorinfo

PostgreSQL Configuration

Testiny Server officially supports PostgreSQL 14.

Testiny Server creates three databases for you if the specified PG_USER in the environment variables has permissions to create databases:

  • central - containing user information
  • tenant_main - containing data (tests, runs, ...) of the main organization
  • tenant_testing - containing data of the test organization (to use as a playground)
info

If the specified PG_USER does not have permission to create databases, you could temporarily give the user more permissions during setup, or you need to create these three databases yourself. Then the user will only need permissions to create/drop tables, CRUD operations, etc.

Also make sure, that the following configuration is set:

  • set ENCODING to UTF8 (default value for PostgreSQL)
  • set TABLESPACE to pg_default (default value for PostgreSQL)
  • If you use replication in your PostgreSQL database, set synchronous_commit to remote_apply.
  • Collation can be configured freely, as long as it's compatible with UTF8 encoding.

Running Testiny Server

You can run Testiny Server using Docker or Docker Compose, as shown with the examples below.

Testiny Server stores blobs (attachments, images, etc...) in a volume and this volume needs to be mounted at /testiny/storage.

Please note, that you need to use and maintain your own PostgreSQL or SQLite database. In the Docker Compose example, a PostgreSQL database is pre-configured so that you can easily get started with Testiny Server.

Once Testiny Server is runinng, open the Testiny Server UI in your browser using the SERVER_URL that you've configured and continue with the setup.

info

You need have access to our registry to pull the image. Please contact us via email to get access: [email protected].

Using Docker

docker run -it -p 7700:7700 \
-v testiny_storage:/testiny/storage \
-e DB='postgres' \
-e PG_HOST='127.0.0.1' \
-e PG_PORT='5432' \
-e PG_USER='postgres' \
-e PG_PASSWORD='mysecretpassword' \
-e SERVER_URL='http://localhost:7700' \
--name testiny-server \
registry.gitlab.com/testiny/server:stable

Using Docker Compose

docker-compose.yml

  • Copy the following code into a docker-compose.yml file.

  • Adjust the environment variables according to your needs (especially SERVER_URL and YOUR_SECRET_DB_PASSWORD). In this example, SERVER_URL is set to http://localhost:7700.

    version: '3.6'

    services:
    testiny_postgres:
    image: postgres:14
    container_name: testiny_postgres
    networks:
    - testiny_net
    environment:
    POSTGRES_USER: admin
    POSTGRES_PASSWORD: YOUR_SECRET_DB_PASSWORD
    volumes:
    - testiny_postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

    testiny_server:
    image: registry.gitlab.com/testiny/server:stable
    container_name: testiny_server
    depends_on:
    testiny_postgres:
    condition: service_started
    networks:
    - testiny_net
    ports:
    - "7700:7700"
    environment:
    SERVER_URL: "http://localhost:7700"
    DB: postgres
    PG_HOST: testiny_postgres
    PG_USER: admin
    PG_PASSWORD: YOUR_SECRET_DB_PASSWORD
    volumes:
    - testiny_storage:/testiny/storage
    restart: unless-stopped

    volumes:
    testiny_postgres_data:
    name: testiny_postgres_data
    external: false
    testiny_storage:
    name: testiny_storage
    external: false

    networks:
    testiny_net:
    name: testiny_net
  • Start Testiny Server with docker compose up -d

Finishing the Setup

Once Testiny Server is running, open the Testiny Server UI in your browser using the SERVER_URL that you've configured and follow the setup instructions shown. We have also summarized the steps here:

  1. Fill in all required fields and click 'Complete setup' to create a new instance and admin account.

  2. Testiny Server generates secrets to access the database. Please make sure you save or copy the secrets to a secured location. You will need them to create backups or to recover data.

caution

Really make sure to save or copy the generated secrets to a secure location. You (nor anyone else, including Testiny) do not have access to those secrets afterwards.

Also ensure that your container storage volume (/testiny/storage) is mounted to a persistent volume with backups.

  1. You have now successfully created your instance and admin account. You can now continue with applying a license key to activate Testiny Server.

Activating Testiny Server

A valid license key is required to activate and use Testiny Server. Follow the steps below to activate a license:

  1. Login with the administrator account (created during the initial setup)
  2. Navigate to Settings > Organization
  3. Click on 'Apply License' and insert the license provided by the Testiny team.

If you need more information, please contact us at [email protected].

Upgrading Testiny Server

To upgrade Testiny Server, pull the latest version from the container registry and recreate the container. All required upgrade steps will be automatically executed upon startup.

Docker

  • docker stop testiny-server
  • docker rm testiny-server
  • docker pull registry.gitlab.com/testiny/server:stable
  • Execute the same command as shown under Using Docker

Docker compose

Just pull a new image and restart the server.

  • docker compose pull
  • docker compose up -d

Migrating from Testiny Cloud to Testiny Server

Testiny offers a seamless migration of an existing Testiny Cloud account to Testiny Server.

Execute the Setup up to Step 3. Then request your cloud data backup in the Migrate from cloud tab. We'll provide you with an export bundle, optionally encrypted, which you can import into your Testiny Server instance.

Import the received data and provide a new password for the owner. Optionally you can also change the owner's email.

Please be aware that sensitive data will be deleted during the migration process:

  • All passwords from users have been randomized, please either:
    • Reset the passwords for your users in Settings > User Management > "..." > "Reset password"
    • Let the users reset their password themselves ("Forgot your password?" on the login page)
  • All Integration Secrets (e.g. for Jira) and SSO Secrets have been purged; please reconfigure your existing Integrations and SSO-Provider.
  • API-Keys need to be reissued