Managed Apache Guacamole hosting

Engineering and securityOn-prem or your region

A remote desktop gateway from the Apache Software Foundation: RDP, SSH and VNC sessions in the browser, signed in through your directory, recorded and played back where you keep them. Pilae runs it on your own servers, or in Zurich, Switzerland, and eleven other Pilae Cloud regions.

Talk to us about Apache Guacamole

Licence
Apache-2.0
Runs on
Your own hardware, or any of 10+ Pilae regions — six of them in Switzerland and the EU
Upgrades
Pinned, tested against your configuration, applied in your window
Upstream
guacamole.apache.org

Running Apache Guacamole in production: what it takes

  1. Place guacd beside the machines it reaches

    guacd, the web app and PostgreSQL run from the upstream images, pinned to a release we have run. guacd sits on the private network next to the machines it opens sessions to, and a site of your own can have its own guacd, since each connection can name the guacd it goes through. Port 4822 accepts the web app and nothing else.

  2. Sign-on through Keycloak, permissions by group

    The OpenID Connect extension signs people in through Keycloak, whose client is set up for the implicit flow Guacamole uses. Group names arrive in the groups claim and match Guacamole user groups that hold the connection permissions, so someone removed from a group in the directory loses its connections at their next sign-in. SAML works the same way for an identity provider that only speaks SAML.

  3. Pin host keys and certificates

    Guacamole checks no SSH host identity unless it is given one, so every SSH connection carries its host key, and RDP connections carry the certificate fingerprints of their servers rather than ignoring certificates. TLS ends at a proxy in front of Tomcat, whose RemoteIpValve trusts that proxy alone, so the history and the brute-force ban record the address of each person and not of the proxy.

  4. Record per connection, play back in the browser

    Recordings are written to a directory named after each history entry, where the history recording storage extension finds them, and the connection history shows a View link beside each recorded session. Key events are recorded only where you ask for them, because they capture everything typed. Recordings older than your retention period are deleted on a schedule.

  5. Back up, restore, then upgrade in your window

    The database and the recordings go offsite daily, encrypted, to your chosen country. Once a month we restore both into a scratch environment, open a connection and play a recording from the copy. Restarting the web app or guacd ends every open session, so each upgrade, with the database scripts the release ships, is tested on a copy by the Pilae Agent and applied in your window once you approve.

What Apache Guacamole is, and who runs it

Self-hosted Apache Guacamole for browser access to RDP, SSH and VNC

Apache Guacamole is a remote desktop gateway from the Apache Software Foundation. People open a browser, sign in and pick a connection, and a Windows server, a Linux shell or a desktop appears in the tab, with no client to install. It has two parts. guacd, the proxy daemon, speaks RDP, SSH, VNC, Telnet and Kubernetes to the machines behind it. The Java web application handles sign-in and permissions and draws each session in the browser. Users, connections and history sit in a database through the JDBC authentication extension, here PostgreSQL.

It suits teams that administer servers and desktops across several sites and have to show who opened which session and what happened in it. Guacamole belongs beside the machines it reaches, so that is where we put it: on your own hardware, or in the Pilae Cloud region that holds them, one of 10+, six of them in Switzerland and the EU.

Apache Guacamole in production: sign-on, recordings and guacd

Guacamole answers only on your private network, and the machines behind it accept RDP, SSH and VNC from guacd and nowhere else. guacd authenticates no one, so its port is open to the web application alone. Sign-on goes through Keycloak with OpenID Connect or SAML, and the groups in the token match Guacamole user groups that hold the permissions.

Recording is a setting on each connection: a graphical recording for every protocol, and a typescript of the text for SSH, Telnet and Kubernetes. Graphical recordings play back in the browser from the connection history. Typescripts are kept beside them and replay with scriptreplay. Recordings and the database are backed up daily, encrypted, to an offsite location in your chosen country, and our monitoring probes the web app and guacd every 60 seconds. A restart ends every open session, so the Pilae Agent applies upgrades only in your window, after you approve them.

Apache Guacamole licence and editions

Guacamole is Apache-2.0, and nothing is held back for a paid edition: sign-on, TOTP, connection restrictions and recording playback are extensions published with the release, and the connection import is part of the web application. There is no seat count to track and no licence to hold in your name. We operate the Apache release, on infrastructure you choose, and our operation follows the published plans. Talk to us about the machines you reach through TeamViewer today.

