Skip to content

Managing Desktops

Desktops are SAS Analytics Pro container instances managed by the extension. Each desktop has its own configuration, volumes, and lifecycle.

Creating a Desktop

  1. Navigate to Desktops → click New Desktop
  2. Complete the tabbed form:
    • Desktop — name, credentials, order, cadence, version
    • Settings — port configuration, web access options
    • Mounts — local directories and network shares (available after first save)
  3. Click Create

Each desktop must have a unique name. The name is used to generate Docker volume names and container names.

Starting and Stopping

  • Start — pulls the image (if needed), provisions license and certificates, creates volumes, and starts the container
  • Stop — stops and removes the container (volumes are preserved)

Start and stop operations run asynchronously on the backend, so they survive UI navigation. The desktop card shows real-time status updates during operations.

Desktop Fleet View

The Home page shows a Desktop Fleet card with:

  • Live Docker stats (CPU and memory usage) for running desktops
  • Start/stop controls per desktop
  • Session time remaining (for time-limited tiers)
  • Aggregated CPU and memory progress bars across all running containers

Click View Stats on a desktop row to open Docker Desktop's built-in container stats view.

Desktop Cards

Each desktop is shown as a card (or list row) with:

  • Status bar — coloured left border indicating state (grey=stopped, blue=loading, green=running, red=error)
  • License expiry — shows expiry date with colour coding (red=expired, orange=expiring within 30 days). Click the chip to check for a newer license from SAS.
  • Image status — icon indicates whether the container image is available locally:
    • ☁️ Cloud Done — image is ready
    • ⬇️ Cloud Download — image needs to be pulled (click to pull without starting)
    • 🔵 Update Available — a newer version exists (click to pull the update)
  • Action icons — Start/Stop, Open Browser, Settings, Delete, Credentials, Image, Stats, Terminal, Logs

Settings

The Settings tab configures container behaviour. All settings are grouped into collapsible sections.

Services and Ports

Controls which services are exposed from the container:

Service Default Port Description Tier Required
HTTP 8080 SAS Studio and VS Code web access (port 80 inside container) Any
HTTPS Secure web access (port 443 inside container) Any
SSH 2222 SSH access to the container Professional+
SAS Enterprise Guide (IOM) 8591 SAS IOM protocol for Enterprise Guide 8.6 Professional+
VS Code Desktop (Compute Server) 8592 REST API for VS Code SAS Extension Professional+

Web Access

Tier required: Professional+ to toggle (enabled by default for all tiers)

The Enable Web Access toggle controls the Apache httpd reverse proxy inside the container. When enabled (the default), SAS Studio and VS Code are accessible via the browser at the configured HTTP/HTTPS ports.

When disabled:

  • SAS Studio and VS Code are not accessible via the browser
  • Port fields are hidden
  • The desktop card links to a container terminal instead of SAS Studio

Tip

Disable web access if you only need SSH or IOM connectivity and want to reduce the container's attack surface.

SSH Access

Tier required: Professional+

The Enable SSH Access toggle starts an SSH daemon inside the container. When enabled, you can connect via any SSH client:

ssh -p 2222 sasdemo@localhost

The default SSH port is 2222 (mapped to container port 22). Change it if you have conflicts with other desktops.

External Application Ports

Tier required: Professional+

When enabled, these ports allow external desktop applications to connect to the SAS container:

  • SAS Enterprise Guide (IOM port 8591) — Windows only. Requires SAS Integration Technologies Client for Windows and SAS Providers for OLE DB installed on the client machine.
  • VS Code Desktop (Compute Server port 8592) — Cross-platform. Requires the SAS Extension for Visual Studio Code. Configure a connection profile in VS Code settings.json:
"SAS.connectionProfiles": {
    "activeProfile": "SAS Analytics Pro",
    "profiles": {
        "SAS Analytics Pro": {
            "endpoint": "http://localhost:8592",
            "serverId": "0001",
            "connectionType": "rest",
            "reconnect": true
        }
    }
}

Note

The Compute Server connection is marked as experimental by SAS.

Host ports auto-increment to avoid conflicts when multiple desktops are configured.

Port Conflicts

The extension warns you on save if a port is already used by another desktop. At start time, the backend validates that no two services on the same desktop share a port — if they do, the start operation fails with a descriptive error.

User Configuration

Tier required: Any

The User section controls how the SAS container manages user accounts. There are three modes available:

Default (sasdemo)

The container creates the standard sasdemo demo user with:

  • UID 1003, GID 1001
  • Home directory /data
  • Auto-generated password (persisted in /data/authinfo.txt)

No configuration needed — this is the default for new desktops.

Rename Demo User

