Skip to main content

Installation

This guide walks through a fresh Scriptix On-Prem installation from start to finish.

1. Prepare the Server

Ensure your server meets the requirements and Docker is installed and running:

docker --version
docker compose version

Create a directory for Scriptix:

mkdir -p /opt/scriptix && cd /opt/scriptix

2. Obtain Deployment Files

Scriptix provides a deployment package containing:

scriptix-onprem/
docker-compose.onprem.yml
.env.onprem.example
config/
config.onprem.yaml
license_key.pub
images/ # if air-gapped
scriptix-api-v1.0.0.tar.gz
scriptix-ui-v1.0.0.tar.gz
scriptix-asr-v1.0.0.tar.gz

Extract and enter the directory:

tar xzf scriptix-onprem-v1.0.0.tar.gz
cd scriptix-onprem

3. Load Container Images

Scriptix provides container images through a private registry. Registry credentials and access instructions will be provided by the Scriptix team during onboarding.

Log in to the registry using the credentials provided by Scriptix, then pull the images:

docker compose -f docker-compose.onprem.yml --env-file .env.onprem --profile batch pull
tip

For production, we recommend pinning to a specific version tag in your .env.onprem file. Use latest only for development or testing environments.

Once pulled, the images are stored locally. You can run Scriptix fully offline after the initial pull — no further registry access is needed until you decide to update.

Option B — From tarball (air-gapped)

If your environment has no internet access, Scriptix can provide image tarballs:

docker load < images/scriptix-api-v1.0.0.tar.gz
docker load < images/scriptix-ui-v1.0.0.tar.gz
docker load < images/scriptix-asr-v1.0.0.tar.gz

4. Configure Environment

A pre-configured environment file (.env.onprem) will be provided by the Scriptix team. This file contains all the necessary settings for your deployment, including database credentials, domain configuration, and model access tokens.

Review the file and update any values specific to your environment (e.g., your domain names) as instructed by the Scriptix team.

5. Configure Application

An application configuration file will be provided by the Scriptix team alongside your environment file. Update the domain settings to match your deployment and ensure the license details are correctly set as instructed.

6. Place License Files

For offline licensing, copy your license files into the config directory:

cp /path/to/license.json config/license.json
# license_key.pub should already be in config/

For online licensing, just set license_key in config.local.yaml (step 5).

7. Download ASR Models (first time only)

The ASR models (~15 GB) are downloaded automatically on first startup. If you encounter issues downloading models, consult your system administrator — Scriptix will provide a bucket connection string for direct access.

8. Start the Stack

# Start all services
docker compose -f docker-compose.onprem.yml --env-file .env.onprem up -d

# Database migrations run automatically when the API starts.
# Wait for health checks to pass (~30 seconds)
docker compose -f docker-compose.onprem.yml --env-file .env.onprem ps

9. Verify the Installation

On first startup, the API automatically:

  • Runs database migrations
  • Creates the admin account using ADMIN_EMAIL / ADMIN_PASSWORD / ORG_NAME from .env.onprem
  • Seeds a default transcription plan
# Check all services are running
docker compose -f docker-compose.onprem.yml --env-file .env.onprem ps

# Test the API health
curl http://localhost:8000/health
# → OK

# Test the UI
curl -s http://localhost:80 | head -1
# → <!DOCTYPE html>

Log in to the web UI at http://app.example.com (or http://localhost:80) with the admin credentials from step 8.

10. Post-Installation

Enable Auto-Start on Boot

sudo systemctl enable docker

For HTTPS access, put nginx or Caddy in front:

# /etc/nginx/sites-available/scriptix-api
server {
listen 443 ssl;
server_name api.example.com;

ssl_certificate /etc/ssl/certs/scriptix.crt;
ssl_certificate_key /etc/ssl/private/scriptix.key;

client_max_body_size 2G;

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

# /etc/nginx/sites-available/scriptix-ui
server {
listen 443 ssl;
server_name app.example.com;

ssl_certificate /etc/ssl/certs/scriptix.crt;
ssl_certificate_key /etc/ssl/private/scriptix.key;

location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host $host;
}
}

You're ready to start transcribing.