The code in the apache/guacamole-server and apache/guacamole-client repositories is Apache-2.0; the web application bundles a few third-party parts under their own licences, such as the Carlito font under the SIL Open Font License. There is no enterprise edition and no paid build: database authentication, OpenID Connect and SAML sign-on, TOTP, login and connection restrictions, connection import and in-browser recording playback are all in the release we deploy. Keeper Security sells Keeper Connection Manager, a commercial gateway built on Guacamole by its original developers, under a separate contract with Keeper. You do not need it for anything on this page. Apache Guacamole and its logo are trademarks of the Apache Software Foundation, which does not endorse this service.

Apache Guacamole system requirements

Before anything is deployed, this is what has to exist. We size it with you in the first session, and we say so when your own hardware is already enough.

CPU and memory
4 vCPU · 8 GBOur starting point for guacd, the web app and PostgreSQL on one machine. guacd does the work: it holds every RDP, SSH and VNC session open and encodes the screen for the browser, so it grows with the sessions open at once rather than with the number of users.
Database
PostgreSQL · guacamole-auth-jdbcHolds users, groups, connections, permissions and the connection history. Guacamole does not create its own tables: the schema scripts ship with the extension and run once, and the guacadmin account they create, with the password guacadmin, is replaced before anyone else signs in.
Proxy daemon
guacamole/guacd · TCP 4822guacd authenticates no one, and upstream warns that an exposed guacd is a jumping point to other systems. Ours accepts connections from the web app alone, over the private network.
Recordings
Shared volume · mode 2750guacd writes the recordings and the web app reads them for playback, so both mount the same directory, owned by the guacd user and readable by the group the web app runs as, with the setgid bit so new recordings keep that group. It is sized for the retention period you set.
Target machines
RDP 3389 · SSH 22 · VNC 5900Open to the guacd address only. Windows needs Remote Desktop turned on, which Home editions cannot accept. Nothing from Guacamole is installed on any of them.
DNS and TLS
1 private hostnameFor example remote.acme.internal, resolved on the private network only. The OpenID Connect redirect URI is the address people type, so it is chosen once.

Migrating from TeamViewer to Apache Guacamole

TeamViewer puts an agent on every machine and brokers each session through its own servers. Guacamole installs nothing on the machines it reaches: guacd opens RDP, SSH or VNC to them over your private network, and the browser draws the session. So what moves is a list of machines, the protocol each one speaks and the groups allowed to open it, written as one import file. What does not come across is attended support for a laptop outside your network. Guacamole reaches only what guacd can route to, so helping someone on their home connection stays a job for a support tool. Unattended access to servers and office desktops is the part that moves.

  1. List the machines still in use

    With the owners, we go through the TeamViewer device list and keep the machines people still open, with the directory groups who use each one. The rest are retired with the subscription instead of being carried across.

  2. Switch on the native protocol

    Windows servers and Pro or Enterprise desktops get Remote Desktop with Network Level Authentication, Linux servers already run SSH, and desktops whose screen someone must see get a VNC server. Each accepts those ports from guacd alone. Windows Home machines cannot accept Remote Desktop and are listed first.

  3. Import connections and permissions

    Connection groups are created first, because the import places connections in groups that already exist. The connections, with the directory groups allowed to use each one, then go into one CSV, JSON or YAML file, loaded through the Import button in the web app. User groups named in the file that do not exist yet are created. Each owner opens their connections once before anyone else moves.

  4. Uninstall TeamViewer machine by machine

    Once a machine has been reached through Guacamole by its usual people for a full working week, the TeamViewer client comes off it and the device leaves the account. The subscription ends with the last machine.

Who reaches what through Guacamole

Windows serversRDP, NLAdc1, dc2 and files1.acme.internalops-windowsScreenSecurity key, in Keycloak
Linux serversSSH, host key pinneddb1, db2 and git1.acme.internalops-linuxScreen and typescriptSecurity key, in Keycloak
Plant HMIsVNChmi-line1 and hmi-line2.acme.internalplant-engineeringScreen and keysAuthenticator app, in Keycloak
ERP vendorRDP, NLAerp-app1.acme.internalvendor-erp, weekdays 08:00–18:00Screen and keysAuthenticator app, in Keycloak
Finance desktopsRDP, NLAfin-desk1 to fin-desk8.acme.internalfinanceOffAuthenticator app, in Keycloak
An example for acme: the connection groups are created first, and the connections in them are imported from one YAML file. Each directory group comes from Keycloak and matches a Guacamole user group of the same name, which holds the permission, and the second factor is the one Keycloak asks of that group. Recording is set per connection, so the finance desktops people work on are not recorded, and the vendor connection opens only in the hours set with the restrictions extension.

