Skip to content

Offline Client

The Turbo Client enables direct deployment of virtual applications without requiring a Turbo Server, specifically designed for environments with no external internet access. This approach is ideal for:

  • Small-scale deployments
  • Environments requiring direct control
  • Development and testing environments
  • Environments with no external internet access

What You'll Learn

  • How to prepare and stage application images for offline deployment
  • How to install and configure the Turbo Client in offline mode
  • How to manage application images in an offline environment
  • How to deploy applications with different isolation settings
  • How to script unattended offline deployments
  • How to maintain and update applications without Internet access

Prerequisites

  • Windows operating system
  • Administrative privileges for system-wide installation
  • Network share accessible by deployment systems
  • A staging system with Internet access to Turbo.net Hub
  • Sufficient storage space for application images

Limitations and Considerations

Understanding the limitations of offline deployment is crucial for proper planning and setting realistic expectations.

Initial Setup Requirements

  • Internet Connectivity Required: Initial image pulling and VM engine download require online access or drive-based transfer
  • Image Pre-caching: All required images must be cached locally before disconnection
  • Configuration Preparation: Hub connections needed for initial subscription setup

Update Management

  • Manual Update Process: Feature updates require manual image management
  • Security Patches: Critical updates need planned connectivity windows or manual updates
  • Version Synchronization: Multiple machines may have different application versions

Storage Requirements

  • Disk Space: Local image caches can consume significant storage
  • Cache Management: Regular cleanup may be required to manage disk usage
  • Redundancy Planning: Consider backup strategies for cached images

Feature Limitations

Hub-Dependent Capabilities Lost

  • Application Discovery: Cannot browse, search, or discover new applications from Turbo Hub
  • Hub-Based Licensing: Real-time license validation and activation requires connectivity
  • Public Repository Access: Cannot pull applications directly from public repositories during offline operation
  • Application Metadata: Missing real-time application descriptions, version notes, and compatibility information

Connectivity-Dependent Features Lost

  • Real-time Telemetry: Usage analytics, performance metrics, and diagnostic data cannot be transmitted to Turbo Server
  • Cloud-Based Policy Management: Cannot receive or apply real-time policy updates from centralized management
  • Centralized User Management: Real-time user authentication, authorization, and directory synchronization unavailable
  • Live Monitoring: Real-time application performance monitoring, alerting, and health checks disabled

Update and Maintenance Features Lost

  • Automatic Security Patches: Critical security updates and vulnerability fixes require manual intervention
  • Real-time Configuration Sync: Configuration changes cannot be synchronized across multiple systems automatically
  • Background Update Services: Automatic application and VM engine updates are disabled
  • Dependency Management: Automatic resolution and updates of application dependencies unavailable

Integration and Collaboration Features Lost

  • Cloud Storage Integration: Real-time synchronization with cloud storage providers (OneDrive, Google Drive, etc.) unavailable
  • Third-Party API Integration: Services requiring live API connectivity cannot function
  • Real-time Data Synchronization: Application data synchronization across devices and users disabled
  • Collaboration Features: Real-time sharing, collaborative workspaces, and multi-user features unavailable
  • External Authentication: Single sign-on (SSO) and external identity provider authentication may be limited

Operational and Administrative Features Lost

  • Live Fleet Management: Real-time monitoring and management of application deployments across enterprise environments
  • Usage Reporting: Real-time usage statistics, compliance reporting, and license tracking unavailable
  • Centralized Logging: Log aggregation and centralized log analysis services disabled
  • Remote Configuration: Cannot push configuration changes or updates to deployed applications remotely
  • Automated Compliance: Real-time compliance checking and automated policy enforcement unavailable

Deployment Scenarios

Understanding different offline deployment scenarios helps in planning the appropriate implementation strategy.

Air-Gapped Environments

Air-gapped environments provide complete network isolation and require careful preparation and image transfer.

Characteristics:

  • No external network connectivity
  • Highest security requirements
  • Image transfer via physical media or secure networks
  • Manual update processes

Implementation Strategy:

  1. Preparation Phase (on connected system):

    • Pull all required images and dependencies
    • Download VM engines and client components
    • Export images to portable media
  2. Transfer Phase:

    • Securely transfer images to target environment
    • Import images on destination systems
    • Verify image integrity and completeness
  3. Deployment Phase:

    • Install client components offline
    • Configure applications using local images
    • Set up services and integrations

Periodic Connectivity

Periodic connectivity scenarios involve hybrid environments with scheduled or intermittent Internet access.

Characteristics:

  • Regular but limited connectivity windows
  • Opportunity for scheduled updates
  • Balance between offline operation and update requirements

