Appearance
Air-Gapped Appliance Upgrade
Overview
This guide covers upgrading Call Telemetry in secure or offline environments without internet access. For standard upgrades with internet connectivity, see the Upgrading Guide.
Feature Requirements
Air-gapped appliances are supported in version 0.7.9 and later.
Summary of Steps
- Download Docker Compose and support files
- Build offline Docker tar file
- Upload tar file to Call Telemetry appliance
- Load tar file as active image
Step 1 - Download Docker Compose and Support Files
You will need an internet-connected computer to download the image and support files. The computer can be Linux, Mac, or Windows.
Begin by installing Docker on your host computer.
Linux/Mac (using wget)
bash
# Create a directory for the files
mkdir -p calltelemetry-upgrade
cd calltelemetry-upgrade
# Download all required files
wget https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/docker-compose.yml
wget https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/ova/Caddyfile
wget https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/ova/cli.sh
wget https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/ova/nats.conf
# Make the CLI script executable
chmod +x cli.shWindows (using PowerShell)
powershell
# Create a directory for the files
New-Item -Path "calltelemetry-upgrade" -ItemType Directory -Force
Set-Location -Path "calltelemetry-upgrade"
# Download all required files
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/docker-compose.yml" -OutFile "docker-compose.yml"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/ova/Caddyfile" -OutFile "Caddyfile"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/ova/cli.sh" -OutFile "cli.sh"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/calltelemetry/calltelemetry/refs/heads/master/ova/nats.conf" -OutFile "nats.conf"Step 2 - Build the Offline Tar Bundle
Create a tar file containing the DockerHub images for Call Telemetry.
Identify Required Images
Check the docker-compose.yml file you downloaded to identify all required images for your target version.
Example images for version 0.8.3:
- bitnami/postgresql:14
- caddy:2-alpine
- calltelemetry/web:0.8.3-rc74
- calltelemetry/vue:0.8.3-rc74
- calltelemetry/traceroute:0.7.3
- nats:latest
Pull and Save Images
bash
# Example for version 0.8.3
docker pull bitnami/postgresql:14
docker pull caddy:2-alpine
docker pull calltelemetry/web:0.8.3-rc74
docker pull calltelemetry/vue:0.8.3-rc74
docker pull calltelemetry/traceroute:0.7.3
docker pull nats:latest
# Save all images to a single tar file
docker save \
bitnami/postgresql:14 \
caddy:2-alpine \
calltelemetry/web:0.8.3-rc74 \
calltelemetry/vue:0.8.3-rc74 \
calltelemetry/traceroute:0.7.3 \
nats:latest \
-o calltelemetry-0.8.3.tarSingle Image Example
For testing or minimal updates, you can save just the main application image:
bash
docker pull calltelemetry/web:0.8.3-rc74
docker save calltelemetry/web:0.8.3-rc74 -o ct-web-083.tarYou now have a tar file ready to upload to your air-gapped appliance.
Step 3 - Upload to Call Telemetry Appliance
Transfer the tar file and support files to your Call Telemetry server via SFTP.
Using FileZilla
Open FileZilla FTP Client
Connect to your Call Telemetry appliance:
- Host: Your appliance IP
- Port: 22 (SFTP port)
- Username: calltelemetry
- Password: Your password
Upload files to
/home/calltelemetry/:calltelemetry-0.8.3.tar(or your tar file)docker-compose.ymlCaddyfilecli.shnats.conf

Using Command Line SFTP
bash
# Upload tar file
sftp -P 22 calltelemetry@<appliance-ip>
put calltelemetry-0.8.3.tar /home/calltelemetry/
put docker-compose.yml /home/calltelemetry/
put Caddyfile /home/calltelemetry/ova/
put cli.sh /home/calltelemetry/
put nats.conf /home/calltelemetry/ova/
exitStep 4 - Activate the Image
Load the Docker images and restart the application.
SSH Connection
Connect to the appliance via SSH on port 2222:
bash
ssh -p 2222 calltelemetry@<appliance-ip>SSH Port
Port 2222 is for SSH management. Port 22 is dedicated for SFTP and CDR transfers only.
Load Images and Restart
bash
# Navigate to home directory
cd /home/calltelemetry
# Load the Docker images
sudo docker load -i calltelemetry-0.8.3.tar
# Update docker-compose.yml if needed
sudo cp docker-compose.yml /home/calltelemetry/docker-compose.yml
# Update support files if provided
sudo cp Caddyfile /home/calltelemetry/ova/Caddyfile
sudo cp cli.sh /home/calltelemetry/cli.sh
sudo cp nats.conf /home/calltelemetry/ova/nats.conf
# Make CLI script executable
sudo chmod +x /home/calltelemetry/cli.sh
# Restart the application
sudo systemctl restart docker-compose-app.serviceVerify the Upgrade
Monitor the application startup:
bash
# Watch Docker container status
sudo docker ps
# Follow application logs
sudo docker logs calltelemetry-web -f
# Check migration status
sudo /home/calltelemetry/cli.sh migration_statusTroubleshooting
Image Load Failures
If docker load fails:
bash
# Verify tar file integrity
ls -lh calltelemetry-0.8.3.tar
# Check available disk space
df -h
# Try loading with verbose output
sudo docker load -i calltelemetry-0.8.3.tar --verboseService Won't Start
bash
# Check service status
sudo systemctl status docker-compose-app.service
# View service logs
sudo journalctl -u docker-compose-app.service -f
# Verify Docker Compose file syntax
sudo docker compose -f /home/calltelemetry/docker-compose.yml configMigration Issues
If database migrations fail:
bash
# Check migration status
sudo /home/calltelemetry/cli.sh migration_status
# Manually run migrations
sudo /home/calltelemetry/cli.sh migration_run
# View database logs
sudo docker logs calltelemetry-postgresRollback Procedure
If the upgrade fails, rollback to the previous version:
bash
# Stop the service
sudo systemctl stop docker-compose-app.service
# Restore previous docker-compose.yml from backup
sudo cp /home/calltelemetry/backups/docker-compose.yml.backup /home/calltelemetry/docker-compose.yml
# Restart with previous configuration
sudo systemctl start docker-compose-app.serviceAutomatic Backups
The upgrade process creates automatic backups in /home/calltelemetry/backups/. Keep these until you confirm the upgrade is successful.
See Also
- Upgrading Guide - Standard online upgrade procedures
- CLI Reference - Complete CLI command documentation
- Kubernetes Documentation - K8s deployment and updates
