unsubbed.co

Guacamole

Self-hosted remote access & desktop tool that provides clientless remote desktop gateway supporting standard protocols like VNC and RDP.

A browser-based remote desktop proxy, honestly reviewed. No client software required, no per-seat SaaS bills.

TL;DR

  • What it is: Apache Guacamole is a clientless remote desktop gateway — it lets you access VNC, RDP, and SSH sessions through a plain web browser, with no plugins or installed software on the client side [website].
  • Who it’s for: IT administrators, DevOps teams, and self-hosters who want centralized, browser-accessible remote access to servers and desktops without paying TeamViewer or AnyDesk per-seat fees.
  • Cost savings: TeamViewer Business and AnyDesk Business both run $20–50+/month per license. Guacamole is Apache-licensed, free to self-host, and supports unlimited concurrent users depending only on your server capacity [website].
  • Key strength: Genuinely clientless — if the target machine has a VNC, RDP, or SSH server, and the user has a web browser, access works. No agent installation on client devices, no VPN required if you expose the Guacamole gateway.
  • Key weakness: The setup is not beginner-friendly. You’re managing three separate components (guacd, the web application, and a database), the default Docker experience requires either a purpose-built community image or manual orchestration, and the UI hasn’t been visually modernized in years. The project moves at a measured pace — the gap between 1.5.5 (April 2024) and 1.6.0 (June 2025) was over a year [1].

What is Guacamole

Apache Guacamole is a remote desktop proxy that translates binary remote desktop protocols (RDP, VNC, SSH, Telnet) into a text-based protocol called the Guacamole protocol, which is then rendered in a browser via an HTML5 canvas. The architecture has three layers: guacd (the C proxy daemon that speaks the native protocols), libguac (the core library), and the web application (Java servlet) that serves the browser UI and talks to guacd over a socket [README].

The reason this architecture matters is that the browser never speaks RDP or VNC directly — it only speaks to the Java web app over WebSockets. This means you can put Guacamole in a DMZ, expose only HTTPS port 443 to the internet, and route all internal protocol traffic through guacd on your LAN. No VPN required. No agent installation on any machine you want to reach. If a machine runs an RDP or SSH server, Guacamole can proxy it [website].

The project is part of the Apache Software Foundation — not a startup, not a VC-backed vendor. It was accepted into the ASF incubator and graduated as a top-level project in November 2017. There are currently 16 committers and 10 PMC members. New contributors have been added recently, including Corentin Soriano in January 2025 [1]. The project is genuinely community-driven, with no commercial vendor controlling the roadmap.


Why people choose it

Guacamole fills a specific niche that most commercial remote access tools don’t touch cleanly: zero-client enterprise-style access at self-hosted infrastructure prices.

The clientless angle is real. Unlike TeamViewer or AnyDesk, which require the installation of a client on every accessing device, Guacamole needs nothing on the client side beyond a modern browser. This matters in environments with locked-down endpoints (hospital kiosks, school labs, shared workstations) where you can’t install software but can hit a URL [website].

Protocol breadth. RDP gets you into Windows servers and desktops. VNC gets you into Linux desktops, macOS machines, and anything else running a VNC server. SSH gives you terminal access with clipboard support and, optionally, SFTP file transfers. Telnet support exists for legacy equipment. One gateway, multiple protocol backends [README].

The SaaS cost argument. A typical 10-seat TeamViewer Business subscription can run $600–800/year or more. AnyDesk is cheaper but still per-seat. Guacamole on a $6/month VPS handles as many concurrent sessions as the server can carry. For an MSP managing 50 client machines or an IT team with 30 servers to access, the math is straightforward [website].

Apache branding = longevity. The ASF has a track record of maintaining projects for decades. Guacamole isn’t going to get acqui-hired, pivoted, or paywalled. Board minutes from April 2026 show the project is still actively maintained with a 1.6.1 bugfix release in preparation [1].


Features

Based on the official website, README, and project documentation:

Core protocol support:

  • RDP via FreeRDP — Windows Remote Desktop, including NLA authentication and RemoteApp [README]
  • VNC via libVNCserver — including audio pass-through via PulseAudio integration [README]
  • SSH — full terminal, clipboard integration, SFTP file transfer via libssh2 [README]
  • Telnet via libtelnet — for legacy infrastructure [README]

Browser-side capabilities:

  • Copy-paste between local clipboard and remote session (protocol-dependent)
  • File transfer via RDP virtual channels or SFTP over SSH [README]
  • Session recording to video files via the guacenc utility (requires FFmpeg) [README]
  • WebP image compression for lower bandwidth use [README]
  • Multi-monitor support via RDP