Implementation Strategy:

  1. Online Windows:

    • Pull latest images and updates
    • Synchronize configurations
    • Perform maintenance tasks
  2. Offline Periods:

    • Use locally cached images
    • Continue normal operations
    • Queue updates for next online window
  3. Synchronization Management:

    • Schedule updates during maintenance windows
    • Prioritize critical updates
    • Monitor cache usage and cleanup

Network-Limited Environments

Network-limited environments have poor or expensive connectivity that requires bandwidth optimization.

Characteristics:

  • Limited bandwidth or high network costs
  • Intermittent connectivity issues
  • Need for traffic optimization

Implementation Strategy:

  1. Bandwidth Optimization:

    • Use delta updates when possible
    • Prioritize critical image updates
    • Implement local caching strategies
    • If applicable, use Turbo Peer-to-Peer Image Distribution
  2. Connection Management:

    • Schedule updates during off-peak hours
    • Use --no-pull options to avoid unnecessary downloads
    • Monitor network usage patterns

Image Preparation and Staging

  1. Prepare the required base images from Turbo.net Hub on a network share using a system that has access to Turbo.net Hub.
    The system must have the Turbo Client to pull the images.
    bash
    # Pull the SVM images from Turbo.net Hub to the client's repository
    turbo pull /xvm,windows/base,windows/clean
    Pulling VM version 25.2.3
    Pull complete
    Pulling image base version 2
    Pull complete
    Pulling image clean version 42
    Pull complete
    
    # Export the SVM image files to a network share
    turbo export /xvm:25.2.3 \\networkshare\turbo\packages\xvm\xvm_25.2.3.svm
    turbo export windows/base:2 \\networkshare\turbo\packages\windows_base\windows_base_2.svm
    turbo export windows/clean:42 \\networkshare\turbo\packages\windows_clean\windows_clean_42.svm

The same process may be used to pull application images from Turbo.net Hub as well:

bash
turbo pull adobe/photoshop:26.3.0.156
turbo export adobe/photoshop:26.3.0.156 \\networkshare\turbo\packages\adobe_photoshop\adobe_photoshop_26.3.0.156.svm

Installation and Configuration

  1. Download and install the Turbo Client for all users on the deployment system.

    bash
    # Silent system-wide installation using EXE installer in offline mode
    turbo-client-installer.exe --all-users --offline --silent
    
    # Silent system-wide installation using MSI installer
    start /wait msiexec /i "turbo-client-installer.msi" cmdline="--offline" /qn

    The Turbo Client updates the PATH environment variable to include its binary folder.
    A new command prompt with an updated PATH variable should be opened before executing turbo commands.

  2. (Optional) Lock down the image repository, so end users are unable to download or add new images without administrative privileges.
    This is done by setting the image path to a read-only location for all users on the system and locking the turbo config settings.

    bash
    # Set the image path to allusers (equivalent to C:\ProgramData\Turbo\Containers\repo)
    turbo config --image-path=allusers --all-users
    
    # Set the image path to a read-only folder for users (admins should have write access) on the D: drive
    turbo config --image-path=D:\turboimages --all-users
    
    # Set the image path to a read-only folder for users on a network drive
    # Caution: the network drive should be a high-performance share or performance degradation will occur
    turbo config --image-path=\\networkshare\turbo\imagerepository --all-users
    
    # Lock turbo configuration
    turbo config --as-override --all-users
  3. Import the required base images from the network share to the client's image repository.

    bash
    turbo import svm -n=/xvm:25.2.3 \\networkshare\turbo\packages\xvm\xvm_25.2.3.svm --all-users
    turbo import svm -n=windows/base:2 \\networkshare\turbo\packages\windows_base\windows_base_2.svm --all-users
    turbo import svm -n=windows/clean:42 \\networkshare\turbo\packages\windows_clean\windows_clean_42.svm --all-users
  4. Import the SVM packaged applications that have been created with Turbo Studio to the client's image repository.

    bash
    # Import SVM from network folder
    # Caution: network errors or intermittent network issues may cause the command to fail and need to be re-run
    turbo import svm -n=adobe/photoshop:26.3.0.156 \\networkshare\turbo\packages\adobe_photoshop\adobe_photoshop_26.3.0.156.svm --all-users
    turbo import svm -n=tableau/tableaupublic-x64:2024.3.3 \\networkshare\turbo\packages\tableau_tableaupublic-x64\tableau_tableaupublic-x64_2024.3.3.svm --all-users
    turbo import svm -n=mozilla/firefox-esr-x64:128.6 \\networkshare\turbo\packages\mozilla_firefox-esr-x64\mozilla_firefox-esr-x64_128.6.svm --all-users
  5. (Recommended) Cache the SVM images for faster application launches and smaller sandbox sizes.
    Caching will export the executable binaries to the assemblies folder under the image repository path.

    bash
    turbo cache adobe/photoshop:26.3.0.156 --all-users
    turbo cache tableau/tableaupublic-x64:2024.3.3 --all-users
    turbo cache mozilla/firefox-esr-x64:128.6 --all-users
  6. Install the applications in offline mode. See the turbo installi command for more information.

    • Example 1: Install Photoshop with merge isolation
      • See isolation settings for more information
      • The user will read and write to files on the native file system
      • Start menu and desktop shortcuts are created
      • File associations, URL handlers, and shell extensions are registered
    bash
    turbo installi --offline --all-users -n=photoshop adobe/photoshop -- -n=photoshop --enable=usedllinjection,disablefontpreload --isolate=merge
    • Example 2: Install Tableau Public with write-copy isolation and merge access to user folders, but without desktop shortcuts and file associations
      • The user will read files from the native file system, but write to the application sandbox, except for user folders such as Desktop, Documents, and Downloads, which will have direct write access
      • Start menu shortcuts are created, but not desktop shortcuts
      • URL handlers and shell extensions are registered, but not file associations
    bash
    turbo installi --offline --all-users --no-file-associations --no-desktop-shortcuts -n=tableaupublic tableau/tableaupublic-x64 -- -n=tableaupublic --enable=usedllinjection,disablefontpreload --isolate=write-copy+merge-user
    • Example 3: Install Firefox ESR with full isolation, but without file associations, URL handlers, or shell extensions
      • The user will not have access to the native file system other than required base system files and writes go to the application sandbox
      • Start menu and desktop shortcuts are created
      • File associations, URL handlers, and shell extensions are not registered
    bash
    turbo installi --offline --all-users --no-file-associations --no-url-handlers -n=firefox-esr-x64 mozilla/firefox-esr-x64 -- -n=firefox-esr-x64 --enable=usedllinjection,disablefontpreload --isolate=full