Renames the built-in demo user account. The container still creates a single user with UID 1003, but with your chosen name instead of sasdemo.

Field Description Required
Demo User Name Name for the demo account (e.g. analyst) Yes

This sets the SAS_DEMO_USER environment variable. The user is otherwise identical to the default sasdemo account (same UID, home directory, and auto-generated password).

Custom User (Advanced)

Creates a completely separate Linux user account. The standard sasdemo user is not created in this mode.

Field Description Required Default
Username Linux username for the custom account Yes
Password Password for the custom account Yes
User UID Linux UID for the custom user No 1004

Warning

Custom User mode replaces the demo user entirely. The container will not create sasdemo — only your specified custom user will exist. The SAS_USERNAME, SAS_USERPASSWORD, and SAS_USERUID environment variables are passed to the container, and RUN_MODE is set to suppress demo user creation.

Tip

Leave User UID blank unless you need a specific UID for file permission compatibility with mounted volumes. The default (1004) avoids conflicts with the system UID range.

Debugging

Tier required: Any

Diagnostic settings for troubleshooting SAS issues:

Setting Description Default
Enable SAS Debug Enables verbose SAS diagnostic output Off
Write Logs to Disk Persists SAS logs to the data volume Off
Compute Log Format Format for compute server logs (text, json, trace) text

SAS Configuration

Tier required: Any

Setting Description Default
Enable SAS Lockdown Restricts SAS program access to approved directories only On

When lockdown is enabled, SAS programs can only access directories that are explicitly allowlisted. This is a security feature — mounted directories are not accessible to SAS code unless added to the lockdown path list.

Lockdown Paths

Tier required: Professional+ (to manage paths)

Manage which directories SAS programs can access when lockdown is enabled:

  • Click Add to add an absolute path (e.g. /data, /mnt/host)
  • Click the × on a path chip to remove it
  • The extension auto-suggests paths from your configured mounts and auto-mount location

Warning

If you mount a directory but don't add it to the lockdown paths, SAS programs will get "Physical file is not accessible" errors when trying to read or write files there.

Resources

Tier required: Any

Limit container resource consumption:

Setting Description Example
CPU Limit Maximum CPU cores the container can use 4.0
Memory Limit Maximum RAM the container can use 8g, 512m

Leave blank for no limit (container uses all available resources).

Container

Tier required: Any

Setting Description Default
Hostname Container hostname visible inside SAS sas-analytics-pro
Auto-remove container on stop Remove the container when stopped (volumes preserved) On

Tip

Disable auto-remove if you need to inspect container logs after stopping. The container will remain in a stopped state until manually removed or the desktop is started again.

SAS Studio Customisations

Tier required: Professional+ (requires Web Access enabled)

Configure SAS Studio behaviour with 17 settings across 5 categories:

General

Setting Description Default
Allow Get Record Count Allow SAS Studio to retrieve record counts for datasets On
Use Sort Key Function Enable the sort key function in SAS Studio On
Auto-complete Libraries Enable auto-completion for library names On
Auto-complete Tables Enable auto-completion for table names On
Allow Download Allow users to download files from SAS Studio On
Allow Upload Allow users to upload files to SAS Studio On
Variable Name Validation Set the validation level for SAS variable names ANY

File Navigation

Setting Description Default
File Navigation Root Set the root directory for file navigation (USER, CUSTOM, SASROOT) USER
Custom Root Path Custom root path when File Navigation Root is set to CUSTOM
Studio Data Parent Directory Parent directory for SAS Studio data files

Git

Setting Description Default
Allow Git Enable Git integration in SAS Studio On
Allow Git Password Allow password authentication for Git operations On

Performance

Setting Description Default
Long Polling Hold Time (seconds) Time in seconds to hold long polling requests 30
Max Upload Size (bytes) Maximum file upload size in bytes 10485760
Large Table Rows Number of rows that defines a large table 50000
Native Engines Specify native SAS engines to use

Display

Setting Description Default
Server Display Name Custom display name for the SAS server (max 20 characters) SAS Analytics Pro

Only non-default values are stored. Click Reset to Defaults to clear all customisations.

Volumes

Each desktop creates isolated named volumes:

Volume Purpose
{name}-data SAS workspace data
{name}-sasinside License files and configuration
{name}-code-server VS Code extension data

Volumes persist across container restarts. Deleting a desktop stops the container and removes it, but volumes are preserved unless manually removed.

Deleting a Desktop

Deleting a desktop:

  1. Stops the running container (if any)
  2. Removes the container
  3. Deletes the desktop configuration from the database

Warning

Desktop deletion does not remove Docker volumes. To reclaim disk space, remove volumes manually:

docker volume rm {name}-data {name}-sasinside {name}-code-server