Authentication and access control:

  • Built-in user/password database with MySQL/PostgreSQL/MariaDB backend
  • LDAP/AD authentication extension
  • TOTP (time-based OTP) two-factor authentication extension
  • SAML 2.0 integration extension
  • Duo Security integration extension
  • Connection groups for organizing servers
  • Per-user, per-group connection permissions

Self-hosted operational features:

  • Connection history and session audit logs
  • Wake-on-LAN support
  • Load balancing across multiple guacd instances
  • REST API for administrative automation
  • Multi-language web UI

The authentication extensions are a notable strength — LDAP and TOTP are included in the open-source build, not gated behind a paid tier. This is a direct contrast to tools like Activepieces, where SSO is a commercial-only feature [website].


Pricing: SaaS vs self-hosted math

Guacamole itself has no licensing cost — Apache 2.0 is about as permissive as licenses get.

Self-hosted cost:

  • Software: $0
  • A VPS to run it: $5–15/month depending on user count and session load
  • Your time to deploy and maintain it

Commercial remote desktop alternatives for comparison:

TeamViewer Business starts around $50/month per licensed user (billed annually). A 5-seat team pays ~$3,000/year. AnyDesk Business is roughly $20–30/month per user depending on tier. Both charge per concurrent session seat. Both require client installation on accessing devices.

Concrete math for a 10-person team with 20 servers to manage:

On TeamViewer, 10 Business seats ≈ $6,000/year. On AnyDesk, roughly $2,400–3,600/year. On Guacamole, a Hetzner CX22 (2 vCPU, 4GB RAM) at €4.35/month handles ~15–20 concurrent light sessions. Annual cost: ~$60. That’s roughly $2,300–5,900/year saved, and the savings compound as your team and machine count grow.

Note: TeamViewer and AnyDesk pricing can vary by region, plan configuration, and negotiated contracts. These are reference ranges based on public pricing at time of writing, not guarantees.


Deployment reality check

This is where Guacamole’s honest review diverges from the marketing homepage. The deployment experience is not smooth for non-technical users.

The official installation involves compiling guacd from source (C code, Automake build system) or using packages, deploying the Java servlet to a Tomcat container, and setting up a MySQL/PostgreSQL database for user/connection storage. The README is explicitly targeted at “technical users intending to compile parts of Apache Guacamole themselves” [README].

What most people actually do: Use the unofficial oznu/guacamole Docker image or the lscr.io/linuxserver/guacamole image (LinuxServer.io). These bundle guacd, the web app, and a database into a single container stack with docker-compose. The official project doesn’t maintain an official all-in-one Docker image — community images fill that gap. This is a real support gap: when something breaks, you’re debugging a community-maintained image, not an officially supported deployment path.

What you need:

  • A Linux server with at least 1GB RAM for light use (2GB+ for concurrent sessions)
  • Docker and docker-compose, or a Tomcat/Java setup if going manual
  • A reverse proxy (Nginx, Caddy) for HTTPS
  • MySQL/PostgreSQL/MariaDB for the authentication database
  • The machines you want to access must already have RDP, VNC, or SSH enabled and accessible from the Guacamole server

What can go wrong:

  • guacd and the web application communicate over a socket — misconfigured networking between containers is a common first-run failure mode
  • The FreeRDP version bundled in your distro’s packages may be older than what guacd expects, causing RDP connection failures
  • Session recording requires guacd to write to a local filesystem path accessible to both guacd and the web app — a permissions issue waiting to happen in containerized deployments
  • Velocity has slowed: 1.5.5 to 1.6.0 took 14 months. The board notes that 1.6.1 is “near an RC” as of December 2025 but flagged that “velocity has slowed somewhat” [1]. If you hit a bug in 1.6.0, you may wait a while for a fix

Realistic time estimate: A technical user who has run docker-compose stacks before: 1–2 hours for a working instance. A non-technical user following a step-by-step guide: half a day to a full day including HTTPS setup. If you’ve never configured a reverse proxy, budget more.


Pros and Cons

Pros

  • Genuinely clientless. The browser is the only client. No agent installs, no VPN client requirements, no software distribution problem [website].
  • Apache-2.0 license. Freely embeddable, redistributable, white-labelable. No usage restrictions, no commercial license call required [website].
  • Protocol breadth. RDP + VNC + SSH + Telnet in one gateway. Most commercial tools focus on one or two [README].
  • Authentication extensions included free. LDAP, TOTP, SAML, Duo — all part of the open-source build. No paid tier for SSO [website].
  • ASF backing = longevity. Apache projects don’t get acquired or pivoted. The governance model protects against vendor lock-in by design [1].
  • Session recording built-in. Compliance-useful audit trail at no additional cost [README].
  • Active community. Board reports show engaged mailing lists and responsive committers [1].