Scripting Deployment

Turbo Client's CLI interface can be used to fully script the process for unattended deployment scenarios.

bash
# Example Unattended Deployment Script

# Silent system-wide installation using EXE installer in offline mode
turbo-client-installer.exe --offline --all-users --silent
   
# Set the image path to allusers (equivalent to C:\ProgramData\Turbo\Containers\repo)
# Note: specify the full path to turbo.exe as the PATH environment will not be updated inside the script
C:\Program Files (x86)\Turbo\Cmd\turbo.exe config --image-path=allusers --all-users

# Lock turbo configuration
C:\Program Files (x86)\Turbo\Cmd\turbo.exe config --as-override --all-users

# Import base images from network share
turbo import svm -n=/xvm:25.2.3 \\networkshare\turbo\packages\xvm\xvm_25.2.3.svm --all-users
turbo import svm -n=windows/base:2 \\networkshare\turbo\packages\windows_base\windows_base_2.svm --all-users
turbo import svm -n=windows/clean:42 \\networkshare\turbo\packages\windows_clean\windows_clean_42.svm --all-users

# Import application SVM packages from network share
C:\Program Files (x86)\Turbo\Cmd\turbo.exe import svm -n=adobe/photoshop:26.3.0.156 \\networkshare\turbo\packages\adobe_photoshop\adobe_photoshop_26.3.0.156.svm --all-users
C:\Program Files (x86)\Turbo\Cmd\turbo.exe import svm -n=tableau/tableaupublic-x64:2024.3.3 \\networkshare\turbo\packages\tableau_tableaupublic-x64\tableau_tableaupublic-x64_2024.3.3.svm --all-users
C:\Program Files (x86)\Turbo\Cmd\turbo.exe import svm -n=mozilla/firefox-esr-x64:128.6 \\networkshare\turbo\packages\mozilla_firefox-esr-x64\mozilla_firefox-esr-x64_128.6.svm --all-users

# Cache executable binaries for SVM images for improved performance
C:\Program Files (x86)\Turbo\Cmd\turbo.exe cache adobe/photoshop:26.3.0.156 --all-users
C:\Program Files (x86)\Turbo\Cmd\turbo.exe cache tableau/tableaupublic-x64:2024.3.3 --all-users
C:\Program Files (x86)\Turbo\Cmd\turbo.exe cache mozilla/firefox-esr-x64:128.6 --all-users

# Install applications to desktop
C:\Program Files (x86)\Turbo\Cmd\turbo.exe installi --offline --all-users -n=photoshop adobe/photoshop -- -n=photoshop --enable=usedllinjection,disablefontpreload --isolate=merge
C:\Program Files (x86)\Turbo\Cmd\turbo.exe installi --offline --all-users -n=tableaupublic tableau/tableaupublic-x64 -- -n=tableaupublic --enable=usedllinjection,disablefontpreload --isolate=merge
C:\Program Files (x86)\Turbo\Cmd\turbo.exe installi --offline --all-users -n=firefox-esr-x64 mozilla/firefox-esr-x64 -- -n=firefox-esr-x64 --enable=usedllinjection,disablefontpreload --isolate=merge

