This guide walks through the complete buyer experience: launching the platform from AWS Marketplace, accessing it for the first time, and day-to-day operations.
From the AWS Marketplace product page, click Continue to Subscribe, then Continue to Configuration.
Select the deployment region:
| Region | ID |
|---|---|
| US East (N. Virginia) | us-east-1 |
| US East (Ohio) | us-east-2 |
| US West (N. California) | us-west-1 |
| US West (Oregon) | us-west-2 |
Click Continue to Launch, then choose Launch CloudFormation as the launch action.
The CloudFormation template creates all required infrastructure. Fill in the following:
| Parameter | Description |
|---|---|
| Instance Type | Default: r8i.2xlarge (8 vCPU, 64 GiB RAM). Minimum recommended for production workloads. |
| VPC ID | Select the VPC to deploy into. |
| Subnet ID | Select a public subnet (must have internet access for LLM API calls). |
| Parameter | Description |
|---|---|
| OpenAI API Key | Your API key for LLM access. This is stored securely and never exposed in logs or outputs. |
| External URL | Optional. Enter your domain (e.g., https://jaxon.example.com) if you have DNS configured. Leave empty to auto-detect from the instance public IP. |
SSH is disabled by default. The platform uses AWS Systems Manager Session Manager for shell access -- no keys or open ports needed.
| Parameter | Description |
|---|---|
| Enable SSH | Set to true only if you need traditional SSH access. |
| SSH Key Pair | Required if SSH is enabled. Select an existing EC2 key pair. |
| SSH Access CIDR | Required if SSH is enabled. Your IP address in CIDR notation (e.g., 203.0.113.5/32). Find your IP at https://checkip.amazonaws.com and append /32. |
| Parameter | Description |
|---|---|
| SSL Certificate | Base64-encoded certificate. Leave empty to auto-generate a self-signed cert. |
| SSL Private Key | Base64-encoded private key. Leave empty for self-signed. |
| Parameter | Description |
|---|---|
| Encrypt EBS Volume | Default: true. Encrypts the root volume at rest. |
| EBS Encryption KMS Key ID | Optional. Leave empty to use the default aws/ebs key. |
Review the parameters and check the IAM capabilities acknowledgment box. Click Create stack.
The stack takes approximately 2-3 minutes to reach CREATE_COMPLETE in CloudFormation.
Important: CREATE_COMPLETE means the infrastructure is provisioned, but the platform is not ready yet.
1. In the EC2 console, wait for the instance Status Check to display 3/3 checks passed before attempting to connect. While status checks are still Initializing, the instance is not yet accepting connections.
2. After status checks pass, first-boot initialization continues in the background for an additional 5-10 minutes. During this time, the platform generates credentials, initializes Vault, and starts all services. The .credentials file and login page will not be available until first-boot finishes.
You can monitor progress by connecting to the instance and running:
tail -f /var/log/jaxon-first-boot.log
No SSH keys or open ports required. This is the recommended access method.
From the AWS Console:
From the AWS CLI:
aws ssm start-session --target <instance-id> --region <region>
The instance ID is available in the CloudFormation Outputs tab.
If you set EnableSsh=true during launch:
ssh -i <key-file>.pem ubuntu@<public-ip>
The public IP and SSH command are shown in the CloudFormation Outputs tab.
After the stack reaches CREATE_COMPLETE, find the PlatformUrl in the CloudFormation Outputs tab.
If you left External URL empty, this will be https://<public-ip>. If using a self-signed certificate, your browser will show a security warning -- this is expected. Proceed through the warning to access the platform.
Login credentials are written to a file on the instance during first boot. Connect to the instance (see Connecting to the Instance above) and switch to the ubuntu user before retrieving credentials or running any platform shell scripts:
sudo su - ubuntu
cat /opt/jaxon/dsail/.credentials
The file path is also shown in the CloudFormation Outputs tab as CredentialsFile.
The file contains passwords for:
| Credential | Description |
|---|---|
| akadmin user | Authentik bootstrap admin. |
| admin user | Full administrative access. Use this for initial setup. |
| jaxon user | Standard user account for day-to-day use. |
This file has restricted permissions (0600, owner-only).
https://<host>/if/admin/, where <host> is the instance public IP address or your configured domain hostname.credentials fileOnce logged in, the platform is ready to use. The built-in documentation is available via the Platform Docs link in the sidebar.
For a detailed walkthrough, see the Getting Started guide and SOX Compliance Tutorial in the Docs tab.
Important: All platform shell scripts must be run as the ubuntu user. If connected via Session Manager, run sudo su - ubuntu first.
# Check platform status
/opt/jaxon/dsail/jaxon-status.sh
# Stop the platform
/opt/jaxon/dsail/jaxon-stop.sh
# Start the platform
/opt/jaxon/dsail/jaxon-start.sh
The platform starts automatically on instance boot -- no manual intervention needed.
After sudo reboot, all services come back automatically:
jaxon-platform.service systemd unit starts Docker Compose# All services
cd /opt/jaxon/dsail && docker compose logs -f
# Specific service
docker compose logs -f platform-api
# First-boot log (for troubleshooting initial setup)
cat /var/log/jaxon-first-boot.log
To switch from an auto-detected IP to a DNS domain name:
cd /opt/jaxon/dsail
# 1. Update the URL in .env
sed -i 's|JAXON_EXTERNAL_URL=.*|JAXON_EXTERNAL_URL=https://your-domain.example.com|' .env
# 2. Force Authentik to re-apply configuration with the new URL
touch auth/blueprints/*.yaml
# 3. Restart the stack
/opt/jaxon/dsail/jaxon-stop.sh
/opt/jaxon/dsail/jaxon-start.sh
If using a custom SSL certificate for the new domain, also update SSL_CERT_CONTENT and SSL_KEY_CONTENT in .env before restarting.
To replace the self-signed certificate with a proper certificate:
cd /opt/jaxon/dsail
# Base64 encode your certificate and key
SSL_CERT=$(base64 -w 0 < /path/to/cert.pem)
SSL_KEY=$(base64 -w 0 < /path/to/key.pem)
# Update .env
sed -i "s|^SSL_CERT_CONTENT=.*|SSL_CERT_CONTENT=$SSL_CERT|" .env
sed -i "s|^SSL_KEY_CONTENT=.*|SSL_KEY_CONTENT=$SSL_KEY|" .env
# Restart edge-proxy to pick up the new certificate
docker compose restart edge-proxy
The platform uses AWS KMS for Vault auto-unseal. Vault automatically unseals on every restart -- no manual intervention or unseal keys needed.
Recovery keys (for emergency operations only) are saved at:
/opt/jaxon/dsail/.vault-recovery-keys.txt
This file has restricted permissions (0600, owner-only). Recovery keys are only needed for advanced Vault operations such as generating a new root token.
The platform runs in hardened mode with defense-in-depth security controls:
no-new-privileges security option enabled| Location | Contents | Access |
|---|---|---|
/opt/jaxon/dsail/.credentials | Login credentials (akadmin, admin, jaxon users) | 0600 (owner only) |
/opt/jaxon/dsail/.vault-recovery-keys.txt | Vault recovery keys | 0600 (owner only) |
/opt/jaxon/dsail/customer-config.env | Launch parameters (API key) | 0600 (owner only) |
cat /var/log/jaxon-first-boot.log
/opt/jaxon/dsail/jaxon-status.sh
ls -la /opt/jaxon/dsail/.initialized
If this file does not exist, first-boot has not finished. Check the log for errors.
If you did not provide an SSL certificate, the platform auto-generates a self-signed cert. Your browser will display a security warning -- this is expected. For production use, provide a proper certificate via the SSL parameters or rotate it after launch (see Rotating SSL Certificates above).
This should not happen with AWS KMS auto-unseal. If it does:
aws sts get-caller-identity
docker compose logs kms
/opt/jaxon/dsail/vault/config.hcl.For technical support, contact Jaxon AI at support@jaxon.ai.