What Pilae is responsible for

A pinned version

A version we have run, not whatever latest resolves to that day.

A runbook

What it depends on, how it fails, what to do about it. In your repository.

A restore drill

Backups restored on a schedule. A backup nobody has restored is a file.

A patch window

Security updates in a window you agreed, with a rollback ready.

Someone watching

Every endpoint probed on the minute. An alert reaches a person, not a dashboard nobody opens.

Where it runs
zur1, fra1, fal1, gra1, ams1, hel1, lon1, ash1, hil1, sin1, tok1, syd1, on-premZurich, Frankfurt, Falkenstein, Gravelines, Amsterdam, Helsinki, London, Ashburn, Hillsboro, Singapore, Tokyo, Sydney, Your own hardware
Who holds the credentials
You do. Ours are separate, named, logged and revocable with one command. We ask before anything changes outside an agreed window.
If you leave
The machine, the data, the compose files and the runbook are already yours. Nothing stops when our access does.

What running Apache Guacamole costs

On Starter, Apache Guacamole runs in Pilae Cloud for CHF 449EUR 479USD 559 a month, hosting and onboarding included. On Business, it is one of up to three apps for CHF 1,590EUR 1,690USD 1,990 a month, on your own servers or in Pilae Cloud. Enterprise is quoted. The plans set what each includes; these are the inputs that move the price around them.

Instance size
The CPU, memory and, where a model runs, the GPUs the app needs for your users and your data.
High availability
One machine with tested restores, or a replicated setup that keeps serving when a node fails.
Storage and backups
How much data it holds, how long backups are kept, and point-in-time recovery for its database.
Plan and support
Starter, Business or Enterprise: support hours, response times in the contract and how often we review the service with you.
Region
Your own hardware, where the infrastructure is already yours, or a Pilae Cloud region, where machines are priced per month. On Starter, Pilae chooses the site.
Sign-on and integrations
Single sign-on, directory sync, mail relays and the other systems the app has to reach.

Apache Guacamole: common questions

Is Apache Guacamole open source?

Yes. It is Apache-2.0 and a top-level project of the Apache Software Foundation. Session recording is built into guacd, and database authentication, OpenID Connect and SAML sign-on, TOTP and in-browser playback are extensions published with each release, and there is no paid edition of the software itself. Keeper Security sells Keeper Connection Manager, a commercial product built on Guacamole, which you do not need.

Does anything have to be installed on the machines we connect to?

Nothing from Guacamole. Windows needs Remote Desktop turned on, Linux servers need SSH, and a desktop whose screen you want to see needs a VNC server. Each accepts those ports from guacd alone, so RDP and SSH are never open to the internet. On the side of the people connecting, a browser is enough once the Pilae network client has put them on your private network.

Can we keep Duo, or the second factor we already use?

With sign-on through Keycloak, the second factor is the one Keycloak already asks for, an authenticator app or a security key. Guacamole can add its own TOTP code at sign-in, with each key kept in its PostgreSQL database. Its Duo extension cannot currently be used alongside single sign-on, upstream says, and the advice is to use Duo through the identity provider or TOTP instead. Duo still works for Guacamole accounts that sign in with a password.

Who can watch a session recording, and how long is it kept?

Anyone who can see that session in the connection history: administrators, and people given the audit permission, which covers login records and connection history and nothing else. Recordings stay on a volume beside guacd, in the country you chose, go offsite with the backups, and are deleted after the retention period you set.

Where are the passwords for the target machines kept?

Preferably nowhere. People sign in to Keycloak, not to Guacamole, so Guacamole never receives their password and cannot pass it on. RDP and VNC ask for credentials when the session opens, and SSH asks in the terminal. A password saved on a connection is stored in the PostgreSQL database with its other parameters, so we save one only for an account you name, and the database backups are encrypted.

Also in engineering and security

Back to apps

Bring us your Apache Guacamole. We will tell you what it takes.

Thirty minutes on the deployment you already have, or the one you are about to start.