
X2Go
Remote desktop sessions for Linux using the NX protocol
X2Go is an open source remote desktop server for Linux that uses the NX technology protocol. In QuickBox Pro, X2Go is installed as a system service (x2goserver) and is accessed through the X2Go client over a dedicated SSH port.
It is not a browser-based dashboard or web app. Access is provided via the X2Go client using the server host and the assigned QuickBox username.
Overview
X2Go provides remote desktop sessions for Linux servers and is designed for users who need a full GUI environment over an efficient NX-based connection. QuickBox Pro installs the X2Go server packages, enables the x2goserver service, and prepares per-user session directories.
If you need a web UI or browser-based control panel, X2Go is not the right tool. It requires the X2Go client and connects over your server’s SSH port (4747 unless a different port was chosen at install). If you do prefer browser-based remote access, check out noVNC for browser-based remote access options.
Key features
QuickBox Pro wires X2Go as a system-managed service with a predictable connection workflow. The install process pulls packages from the X2Go apt repository and keeps the service managed by systemd.
NX-based Remote Desktop
Open source Linux remote desktop using the NX technology protocol.
SSH-Based Sessions
Client connections use your server's SSH port (4747 unless a different port was chosen at install).
System Service
Managed by systemd as x2goserver during install and updates.
Per-User Session Files
Creates /home/username/.x2go with an ssh/ directory for user sessions.
X2Go Server Packages
Installs x2goserver, x2goserver-xsession, and pulseaudio via apt.
Official Repository
Adds the X2Go apt repository in /etc/apt/sources.list.d/x2go.list with keyring support.
When to use it
Use X2Go when you need a full Linux desktop session on a server instead of a web UI. It is ideal for administrators who want a dedicated client-based workflow rather than a browser route.
Good fit when
- You need a remote Linux desktop session instead of a browser UI.
- You can install and use the X2Go client on your personal computer.
- You want a system-managed service that runs as
x2goserver. - You are an administrator and can install admin-only software from the dashboard.
What QuickBox sets up
- QuickBox installs X2Go server packages and enables the
x2goserverservice. - Client connections use your server's SSH port (
4747unless a different port was chosen at install) with your QuickBox username. - Session directories are created under
/home/username/.x2go. - X2Go appears in the Package Management catalog for installs and reinstalls.
Installation
Install from the Dashboard
Open App Dashboard → Package Management (/dashboard?mode=packages), find X2Go in the Remote Access category (or search), and click Install. X2Go is a system-wide service, so it is an admin operation; the catalog is filtered by your group membership and admin role. The dashboard streams the install log live; Reinstall, Update, and Remove are on the same panel. X2Go pulls the X2Go server packages plus a desktop session stack, so its install takes longer than most apps.
See App Management for the full flow.
Install from the CLI (automation)
The CLI runs the same script. X2Go is system-wide, so no -u is needed:
qb install x2go
qb reinstall x2go
qb update x2go
qb remove x2goFull flag reference: CLI Reference.
Access and authentication
X2Go access details are provided by the QuickBox access output after install. Use those values in the X2Go client to establish a session over SSH.
URL / route
The QuickBox access output for X2Go provides connection details and does not list a web URL. Access is handled through the X2Go client over SSH.
Login / credentials / tokens
Use the X2Go client and connect with the values provided after install:
4747 unless a different port was chosen at installXFCEMATESecurity notes
X2Go connections use your server’s SSH port (4747 unless a different port was chosen at install), as documented by the QuickBox access output. The CLI install output prints the real port for your server.
Open with X2Go from the dashboard
The App Dashboard can hand your X2Go client a ready-made session so you do not have to rebuild the connection by hand. The X2Go row has an Open with X2Go launch button, and because IPTVBoss is a desktop-only app, the IPTVBoss row’s Desktop Access offers the same Open with X2Go option (next to Open in Browser, which launches noVNC when it is installed).
Clicking Open with X2Go does two things: it downloads a small session file named quickbox-username.x2go, and it opens a Connect with X2Go Client dialog with first-time setup for your operating system plus the copyable connection details (Host, SSH port, Login, and the XFCE session type). The X2Go client must already be installed on your own computer; the file carries the connection details, not the client itself, and never your password.
Whether double-clicking the downloaded file opens it depends on your client version:
- X2Go Client version 4.1.2.3 or newer (the current Linux packages on Debian 13 and Ubuntu 24.04) opens
.x2gosession files directly. - The Windows and macOS downloads, and older Linux packages, ship version 4.1.2.2 and need the one-time setup below, or you can enter the connection details from the dialog once.
Once the client has the session, X2Go Client 4.1.2.2 shows the QuickBox session tile for you to click; 4.1.2.3 selects it for you. Then type your password to connect, as the session file never contains it.
Any platform: enter the details once
The connection details in the dialog always work. Open X2Go Client, add a session with the dialog’s Host, SSH port, Login, and the XFCE Session type, and the client remembers it for next time.
Windows
Run this block once in PowerShell (current user, no administrator rights needed). Afterwards, double-clicking a downloaded .x2go file opens the session.
# Optional: if X2Go Client is installed somewhere unusual, put the full path to x2goclient.exe here.
$x2go = ''
if (-not $x2go) {
$found = @()
foreach ($k in 'HKLM:\SOFTWARE\WOW6432Node\x2goclient', 'HKLM:\SOFTWARE\x2goclient') {
$d = (Get-ItemProperty -Path $k -ErrorAction SilentlyContinue).'(default)'
if ($d) { $found += Join-Path $d 'x2goclient.exe' }
}
foreach ($k in 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\x2goclient', 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\x2goclient', 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\x2goclient') {
$u = Get-ItemProperty -Path $k -ErrorAction SilentlyContinue
if ($u.DisplayIcon) { $found += ($u.DisplayIcon -replace '"', '' -replace ',\d+$', '') }
if ($u.InstallLocation) { $found += Join-Path $u.InstallLocation 'x2goclient.exe' }
}
$open = (Get-ItemProperty -Path 'HKCU:\Software\Classes\Applications\x2goclient.exe\shell\open\command' -ErrorAction SilentlyContinue).'(default)'
if ($open -match '^"?([^"]*x2goclient\.exe)') { $found += $Matches[1] }
try {
$shell = New-Object -ComObject WScript.Shell
foreach ($m in "$env:ProgramData\Microsoft\Windows\Start Menu\Programs", "$env:APPDATA\Microsoft\Windows\Start Menu\Programs") {
Get-ChildItem -Path $m -Filter 'X2Go Client.lnk' -Recurse -ErrorAction SilentlyContinue | ForEach-Object { $found += $shell.CreateShortcut($_.FullName).TargetPath }
}
} catch { }
$cmdInfo = Get-Command x2goclient.exe -ErrorAction SilentlyContinue
if ($cmdInfo) { $found += $cmdInfo.Source }
foreach ($drive in [System.IO.DriveInfo]::GetDrives() | Where-Object { $_.DriveType -eq 'Fixed' -and $_.IsReady }) {
foreach ($sub in 'Program Files (x86)\x2goclient', 'Program Files\x2goclient', 'x2goclient') {
$found += Join-Path (Join-Path $drive.RootDirectory.FullName $sub) 'x2goclient.exe'
}
}
$x2go = $found | Where-Object { $_ -and (Test-Path -LiteralPath $_ -PathType Leaf -ErrorAction SilentlyContinue) } | Select-Object -First 1
}
if ($x2go -and (Test-Path -LiteralPath $x2go -PathType Leaf)) {
$cmd = '"' + $x2go + '" "--session-conf=%1"'
foreach ($k in 'HKCU:\Software\Classes\.x2go', 'HKCU:\Software\Classes\QuickBox.X2GoSession\shell\open\command', 'HKCU:\Software\Classes\Applications\x2goclient.exe\shell\open\command') {
if (-not (Test-Path $k)) { New-Item -Path $k -Force | Out-Null }
}
Set-Item -Path 'HKCU:\Software\Classes\.x2go' -Value 'QuickBox.X2GoSession'
Set-Item -Path 'HKCU:\Software\Classes\QuickBox.X2GoSession\shell\open\command' -Value $cmd
Set-Item -Path 'HKCU:\Software\Classes\Applications\x2goclient.exe\shell\open\command' -Value $cmd
Write-Host "Done. .x2go session files now open with $x2go"
} else {
Write-Host 'X2Go Client was not found. Set $x2go on the second line to the full path of x2goclient.exe (for example D:\Program Files\x2goclient\x2goclient.exe) and run this again, or install it from https://wiki.x2go.org/doku.php/download:start'
}The script finds X2Go Client in its usual install locations on any drive. If X2Go Client is installed somewhere unusual, enter its location in the dialog’s X2Go Client location field (for example D:\Program Files\x2goclient\x2goclient.exe). The command updates to match, and the dashboard remembers the location in this browser. If you copied the command from this page instead, put the path on its second line.
A line reading Deprecated option UsePrivilegeSeparation can appear in the console when the session opens. It comes from X2Go Client’s own bundled SSH helper and does not affect the connection.
Linux (X2Go Client older than 4.1.2.3)
If your Linux client is older than version 4.1.2.3, run this block once to associate .x2go files with X2Go Client. The same field fills in the client’s path for a non-standard install.
mkdir -p ~/.local/share/applications ~/.local/share/mime/packages
cat > ~/.local/share/mime/packages/x-x2go.xml <<'XML'
<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"><mime-type type="application/x-x2go"><comment>X2Go session file</comment><glob pattern="*.x2go"/></mime-type></mime-info>
XML
update-mime-database ~/.local/share/mime
printf '[Desktop Entry]\nType=Application\nName=X2Go Client (session file)\nExec=x2goclient --session-conf=%%f\nMimeType=application/x-x2go;\nNoDisplay=true\n' > ~/.local/share/applications/quickbox-x2go.desktop
xdg-mime default quickbox-x2go.desktop application/x-x2gomacOS
Finder cannot hand session files to X2Go Client. Add the session once in the client using the dialog’s Host, SSH port, Login, and the XFCE Session type, or run this Terminal line (replace <username> with your session user).
open -a x2goclient --args "--session-conf=$HOME/Downloads/quickbox-<username>.x2go"The session file uses your dashboard address as the host. If your dashboard sits behind a proxy such as Cloudflare, the file uses the server’s own IP instead so the connection reaches SSH directly. The SSH port written into the file is the same port shown in Access and authentication above.
Configuration and files
QuickBox creates a per-user X2Go directory and SSH subfolder for session data. It also manages repository and service files that are removed during an uninstall.
System-level files and directories created or managed during install/remove include:
-
/etc/apt/sources.list.d/x2go.list -
/usr/share/keyrings/x2go.gpg -
/etc/x2go -
/var/lib/x2go -
/var/spool/x2goprint
Common tasks
Use systemd to control the X2Go server service. Use QuickBox CLI commands for lifecycle operations like update, reinstall, and removal.
Start/stop the service
systemctl start x2goserver
systemctl stop x2goserver
systemctl restart x2goserverUpdate, reinstall, or remove
qb update x2go
qb reinstall x2go
qb remove x2goTypical workflows
- Install X2Go from the CLI or the dashboard Package Management tab.
- Install the X2Go client on your personal computer and connect using the host, username, and SSH port from the access output (
4747unless a different port was chosen at install). - Or use the App Dashboard: click Open with X2Go on the X2Go row to download a ready-made session file and open it with your client.
- Choose
XFCEorMATEas the session type when creating a profile. - Use
systemctlto start or stopx2goserverif needed.
FAQ
These answers summarize the connection details and requirements printed by QuickBox during install. If your environment differs, use the access output as the source of truth.
4747. If a different SSH port was chosen at install, X2Go uses that port instead. The access output printed after install shows the real port for your server.Best practices
Follow the QuickBox workflow and the supported session types for consistent connections. This keeps your client profile aligned with the settings QuickBox expects.
Do
- Use
qb install x2goandqb update x2gofor lifecycle management. - Install the X2Go client on your personal computer before attempting to connect.
- Select
XFCEorMATEwhen configuring the session type.
Don't
- Do not attempt to connect without the X2Go client installed.
- Do not choose a session type other than
XFCEorMATE.
Troubleshooting
Most issues come down to connection details or session selection. Confirm the values from the QuickBox access output before troubleshooting deeper.
Symptom: The client cannot connect to the X2Go server.
Checks: Confirm you are using your server’s SSH port (4747 unless a different port was chosen at install) and the server IP shown in the QuickBox access output.
Symptom: Authentication fails after connecting.
Checks: Ensure the login username matches the QuickBox username shown in the access output after install.
Symptom: The session does not start or shows errors about the desktop environment.
Checks: Choose XFCE or MATE as the session type in the X2Go client.
X2Go and noVNC can run on the same server at the same time. Installing X2Go stands up a per-user D-Bus session; on an older noVNC install that could leave the browser-based noVNC desktop showing a blank grey screen. QuickBox’s current noVNC session startup launches its Xfce desktop on its own isolated D-Bus, so the two coexist cleanly and both render fine.
If your noVNC desktop went blank after installing X2Go, update (or reinstall) noVNC to apply the fix - X2Go itself needs no change:
qb update novnc -u usernameResources
Use these upstream references for client installation and repository details. They match the sources QuickBox uses during install.
Resources
Join the Community
Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.