Cons

  • No official all-in-one Docker image. You rely on community images for a sane deployment, which means you’re not on the official support path [README].
  • Slow release cadence. One major release per year is the recent pace. 1.6.1 bugfix release has been “near an RC” for multiple board reporting cycles [1].
  • Small core team. 16 committers, no new ones since January 2025, no new PMC members since February 2023 [1]. The project is stable but not growing fast.
  • Dated UI. The web interface works but looks like a Java web application from 2015. It’s functional, not delightful.
  • Complex multi-component deployment. Three components (guacd, web app, database) that must be correctly wired — more moving parts than tools like Teleport or Boundary.
  • No built-in monitoring/alerting. You don’t get dashboards or session-limit alerting out of the box. Operational visibility requires external tooling.
  • Limited mobile experience. The HTML5 canvas works on tablets with mixed results; sustained mobile use is frustrating.

Who should use this / who shouldn’t

Use Guacamole if:

  • You’re an IT admin or DevOps engineer who wants centralized browser-based access to a fleet of Linux/Windows servers without installing VPN clients on every endpoint.
  • You’re an MSP tired of per-seat TeamViewer bills across client infrastructure.
  • You have locked-down endpoint devices (kiosks, BYOD policies) where you can’t install client software.
  • You need LDAP/SAML authentication and session recording without paying enterprise licensing.
  • You’re comfortable with a multi-component Docker deployment or have someone technical to set it up.

Skip it (stay on TeamViewer/AnyDesk) if:

  • You’re a non-technical founder who needs remote access to 2–3 machines and has no patience for self-hosted infrastructure.
  • You need reliable mobile tablet support.
  • Your compliance team requires a SOC 2 certified vendor-managed solution.
  • You need consumer-grade “click a link, share your screen” simplicity.

Skip it (consider Teleport or Boundary) if:

  • You’re a security-focused engineering team that needs certificate-based authentication, session replay with full audit trail, and a modern zero-trust access model.
  • You need programmatic access control via infrastructure-as-code.

Skip it (consider RustDesk) if:

  • You primarily need peer-to-peer remote assistance (support technician to end user), not centralized gateway access to servers.

Alternatives worth considering

  • Teleport — the modern replacement in the zero-trust category. Handles SSH, RDP, Kubernetes, databases. More complex to deploy, much richer security model. Open-source Community Edition is solid; enterprise features require a paid license.
  • Apache Guacamole + Authelia — many self-hosters combine Guacamole with an authentication proxy for richer SSO. More moving parts, but unlocks identity provider integrations that Guacamole’s own extensions don’t cover.
  • MeshCentral — another Apache-licensed remote access tool with a more modern UI. Includes agent-based access (unlike Guacamole’s clientless model) but is more actively developed and has a built-in Docker image.
  • RustDesk — Rust-based, newer, faster development velocity, better mobile support. Self-hostable relay server. Closer to TeamViewer’s use case than Guacamole’s server-fleet-management use case.
  • Cloudflare Tunnel + native RDP/SSH — for teams already using Cloudflare, tunneling RDP and SSH through Cloudflare Access with browser rendering is a reasonable alternative that offloads the gateway to Cloudflare’s infrastructure.
  • TeamViewer / AnyDesk — the incumbents. Easier to set up, per-seat pricing, fully managed. The cost argument against them is the main reason people reach for Guacamole.

Bottom line

Apache Guacamole is a mature, battle-tested remote desktop gateway that solves a real problem: centralized browser-based access to heterogeneous server infrastructure without client installation, without VPN, and without per-seat SaaS billing. The Apache 2.0 license, built-in LDAP/TOTP/SAML authentication, and session recording make it genuinely competitive with commercial alternatives that charge thousands per year for similar features. The trade-off is a multi-component deployment that’s not beginner-friendly, a release cadence that has slowed, and a small maintainer team that means you’re partly betting on community momentum.

For an IT team managing a fleet of servers, or an MSP calculating what per-seat TeamViewer costs across 20 clients, the math is decisive. For a non-technical founder who wants to occasionally access one machine from the road, Guacamole is more complexity than the problem warrants.

If the deployment is the blocker, that’s exactly the kind of infrastructure setup that upready.dev handles for clients — one-time deployment, documented, yours to own.


Sources

  1. Apache Whimsy — Board Meeting Minutes: Guacamole (project health reports, committer data, release history). https://whimsy.apache.org/board/minutes/Guacamole.html

Primary sources: