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.
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.
- Pull the image from the provided container registry.
- Launch the image as described in Running Testiny Server.
- Open the Testiny Server web interface and follow the setup instructions.
- 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
Variable | Description | Example | Defaults to |
---|---|---|---|
SERVER_URL | Public Url for Testiny Server | https://testiny.mycompany.org | - |
DB | postgres or sqlite | postgres | - |
Optional
Variable | Description | Defaults to |
---|---|---|
PG_HOST | Host of postgres DB | 127.0.0.1 |
PG_PORT | Port of postgres DB | 5432 |
PG_USER | User of postgres DB | testiny |
PG_PASSWORD | Password of postgres DB | - |
PG_MAX_POOL | Size of postgres connection pool | 20 |
PG_IDLE_TIMEOUT | Postgres idle timeout in milliseconds | 60000 |
PG_USE_SSL | Postgres connection uses SSL | false |
SMTP_HOST | Host of SMTP Mailserver | 127.0.0.1 |
SMTP_PORT | Port of SMTP Mailserver | 587 |
SMTP_USER | User of SMTP Mailserver | - |
SMTP_PASSWORD | Password of SMTP Mailserver | - |
SMTP_AUTH_SECURE | SMTP requires secure authentication | false |
SMTP_REQUIRE_TLS | SMTP requires TLS | false |
TESTINY_MAIL_FROM | Sender mail address | [email protected] |
BLOB_MAX_SIZE | Max attachment size (in bytes) | 104857600 (100MiB) |
JSON_MAX_REQUEST_SIZE | May request size (in bytes) | 8388608 (8MiB) |
TESTINY_LOG_LEVEL | debug ,info ,warn ,error | info |
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 informationtenant_main
- containing data (tests, runs, ...) of the main organizationtenant_testing
- containing data of the test organization (to use as a playground)
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
toremote_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.
You need have access to our registry to pull the image. Please contact us via email to get access: [email protected].
Using Docker
- Linux
- Windows
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
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
andYOUR_SECRET_DB_PASSWORD
). In this example,SERVER_URL
is set tohttp://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_netStart 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:
Fill in all required fields and click 'Complete setup' to create a new instance and admin account.
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.
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.
- 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:
- Login with the administrator account (created during the initial setup)
- Navigate to Settings > Organization
- 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