Audit Contents of Image Repository on System

View which images are in the client's repository.
The --all-users flag is used to check the images in the shared all users repository.

bash
turbo images --all-users

Use the JSON output format for programmatic processing of the output.

bash
turbo images --format=json --all-users

Audit Turbo Installed Applications on System

View which applications are installed on the system.
The --all-users flag is used to check the installed applications for the all users context.

bash
turbo installed --all-users

Use the JSON output format for programmatic processing of the output.

bash
turbo installed --format=json --all-users

Turbo installed applications can also be found in the Windows Registry under:

  • HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\ (current user)
  • HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\ (all users)

Updating Application Images in Repository

Turbo regularly releases updates for the Turbo VM and other base images with compatibility updates for new OS versions and bug fixes.

To receive the updates, repeat the base image preparation process:

bash
# Pull and export the images from a system with external internet access and Turbo Client
turbo pull /xvm,windows/base,windows/clean
Pulling VM version 25.5.6
Pulling image base version 3
Pulling image clean version 43

turbo export /xvm:25.5.6 \\networkshare\turbo\packages\xvm\xvm_25.5.6.svm
turbo export windows/base:3 \\networkshare\turbo\packages\windows_base\windows_base_3.svm
turbo export windows/clean:43 \\networkshare\turbo\packages\windows_clean\windows_clean_43.svm

After staging the images, import them to the deployment system:

bash
# Import new base images on the deployment system
turbo import svm -n=/xvm:25.5.6 \\networkshare\turbo\packages\xvm\xvm_25.5.6.svm --all-users
turbo import svm -n=windows/base:3 \\networkshare\turbo\packages\windows_base\windows_base_3.svm --all-users
turbo import svm -n=windows/clean:43 \\networkshare\turbo\packages\windows_clean\windows_clean_43.svm --all-users

For self-packaged applications, import a new application version to update the application:

bash
# Old application version 128.6
turbo import svm -n=mozilla/firefox-esr-x64:128.6 \\networkshare\turbo\packages\mozilla_firefox-esr-x64\mozilla_firefox-esr-x64_128.6.svm --all-users

# Import new 130.0 version to update the application
turbo import svm -n=mozilla/firefox-esr-x64:130.0 \\networkshare\turbo\packages\mozilla_firefox-esr-x64\mozilla_firefox-esr-x64_130.0.svm --all-users

To update an existing application version in order to correct an issue or packaging mistake, use the --overwrite flag:

bash
# Application version 128.6 with packaging mistake
turbo import svm -n=mozilla/firefox-esr-x64:128.6 \\networkshare\turbo\packages\mozilla_firefox-esr-x64\mozilla_firefox-esr-x64_128.6.svm --all-users

# Import fixed image using the same 128.6 version with --overwrite flag
turbo import svm -n=mozilla/firefox-esr-x64:128.6 \\networkshare\turbo\packages\mozilla_firefox-esr-x64\mozilla_firefox-esr-x64_128.6-fixed.svm --overwrite --all-users

Version Management

Unless a version is specified for the application, the client will use the highest version present for the VM or application in the image repository.

Each application can be specified to use a specific version of the Turbo VM or application version. This is particularly useful in:

  • Enterprise scenarios where stability is critical and changes must be tested before deployment
  • Environments where users need to run multiple versions of the same application side-by-side

For example, the following command will use the highest Turbo VM and Photoshop image available in the image repository:

bash
turbo installi --offline --all-users -n=photoshop adobe/photoshop -- -n=photoshop --enable=usedllinjection,disablefontpreload --isolate=merge

Lock down the VM using the -vm=[version] flag. To unset the VM, use the --vm= flag with an empty string:

bash
turbo installi --offline --all-users -n=photoshop adobe/photoshop -- --vm=24.12.11 -n=photoshop --enable=usedllinjection,disablefontpreload --isolate=merge

Lock down the application version by specifying the version in the image list:

bash
turbo installi --offline --all-users -n=photoshop adobe/photoshop:26.3.0.156 -- -n=photoshop --enable=usedllinjection,disablefontpreload --isolate=merge

Lock down both Turbo VM and application version:

bash
turbo installi --offline --all-users -n=photoshop adobe/photoshop:26.3.0.156 -- --vm=24.12.11 -n=photoshop --enable=usedllinjection,disablefontpreload --isolate=merge