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¶
- Navigate to Desktops → click New Desktop
- 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)
- 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:
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:
- Stops the running container (if any)
- Removes the container
- Deletes the desktop configuration from the database