Sign inSign up

wenleigood/guacd-debian

By wenleigood

•Updated 6 months ago

Image
1

375

wenleigood/guacd-debian repository overview

⁠guacd-debian

Docker Build Docker Pulls

Apache Guacamole⁠ guacd built on Debian (glibc) instead of Alpine (musl libc).

⁠Why?

The official guacamole/guacd image is based on Alpine Linux which uses musl libc. When guacd forks >50 child processes concurrently, musl's dynamic linker (ld-musl-x86_64.so.1) hits a race condition that causes segfaults (see GUACAMOLE-2135⁠). This affects guacd 1.5.5 and 1.6.0.

This image uses Debian Bookworm (glibc) to completely eliminate the issue.

⁠Key differences from the official image
Official (guacamole/guacd)This image (wenleigood/guacd-debian)
Base OSAlpine (musl libc)Debian Bookworm (glibc)
High-concurrency stabilitySegfaults at >50 forksStable (tested with 200+ concurrent connections)
FreeRDPSource-compiledSource-compiled (same approach)
NLA authenticationWorksWorks (writable home dir for cert storage)
⁠Build details
  • 3-stage build: FreeRDP source compile -> guacd source compile (linked to custom FreeRDP) -> minimal runtime image
  • FreeRDP must be source-compiled: System packages (apt install freerdp2-dev) won't generate guacamole channel plugins, causing NLA security negotiation failures
  • Writable home directory: FreeRDP requires a writable home to store certificates; user home is set to /home/guacd with pre-created .config/freerdp/{certs,server} directories

⁠Quick Start

# Latest (1.6.0)
docker run -d --name guacd -p 4822:4822 wenleigood/guacd-debian:latest

# Specific version
docker run -d --name guacd -p 4822:4822 wenleigood/guacd-debian:1.5.5

⁠Tags

TagguacdFreeRDPNotes
latest, 1.6.0, 1.61.6.02.11.5Renderer rewrite (parallel encoding thread pool), Kerberos support
1.5.5, 1.51.5.52.11.5

⁠Supported Protocols

  • RDP (via source-compiled FreeRDP 2.11.5)
  • VNC (via libvncclient)
  • SSH (via libssh2)
  • Telnet (via libtelnet)

⁠Repository Structure

1.5/Dockerfile    # guacd 1.5.5
1.6/Dockerfile    # guacd 1.6.0

Each version has its own Dockerfile. CI builds all versions in parallel via matrix strategy.

⁠Build Locally

# Build 1.6.0
docker build -t guacd-debian:1.6.0 1.6/

# Build 1.5.5
docker build -t guacd-debian:1.5.5 1.5/
⁠Build Arguments
ArgDefaultDescription
DEBIAN_VERSIONbookwormDebian release
GUACD_VERSION1.5.5 / 1.6.0Apache Guacamole server version
FREERDP_VERSION2.11.5FreeRDP version

⁠Health Check

Built-in health check via nc -z localhost 4822 (interval: 10s, timeout: 5s, retries: 3).

⁠License

Apache License 2.0 (same as Apache Guacamole)

Tag summary

Content type

Image

Digest

sha256:e6e3ac51c…

Size

135.6 MB

Last updated

6 months ago

docker pull wenleigood/guacd-debian