{"id":1612,"date":"2026-09-14T10:03:45","date_gmt":"2026-09-14T13:03:45","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/?p=1612"},"modified":"2026-10-07T08:13:47","modified_gmt":"2026-10-07T11:13:47","slug":"apache-guacamole-acesso-remoto-com-docker-ldap-e-sso","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/apache-guacamole-acesso-remoto-com-docker-ldap-e-sso\/","title":{"rendered":"Apache Guacamole: acceso remoto con Docker, LDAP y SSO"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/apache-guacamole-acesso-remoto-v1.webp\" alt=\"Mascote LinuxPro acessando sess\u00f5es remotas em um painel, com cachorro caramelo cyborg sentado e logo Apache Guacamole na sala de opera\u00e7\u00f5es.\" width=\"1486\" height=\"856\" \/><\/p>\n<p>Abrir um desktop Windows, acessar um Linux por SSH e trabalhar em uma sess\u00e3o VNC usando apenas o navegador: essa \u00e9 a proposta do <strong>Apache Guacamole<\/strong>. Ele centraliza o acesso remoto em um portal web, sem exigir um cliente espec\u00edfico no computador de quem acessa.<\/p>\n<p>Neste guia, vamos entender a arquitetura, montar um laborat\u00f3rio com Docker Compose e PostgreSQL e discutir autentica\u00e7\u00e3o local, LDAP\/Active Directory, SSO, MFA, seguran\u00e7a e opera\u00e7\u00e3o. O foco \u00e9 construir uma base compreens\u00edvel antes de colocar um gateway administrativo na rede.<\/p>\n<h2>O que \u00e9 o Apache Guacamole \u2014 e o que ele n\u00e3o \u00e9<\/h2>\n<p>O <a href=\"https:\/\/guacamole.apache.org\/\">Apache Guacamole<\/a> \u00e9 um gateway de acesso remoto <em>clientless<\/em>, com suporte a protocolos como RDP, VNC e SSH. \u201cSem cliente\u201d significa que o usu\u00e1rio utiliza um navegador moderno: no servidor, continuam existindo componentes, configura\u00e7\u00e3o e depend\u00eancias. O projeto \u00e9 open source sob Apache License 2.0.<\/p>\n<p>Ele n\u00e3o cria m\u00e1quinas virtuais, n\u00e3o instala um desktop no servidor e n\u00e3o transforma qualquer m\u00e1quina em um destino acess\u00edvel. O servi\u00e7o remoto precisa existir, estar configurado e ser alcan\u00e7\u00e1vel pelo gateway. Em um Linux sem ambiente gr\u00e1fico, SSH continua sendo terminal, n\u00e3o um desktop m\u00e1gico dentro da p\u00e1gina.<\/p>\n<p>Isso o diferencia do <a href=\"\/2026\/09\/phpvirtualbox-gerencie-o-virtualbox-pelo-navegador\/\">phpVirtualBox<\/a>: aquele painel administra VMs do VirtualBox; o Guacamole fornece acesso a sess\u00f5es remotas. S\u00e3o ferramentas que podem atender a necessidades complementares.<\/p>\n<h2>Qual vers\u00e3o usar como refer\u00eancia<\/h2>\n<p>Na revis\u00e3o documental realizada em 7 de outubro de 2026, o site e o <a href=\"https:\/\/guacamole.apache.org\/releases\/\">arquivo oficial de releases<\/a> indicavam <strong>Guacamole 1.6.0, lan\u00e7ado em 22 de junho de 2025<\/strong>, como vers\u00e3o atual. O tutorial fixa essa vers\u00e3o nas duas imagens do projeto; n\u00e3o utiliza <code>latest<\/code>.<\/p>\n<p>As <a href=\"https:\/\/guacamole.apache.org\/releases\/1.6.0\/\">notas da vers\u00e3o 1.6.0<\/a> destacam melhorias de renderiza\u00e7\u00e3o, suporte Docker e importa\u00e7\u00e3o de conex\u00f5es em lote, entre outras mudan\u00e7as. Antes de repetir o procedimento no futuro, consulte tamb\u00e9m os <a href=\"https:\/\/guacamole.apache.org\/security\/\">avisos de seguran\u00e7a<\/a> e a documenta\u00e7\u00e3o correspondente \u00e0 vers\u00e3o escolhida.<\/p>\n<h2>Arquitetura: o papel do navegador, da aplica\u00e7\u00e3o e do guacd<\/h2>\n<p>A aplica\u00e7\u00e3o web tem backend em Java e entrega o cliente JavaScript ao navegador. O tr\u00e1fego da sess\u00e3o utiliza o protocolo Guacamole; o <code>guacd<\/code> e seus componentes de protocolo fazem a ponte com os destinos remotos. N\u00e3o \u00e9 o navegador falando RDP diretamente com o Windows. <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/guacamole-architecture.html\">Refer\u00eancia: arquitetura oficial<\/a>.<\/p>\n<figure><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/10\/guacamole-architecture.webp\" alt=\"Arquitetura do Guacamole: navegador, proxy HTTPS, aplica\u00e7\u00e3o, guacd e destinos remotos, com PostgreSQL e identidade externa separados.\" width=\"1200\" height=\"684\" loading=\"lazy\" \/><figcaption>Fluxo l\u00f3gico de acesso. LDAP e IdP s\u00e3o alternativas de identidade; no SSO, o navegador tamb\u00e9m participa do redirecionamento ao provedor.<\/figcaption><\/figure>\n<p>Minha recomenda\u00e7\u00e3o de desenho \u00e9 separar duas perguntas: quem pode entrar no portal e quais destinos o gateway pode alcan\u00e7ar. O firewall deve limitar a segunda independentemente da primeira. Um portal autenticado n\u00e3o justifica liberar toda a rede interna para o processo de conex\u00e3o.<\/p>\n<p><strong>O guacd n\u00e3o autentica os usu\u00e1rios do portal.<\/strong> Quem alcan\u00e7a sua porta pode tentar utiliz\u00e1-lo como ponte para outros sistemas. N\u00e3o publique <code>4822<\/code> na Internet nem a entregue a redes de usu\u00e1rios. A autentica\u00e7\u00e3o da aplica\u00e7\u00e3o n\u00e3o protege um caminho que a contorne.<\/p>\n<p>O banco n\u00e3o transporta a imagem do desktop: ele armazena dados administrativos conforme a extens\u00e3o utilizada. A documenta\u00e7\u00e3o de <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/introduction.html\">introdu\u00e7\u00e3o<\/a> tamb\u00e9m ajuda a distinguir a aplica\u00e7\u00e3o pronta das APIs dispon\u00edveis para integra\u00e7\u00f5es pr\u00f3prias.<\/p>\n<h2>Quando faz sentido usar<\/h2>\n<ul>\n<li>Laborat\u00f3rios de Linux e Windows acessados de computadores diferentes.<\/li>\n<li>Equipes que precisam de um ponto central para conex\u00f5es administrativas.<\/li>\n<li>Ambientes de treinamento com destinos e permiss\u00f5es definidos por usu\u00e1rio.<\/li>\n<li>Suporte remoto a sistemas j\u00e1 alcan\u00e7\u00e1veis pela infraestrutura do gateway.<\/li>\n<\/ul>\n<p>O ganho esperado \u00e9 reduzir a variedade de clientes no endpoint e organizar o acesso. Isso n\u00e3o elimina a necessidade de pol\u00edtica de credenciais, monitoramento e segmenta\u00e7\u00e3o. Tamb\u00e9m n\u00e3o h\u00e1 uma quantidade universal de sess\u00f5es por servidor: resolu\u00e7\u00e3o, protocolo, atividade gr\u00e1fica e lat\u00eancia mudam o consumo. Me\u00e7a o seu cen\u00e1rio antes de dimensionar produ\u00e7\u00e3o.<\/p>\n<h2>Laborat\u00f3rio Docker: escopo e pr\u00e9-requisitos<\/h2>\n<p>Voc\u00ea precisa de Docker Engine, Docker Compose, OpenSSL e acesso ao registro de imagens. O exemplo usa tr\u00eas servi\u00e7os: PostgreSQL, <code>guacd<\/code> e aplica\u00e7\u00e3o Guacamole. Somente o portal \u00e9 publicado, e apenas no loopback do host. Banco e porta 4822 n\u00e3o recebem publica\u00e7\u00e3o externa. Consulte a <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/guacamole-docker.html\">instala\u00e7\u00e3o oficial com Docker<\/a>.<\/p>\n<p><strong>Valida\u00e7\u00e3o do laborat\u00f3rio repetida em 7 de outubro de 2026:<\/strong> o Compose abaixo foi iniciado localmente; o banco inicializou, o portal respondeu HTTP 200 e o login local com o backend PostgreSQL funcionou. O usu\u00e1rio SQL da aplica\u00e7\u00e3o foi conferido sem privil\u00e9gios de superusu\u00e1rio, cria\u00e7\u00e3o de bancos ou cria\u00e7\u00e3o de pap\u00e9is. Um dump foi restaurado em outro banco no mesmo PostgreSQL de laborat\u00f3rio, com o papel SQL j\u00e1 existente; isso n\u00e3o equivale a um ensaio de recupera\u00e7\u00e3o em outro servidor. RDP, VNC, LDAP\/AD, SSO, MFA e TLS de produ\u00e7\u00e3o n\u00e3o foram validados contra servi\u00e7os reais neste laborat\u00f3rio; essas se\u00e7\u00f5es s\u00e3o orienta\u00e7\u00e3o de configura\u00e7\u00e3o baseada no manual. A revis\u00e3o de outubro aprofunda identidade, autoriza\u00e7\u00e3o e recupera\u00e7\u00e3o, mas n\u00e3o representa homologa\u00e7\u00e3o dessas integra\u00e7\u00f5es em produ\u00e7\u00e3o.<\/p>\n<p>Crie uma pasta nova. Os scripts de inicializa\u00e7\u00e3o descritos aqui s\u00e3o para um banco vazio, n\u00e3o para migrar uma instala\u00e7\u00e3o existente:<\/p>\n<pre><code class=\"language-bash\">mkdir -p guacamole-lab\/init\ncd guacamole-lab\numask 077\nprintf &#x27;DB_ADMIN_PASSWORD=%s\\nGUAC_DB_PASSWORD=%s\\n&#x27; \\\n  &quot;$(openssl rand -hex 32)&quot; &quot;$(openssl rand -hex 32)&quot; &gt; .env\nprintf &#x27;.env\\n&#x27; &gt; .gitignore\nchmod 600 .env<\/code><\/pre>\n<p>As senhas s\u00e3o geradas localmente. N\u00e3o publique o <code>.env<\/code>. Usu\u00e1rios com acesso administrativo ao Docker podem inspecionar vari\u00e1veis dos cont\u00eaineres; permiss\u00f5es de arquivo n\u00e3o transformam vari\u00e1veis de ambiente em um cofre de segredos.<\/p>\n<h2>O que muda do laborat\u00f3rio para produ\u00e7\u00e3o<\/h2>\n<table>\n<thead>\n<tr>\n<th>Camada<\/th>\n<th>Laborat\u00f3rio deste artigo<\/th>\n<th>Crit\u00e9rio para produ\u00e7\u00e3o<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Entrada<\/td>\n<td>HTTP em 127.0.0.1:18080, com t\u00fanel SSH opcional.<\/td>\n<td>HTTPS, nome DNS est\u00e1vel e pol\u00edtica de acesso definida.<\/td>\n<\/tr>\n<tr>\n<td>Identidade<\/td>\n<td>Conta local do banco.<\/td>\n<td>Identidades individuais, MFA e recupera\u00e7\u00e3o administrativa testada.<\/td>\n<\/tr>\n<tr>\n<td>Rede<\/td>\n<td>Uma rede Docker compartilhada pelos tr\u00eas servi\u00e7os.<\/td>\n<td>Segmenta\u00e7\u00e3o, sa\u00edda limitada a destinos aprovados e nenhuma publica\u00e7\u00e3o de banco\/guacd.<\/td>\n<\/tr>\n<tr>\n<td>Continuidade<\/td>\n<td>Volume local do PostgreSQL.<\/td>\n<td>Backup externo protegido, restaura\u00e7\u00e3o ensaiada e janela de manuten\u00e7\u00e3o.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Este Compose n\u00e3o implementa alta disponibilidade, TLS entre os servi\u00e7os nem gest\u00e3o centralizada de segredos. Se separar componentes entre hosts, proteja tamb\u00e9m esses enlaces. N\u00e3o chame uma rede de \u201csegura\u201d apenas porque ela \u00e9 privada.<\/p>\n<h2>1. Criar o Compose<\/h2>\n<p>Salve como <code>compose.yaml<\/code>:<\/p>\n<pre><code class=\"language-yaml\">name: lp-guacamole-lab\nservices:\n  db:\n    image: postgres:17\n    restart: unless-stopped\n    environment:\n      POSTGRES_DB: guacamole_db\n      POSTGRES_USER: postgres\n      POSTGRES_PASSWORD: ${DB_ADMIN_PASSWORD:?defina DB_ADMIN_PASSWORD}\n      GUAC_DB_PASSWORD: ${GUAC_DB_PASSWORD:?defina GUAC_DB_PASSWORD}\n    volumes:\n      - pgdata:\/var\/lib\/postgresql\/data\n      - .\/init:\/docker-entrypoint-initdb.d:ro\n    healthcheck:\n      test: [CMD-SHELL, &#x27;pg_isready -h 127.0.0.1 -U postgres -d guacamole_db&#x27;]\n      interval: 5s\n      timeout: 3s\n      retries: 20\n    networks: [backend]\n  guacd:\n    image: guacamole\/guacd:1.6.0\n    restart: unless-stopped\n    networks: [backend]\n  guacamole:\n    image: guacamole\/guacamole:1.6.0\n    restart: unless-stopped\n    depends_on:\n      db:\n        condition: service_healthy\n      guacd:\n        condition: service_started\n    environment:\n      GUACD_HOSTNAME: guacd\n      POSTGRESQL_ENABLED: &#x27;true&#x27;\n      POSTGRESQL_HOSTNAME: db\n      POSTGRESQL_DATABASE: guacamole_db\n      POSTGRESQL_USERNAME: guacamole_app\n      POSTGRESQL_PASSWORD: ${GUAC_DB_PASSWORD:?defina GUAC_DB_PASSWORD}\n    ports:\n      - &#x27;127.0.0.1:18080:8080&#x27;\n    networks: [backend]\nvolumes:\n  pgdata:\nnetworks:\n  backend:<\/code><\/pre>\n<p>A aplica\u00e7\u00e3o usa <code>guacamole_app<\/code>, n\u00e3o a conta administrativa do PostgreSQL. O volume <code>pgdata<\/code> preserva o banco quando cont\u00eaineres s\u00e3o recriados. A rede Docker n\u00e3o publica os servi\u00e7os internos, mas ainda permite conectividade de sa\u00edda; a restri\u00e7\u00e3o aos destinos autorizados deve ser planejada no firewall.<\/p>\n<p>A imagem <code>postgres:17<\/code> fixa a linha principal, n\u00e3o um digest imut\u00e1vel. Para uma implanta\u00e7\u00e3o reproduz\u00edvel, registre os digests testados e planeje atualiza\u00e7\u00f5es. N\u00e3o troque a vers\u00e3o principal do PostgreSQL apenas alterando a tag sobre o mesmo volume.<\/p>\n<h2>2. Inicializar o esquema e o usu\u00e1rio SQL<\/h2>\n<p>O Guacamole fornece o SQL de inicializa\u00e7\u00e3o em sua imagem. Gere o arquivo antes de iniciar o banco:<\/p>\n<pre><code class=\"language-bash\">docker pull guacamole\/guacamole:1.6.0\ndocker run --rm guacamole\/guacamole:1.6.0 \\\n  \/opt\/guacamole\/bin\/initdb.sh --postgresql &gt; init\/001-schema.sql\ntest -s init\/001-schema.sql<\/code><\/pre>\n<p>Salve o conte\u00fado abaixo como <code>init\/002-app-user.sh<\/code>. Ele cria a conta SQL da aplica\u00e7\u00e3o e concede acesso aos dados necess\u00e1rios, sem conceder administra\u00e7\u00e3o do servidor:<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/sh\nset -eu\npsql -v ON_ERROR_STOP=1 --username &quot;$POSTGRES_USER&quot; --dbname &quot;$POSTGRES_DB&quot; \\\n  -v app_password=&quot;$GUAC_DB_PASSWORD&quot; &lt;&lt;&#x27;SQL&#x27;\nCREATE USER guacamole_app WITH PASSWORD :&#x27;app_password&#x27;;\nGRANT CONNECT ON DATABASE guacamole_db TO guacamole_app;\nGRANT USAGE ON SCHEMA public TO guacamole_app;\nGRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO guacamole_app;\nGRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO guacamole_app;\nSQL<\/code><\/pre>\n<pre><code class=\"language-bash\">chmod 644 init\/001-schema.sql init\/002-app-user.sh<\/code><\/pre>\n<p>A prepara\u00e7\u00e3o do esquema e as permiss\u00f5es s\u00e3o descritas no <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/postgresql-auth.html\">manual de PostgreSQL<\/a>. Os arquivos ser\u00e3o processados na primeira inicializa\u00e7\u00e3o do volume vazio. Editar o <code>.env<\/code> depois n\u00e3o troca automaticamente senhas j\u00e1 gravadas no banco.<\/p>\n<p><strong>Aten\u00e7\u00e3o \u00e0s permiss\u00f5es herdadas:<\/strong> <code>umask 077<\/code> protege os arquivos, mas pode deixar o diret\u00f3rio <code>init<\/code> sem travessia para o usu\u00e1rio PostgreSQL do cont\u00eainer. Como esses scripts n\u00e3o cont\u00eam a senha literal, deixe somente esse diret\u00f3rio leg\u00edvel:<\/p>\n<pre><code class=\"language-bash\">chmod 755 init\nchmod 644 init\/001-schema.sql init\/002-app-user.sh<\/code><\/pre>\n<p>Se a primeira inicializa\u00e7\u00e3o falhar, investigue antes de tentar novamente: scripts em <code>\/docker-entrypoint-initdb.d<\/code> n\u00e3o s\u00e3o reaplicados a um banco j\u00e1 inicializado. Apagar um volume para \u201ctentar de novo\u201d s\u00f3 \u00e9 aceit\u00e1vel em um laborat\u00f3rio descart\u00e1vel cuja perda foi deliberadamente autorizada.<\/p>\n<h2>3. Subir e testar o portal<\/h2>\n<pre><code class=\"language-bash\">docker compose config --quiet\ndocker compose up -d\ndocker compose ps\ndocker compose logs --tail=100 db guacd guacamole\ncurl -I http:\/\/127.0.0.1:18080\/guacamole\/<\/code><\/pre>\n<p>Espere a inicializa\u00e7\u00e3o do Tomcat. O endere\u00e7o local \u00e9 <code>http:\/\/127.0.0.1:18080\/guacamole\/<\/code>. Se o Docker estiver em outro servidor, voc\u00ea pode usar um t\u00fanel SSH tempor\u00e1rio, executado no seu computador:<\/p>\n<pre><code class=\"language-bash\">ssh -N -L 18080:127.0.0.1:18080 usuario@servidor<\/code><\/pre>\n<p>Substitua usu\u00e1rio e servidor pelo seu ambiente. Depois abra o mesmo endere\u00e7o local no navegador. Isso mant\u00e9m o teste fora da exposi\u00e7\u00e3o p\u00fablica.<\/p>\n<p>O esquema inicial cria o acesso <strong>guacadmin \/ guacadmin<\/strong>. Entre apenas pelo acesso restrito, altere imediatamente a senha e prepare uma conta administrativa individual antes de liberar usu\u00e1rios. N\u00e3o confunda esse login do portal com as senhas SQL do <code>.env<\/code>. <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/jdbc-auth.html\">Refer\u00eancia: autentica\u00e7\u00e3o por banco<\/a>.<\/p>\n<p>Confira tamb\u00e9m as propriedades da conta usada pela aplica\u00e7\u00e3o:<\/p>\n<pre><code class=\"language-bash\">docker compose exec -T db psql -U postgres -d guacamole_db   -c &quot;SELECT rolname, rolsuper, rolcreatedb, rolcreaterole FROM pg_roles WHERE rolname = &#x27;guacamole_app&#x27;;&quot;<\/code><\/pre>\n<p>Os tr\u00eas indicadores de privil\u00e9gio devem ser <code>f<\/code>. HTTP 200 comprova que uma p\u00e1gina respondeu; n\u00e3o comprova login, autoriza\u00e7\u00e3o ou abertura de sess\u00e3o. Fa\u00e7a esses testes separadamente.<\/p>\n<h2>4. Configurar a primeira conex\u00e3o<\/h2>\n<p>Na \u00e1rea administrativa, crie uma conex\u00e3o e escolha protocolo, endere\u00e7o e credenciais adequados. Comece com um destino descart\u00e1vel do laborat\u00f3rio e d\u00ea acesso apenas \u00e0 conta de teste. Verifique a conectividade a partir da rede do <code>guacd<\/code>, n\u00e3o apenas do seu notebook.<\/p>\n<table>\n<thead>\n<tr>\n<th>Protocolo<\/th>\n<th>Destino necess\u00e1rio<\/th>\n<th>Verifica\u00e7\u00e3o essencial<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>SSH<\/td>\n<td>Servidor SSH configurado<\/td>\n<td>Usu\u00e1rio, chave ou senha e identidade do host.<\/td>\n<\/tr>\n<tr>\n<td>RDP<\/td>\n<td>Servidor RDP habilitado<\/td>\n<td>Pol\u00edtica de seguran\u00e7a, certificado, conta e dom\u00ednio quando aplic\u00e1vel.<\/td>\n<\/tr>\n<tr>\n<td>VNC<\/td>\n<td>Servidor VNC dispon\u00edvel<\/td>\n<td>Autentica\u00e7\u00e3o, prote\u00e7\u00e3o do transporte e porta configurada no destino.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Recursos como \u00e1udio, transfer\u00eancia de arquivos e \u00e1rea de transfer\u00eancia dependem do protocolo e da configura\u00e7\u00e3o. N\u00e3o libere todos por conveni\u00eancia: escolha o que o usu\u00e1rio precisa. Evite transformar \u201cignorar certificado\u201d em configura\u00e7\u00e3o permanente de RDP. Os par\u00e2metros est\u00e3o no <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/configuring-guacamole.html\">guia de configura\u00e7\u00e3o<\/a>; para acesso por chave, veja tamb\u00e9m nosso artigo sobre <a href=\"\/2017\/04\/ssh-sem-senha\/\">autentica\u00e7\u00e3o SSH<\/a>.<\/p>\n<h2>Portas, DNS e confian\u00e7a no destino<\/h2>\n<table>\n<thead>\n<tr>\n<th>Origem \u2192 destino<\/th>\n<th>Porta t\u00edpica<\/th>\n<th>Pol\u00edtica sugerida<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Navegador \u2192 proxy<\/td>\n<td>TCP 443<\/td>\n<td>\u00danica entrada p\u00fablica, se a pol\u00edtica permitir exposi\u00e7\u00e3o p\u00fablica.<\/td>\n<\/tr>\n<tr>\n<td>Aplica\u00e7\u00e3o \u2192 PostgreSQL<\/td>\n<td>TCP 5432<\/td>\n<td>Apenas rede administrativa da aplica\u00e7\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td>Aplica\u00e7\u00e3o \u2192 guacd<\/td>\n<td>TCP 4822<\/td>\n<td>N\u00e3o publicar; permitir somente a aplica\u00e7\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td>guacd \u2192 destino<\/td>\n<td>SSH 22, RDP 3389, VNC conforme servidor<\/td>\n<td>Lista expl\u00edcita de hosts e portas autorizados.<\/td>\n<\/tr>\n<tr>\n<td>Aplica\u00e7\u00e3o \u2192 identidade<\/td>\n<td>LDAPS 636 ou HTTPS 443<\/td>\n<td>Conforme a integra\u00e7\u00e3o, com confian\u00e7a TLS v\u00e1lida.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>S\u00e3o valores usuais, n\u00e3o detec\u00e7\u00e3o autom\u00e1tica. O endere\u00e7o de destino \u00e9 resolvido do lado do gateway: <code>localhost<\/code> em uma conex\u00e3o normalmente aponta para o pr\u00f3prio cont\u00eainer guacd, n\u00e3o para seu computador. No SSH, configure a verifica\u00e7\u00e3o da identidade por <code>host-key<\/code> ou pelo arquivo de hosts conhecidos do guacd; n\u00e3o presuma que a imagem j\u00e1 conhece seus servidores. No RDP, valide certificado e negocia\u00e7\u00e3o de seguran\u00e7a. N\u00e3o corrija falhas trocando silenciosamente um transporte autenticado por outro mais fraco.<\/p>\n<h2>HTTPS e proxy reverso: n\u00e3o exponha o laborat\u00f3rio como est\u00e1<\/h2>\n<p>Para uso compartilhado, coloque o portal atr\u00e1s de HTTPS. O proxy deve preservar WebSocket e n\u00e3o acumular os dados do t\u00fanel em buffers. O exemplo abaixo \u00e9 um bloco de localiza\u00e7\u00e3o para um servidor nginx com TLS j\u00e1 configurado, rodando no mesmo host do Docker; n\u00e3o \u00e9 uma configura\u00e7\u00e3o TLS completa:<\/p>\n<pre><code class=\"language-nginx\">location \/guacamole\/ {\n    proxy_pass http:\/\/127.0.0.1:18080;\n    proxy_http_version 1.1;\n    proxy_buffering off;\n    proxy_set_header Host $host;\n    proxy_set_header X-Forwarded-Proto $scheme;\n    proxy_set_header X-Forwarded-For $remote_addr;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection &quot;upgrade&quot;;\n    proxy_read_timeout 3600s;\n    access_log off;\n}<\/code><\/pre>\n<p>O log de acesso dessa localiza\u00e7\u00e3o foi desabilitado para n\u00e3o registrar tokens presentes em URLs. Se precisar dele, defina um formato sanitizado sem par\u00e2metros sens\u00edveis. Antes de ativar, valide sua configura\u00e7\u00e3o com <code>nginx -t<\/code>. Se o nginx estiver em outro cont\u00eainer, o loopback acima n\u00e3o representa o host: adapte rede e upstream.<\/p>\n<p>Para registrar corretamente a origem, o manual orienta habilitar <code>REMOTE_IP_VALVE_ENABLED<\/code> e limitar os proxies confi\u00e1veis com <code>PROXY_ALLOWED_IPS_REGEX<\/code>. N\u00e3o aceite cabe\u00e7alhos de origem de qualquer cliente. <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/reverse-proxy.html\">Refer\u00eancia de proxy e TLS<\/a>.<\/p>\n<h2>Autentica\u00e7\u00e3o: tr\u00eas perguntas diferentes<\/h2>\n<ol>\n<li><strong>Quem est\u00e1 entrando?<\/strong> Login local, diret\u00f3rio LDAP ou provedor SSO.<\/li>\n<li><strong>O que essa pessoa pode acessar?<\/strong> Permiss\u00f5es sobre conex\u00f5es, grupos e administra\u00e7\u00e3o.<\/li>\n<li><strong>Como a sess\u00e3o entra no destino?<\/strong> Credenciais aceitas pelo Windows, Linux ou servidor VNC.<\/li>\n<\/ol>\n<p>N\u00e3o trate as tr\u00eas etapas como uma senha \u00fanica. Uma identidade autenticada no portal n\u00e3o recebe automaticamente uma conta no sistema remoto. Essa separa\u00e7\u00e3o tamb\u00e9m ajuda a investigar o caso cl\u00e1ssico: o login funciona, mas nenhuma conex\u00e3o aparece.<\/p>\n<h2>LDAP e Active Directory: identidade centralizada<\/h2>\n<p>A extens\u00e3o LDAP autentica por bind. H\u00e1 dois desenhos: armazenar conex\u00f5es no diret\u00f3rio com o esquema <code>guacConfigGroup<\/code>, ou usar LDAP para identidade e banco para conex\u00f5es. O segundo evita alterar o esquema somente para guardar conex\u00f5es. A associa\u00e7\u00e3o entre contas e grupos depende de nomes correspondentes entre as fontes. <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/ldap-auth.html\">Documenta\u00e7\u00e3o LDAP\/AD<\/a>.<\/p>\n<p>Exemplo ilustrativo para AD, a adicionar ao <code>environment<\/code> de <code>guacamole<\/code>, mantendo PostgreSQL:<\/p>\n<pre><code class=\"language-yaml\">LDAP_ENABLED: &quot;true&quot;\nLDAP_HOSTNAME: &quot;dc01.example.org&quot;\nLDAP_PORT: &quot;636&quot;\nLDAP_ENCRYPTION_METHOD: &quot;ssl&quot;\nLDAP_USER_BASE_DN: &quot;DC=example,DC=org&quot;\nLDAP_USERNAME_ATTRIBUTE: &quot;sAMAccountName&quot;\nLDAP_SEARCH_BIND_DN: &quot;CN=svc-guacamole,OU=Servicos,DC=example,DC=org&quot;\nLDAP_SEARCH_BIND_PASSWORD: ${LDAP_BIND_PASSWORD:?defina LDAP_BIND_PASSWORD}<\/code><\/pre>\n<p>Troque os valores pelo diret\u00f3rio real. A conta de busca resolve o DN do usu\u00e1rio; n\u00e3o precisa ser administradora do dom\u00ednio. LDAPS usa <code>ssl<\/code>; StartTLS usa <code>starttls<\/code>. A cadeia de certificados precisa ser confi\u00e1vel para o Java. N\u00e3o desligue a valida\u00e7\u00e3o para esconder um erro de certificado.<\/p>\n<p>Configurar LDAP n\u00e3o elimina automaticamente o login local do banco: as extens\u00f5es podem coexistir. Revise contas locais para evitar um caminho alternativo indesejado ap\u00f3s bloquear algu\u00e9m no AD.<\/p>\n<p>Meu checklist de homologa\u00e7\u00e3o \u00e9 testar usu\u00e1rio autorizado, usu\u00e1rio sem permiss\u00e3o, credencial inv\u00e1lida, conta bloqueada, certificado inv\u00e1lido e indisponibilidade do diret\u00f3rio. Para grupos, confira bases e atributos antes de associar permiss\u00f5es. N\u00e3o suponha que todos os grupos do AD viraram automaticamente grupos autorizados do portal.<\/p>\n<h3>Login aceito, lista vazia: complete a autoriza\u00e7\u00e3o<\/h3>\n<p>Exemplo de pol\u00edtica: o login <code>ana<\/code> \u00e9 validado pelo AD; no Guacamole, uma conta ou grupo correspondente recebe permiss\u00e3o de leitura apenas na conex\u00e3o de laborat\u00f3rio. Crie essa associa\u00e7\u00e3o deliberadamente e confirme o nome efetivo retornado pelo diret\u00f3rio. N\u00e3o atribua administra\u00e7\u00e3o para resolver uma lista vazia.<\/p>\n<p>Para exigir cadastro pr\u00e9vio no banco, avalie <code>POSTGRESQL_USER_REQUIRED: \"true\"<\/code>. J\u00e1 <code>POSTGRESQL_AUTO_CREATE_ACCOUNTS: \"true\"<\/code> pode criar a conta ap\u00f3s autentica\u00e7\u00e3o externa, mas <strong>n\u00e3o concede automaticamente acesso \u00e0s conex\u00f5es<\/strong>. S\u00e3o pol\u00edticas diferentes; documente qual ser\u00e1 usada. Veja as <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/postgresql-auth.html\">op\u00e7\u00f5es de integra\u00e7\u00e3o do PostgreSQL<\/a>.<\/p>\n<p>Ap\u00f3s modificar vari\u00e1veis do Compose, valide e recrie a aplica\u00e7\u00e3o em janela de manuten\u00e7\u00e3o; um simples <code>restart<\/code> n\u00e3o atualiza o ambiente do cont\u00eainer:<\/p>\n<pre><code class=\"language-bash\">docker compose config --quiet\ndocker compose up -d --no-deps guacamole\ndocker compose logs --tail=100 guacamole<\/code><\/pre>\n<h2>SSO: OpenID Connect, SAML e CAS<\/h2>\n<p>O <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/sso.html\">Guacamole oferece op\u00e7\u00f5es de single sign-on<\/a> para delegar a autentica\u00e7\u00e3o. Diferentemente do formul\u00e1rio LDAP, o SSO pode encaminhar o usu\u00e1rio a um provedor de identidade compartilhado com outras aplica\u00e7\u00f5es. O manual tamb\u00e9m contempla certificados e smart cards.<\/p>\n<table>\n<thead>\n<tr>\n<th>Op\u00e7\u00e3o<\/th>\n<th>O que avaliar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>OpenID Connect<\/td>\n<td>Fluxo suportado, emissor, chaves p\u00fablicas, cliente e URI de retorno.<\/td>\n<\/tr>\n<tr>\n<td>SAML<\/td>\n<td>Metadados, identidade do provedor, certificados e identifica\u00e7\u00e3o do usu\u00e1rio.<\/td>\n<\/tr>\n<tr>\n<td>CAS<\/td>\n<td>Servidor CAS existente, URL de servi\u00e7o e configura\u00e7\u00e3o de valida\u00e7\u00e3o.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Na documenta\u00e7\u00e3o 1.6.0, a extens\u00e3o <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/openid-auth.html\">OpenID Connect<\/a> utiliza o fluxo <em>implicit<\/em>. N\u00e3o presuma suporte a Authorization Code com PKCE porque o provedor oferece esse fluxo. Verifique a compatibilidade e a pol\u00edtica de seguran\u00e7a da organiza\u00e7\u00e3o antes de escolher a integra\u00e7\u00e3o. A extens\u00e3o autentica; os dados das conex\u00f5es precisam vir de outra extens\u00e3o, como a de banco.<\/p>\n<p>Para ambientes j\u00e1 padronizados nesses protocolos, consulte as configura\u00e7\u00f5es espec\u00edficas de <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/saml-auth.html\">SAML<\/a> e <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/cas-auth.html\">CAS<\/a>. N\u00e3o copie endpoints entre protocolos: metadados, valida\u00e7\u00f5es e retorno s\u00e3o diferentes.<\/p>\n<p>Meu roteiro de implanta\u00e7\u00e3o come\u00e7a por uma identidade de teste e um identificador est\u00e1vel, combinado com permiss\u00f5es m\u00ednimas. Depois v\u00eam casos de rejei\u00e7\u00e3o, expira\u00e7\u00e3o, logout e recupera\u00e7\u00e3o administrativa. Teste tamb\u00e9m o que acontece com uma sess\u00e3o j\u00e1 aberta ap\u00f3s revogar o usu\u00e1rio: bloqueio de novos logins n\u00e3o comprova encerramento instant\u00e2neo de todas as sess\u00f5es.<\/p>\n<h3>Contrato m\u00ednimo da integra\u00e7\u00e3o SSO<\/h3>\n<ol>\n<li><strong>Defina a URL p\u00fablica antes do cliente:<\/strong> esquema HTTPS, dom\u00ednio e caminho precisam corresponder ao retorno cadastrado no provedor.<\/li>\n<li><strong>Escolha um identificador:<\/strong> e-mail, nome de usu\u00e1rio e identificador interno n\u00e3o s\u00e3o intercambi\u00e1veis. Decida como o valor se associa \u00e0s permiss\u00f5es existentes e o que acontece se mudar.<\/li>\n<li><strong>Valide a confian\u00e7a:<\/strong> emissor, assinatura\/chaves, audi\u00eancia e validade precisam corresponder ao cliente esperado. Rel\u00f3gios incorretos tamb\u00e9m causam rejei\u00e7\u00f5es.<\/li>\n<li><strong>Teste a autoriza\u00e7\u00e3o:<\/strong> um usu\u00e1rio autenticado sem v\u00ednculos n\u00e3o deve ganhar acesso a conex\u00f5es administrativas.<\/li>\n<li><strong>Teste o encerramento:<\/strong> logout no portal, logout no IdP e revoga\u00e7\u00e3o de uma sess\u00e3o remota s\u00e3o eventos diferentes.<\/li>\n<\/ol>\n<p>N\u00e3o habilite todos os provedores de uma vez. Primeiro homologue uma integra\u00e7\u00e3o com uma identidade sem privil\u00e9gios; depois acrescente grupos e MFA. Mantenha recupera\u00e7\u00e3o administrativa controlada, sem transformar uma conta local esquecida em desvio permanente da pol\u00edtica do IdP.<\/p>\n<h2>MFA: TOTP no portal ou pol\u00edtica no provedor<\/h2>\n<p>A extens\u00e3o <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/totp-auth.html\">TOTP<\/a> acrescenta um segundo fator e exige armazenamento dos dados de inscri\u00e7\u00e3o; PostgreSQL pode cumprir esse papel. No Docker, a ativa\u00e7\u00e3o utiliza <code>TOTP_ENABLED: \"true\"<\/code>. O usu\u00e1rio conclui a inscri\u00e7\u00e3o com seu autenticador.<\/p>\n<p>Ative primeiro com uma conta de teste e prepare um procedimento de recupera\u00e7\u00e3o. Se o SSO exigir MFA no provedor, valide a pol\u00edtica aplicada \u00e0 aplica\u00e7\u00e3o Guacamole; n\u00e3o deduza prote\u00e7\u00e3o apenas por existir um provedor corporativo. Evite sobrepor desafios sem necessidade e revise exce\u00e7\u00f5es de usu\u00e1rios e grupos.<\/p>\n<h2>Grava\u00e7\u00f5es e auditoria precisam de planejamento<\/h2>\n<p>O Guacamole oferece grava\u00e7\u00e3o de sess\u00f5es e reprodu\u00e7\u00e3o no navegador mediante configura\u00e7\u00e3o. A extens\u00e3o de reprodu\u00e7\u00e3o localiza os arquivos relacionados ao hist\u00f3rico; o banco sozinho n\u00e3o cont\u00e9m necessariamente a grava\u00e7\u00e3o. <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/recording-playback.html\">Guia de grava\u00e7\u00e3o e reprodu\u00e7\u00e3o<\/a>.<\/p>\n<p>O Compose deste artigo n\u00e3o habilita grava\u00e7\u00f5es. Se voc\u00ea adicion\u00e1-las, planeje volumes, permiss\u00f5es, espa\u00e7o, reten\u00e7\u00e3o e acesso ao player. Sess\u00f5es podem expor dados sens\u00edveis: informe os usu\u00e1rios, limite quem revisa o material e n\u00e3o habilite captura de teclas sem uma necessidade expl\u00edcita.<\/p>\n<h2>Backup, atualiza\u00e7\u00e3o e diagn\u00f3stico<\/h2>\n<p>Fa\u00e7a backup do banco, configura\u00e7\u00f5es, extens\u00f5es personalizadas e arquivos persistentes adicionais. Para produzir um dump l\u00f3gico do laborat\u00f3rio:<\/p>\n<pre><code class=\"language-bash\">umask 077\ndocker compose exec -T db pg_dump -U postgres -d guacamole_db -Fc \\\n  &gt; &quot;guacamole-$(date +%F-%H%M%S).dump&quot;<\/code><\/pre>\n<p>Guarde o dump protegido e teste restaura\u00e7\u00e3o em outro ambiente. Recriar o cont\u00eainer n\u00e3o equivale a restaurar dados. <strong>N\u00e3o execute <code>docker compose down -v<\/code> em produ\u00e7\u00e3o:<\/strong> a op\u00e7\u00e3o remove volumes associados e pode apagar o banco.<\/p>\n<p>Na atualiza\u00e7\u00e3o, leia as notas e scripts de migra\u00e7\u00e3o aplic\u00e1veis, preserve a compatibilidade das extens\u00f5es e programe indisponibilidade. Se a migra\u00e7\u00e3o criar tabelas ou sequ\u00eancias, reaplique as permiss\u00f5es necess\u00e1rias \u00e0 conta SQL da aplica\u00e7\u00e3o. Reiniciar a aplica\u00e7\u00e3o pode interromper sess\u00f5es. Nosso guia de <a href=\"\/2026\/09\/uptime-kuma-no-linux-monitoramento-self-hosted-com-docker-e-nginx\/\">Uptime Kuma com Docker e nginx<\/a> ajuda a complementar o monitoramento do portal.<\/p>\n<table>\n<thead>\n<tr>\n<th>Sintoma<\/th>\n<th>Onde come\u00e7ar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Portal n\u00e3o abre<\/td>\n<td>Logs da aplica\u00e7\u00e3o, porta local, inicializa\u00e7\u00e3o do Tomcat e proxy.<\/td>\n<\/tr>\n<tr>\n<td>Login local falha<\/td>\n<td>Esquema inicializado, usu\u00e1rio SQL, senha e permiss\u00f5es.<\/td>\n<\/tr>\n<tr>\n<td>Login funciona; n\u00e3o h\u00e1 conex\u00f5es<\/td>\n<td>Permiss\u00f5es e associa\u00e7\u00e3o de identidades entre fontes.<\/td>\n<\/tr>\n<tr>\n<td>Conex\u00e3o remota falha<\/td>\n<td>Logs do guacd, DNS, rota, firewall e servi\u00e7o no destino.<\/td>\n<\/tr>\n<tr>\n<td>LDAP falha<\/td>\n<td>Base DN, atributo de usu\u00e1rio, bind e confian\u00e7a TLS do Java.<\/td>\n<\/tr>\n<tr>\n<td>SSO volta para erro ou loop<\/td>\n<td>URI p\u00fablica, identifica\u00e7\u00e3o do provedor, mapeamento e cabe\u00e7alhos do proxy.<\/td>\n<\/tr>\n<tr>\n<td>Sess\u00e3o congela ou fica lenta<\/td>\n<td>WebSocket, buffering, timeouts, lat\u00eancia e carga real.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Restaura\u00e7\u00e3o: o teste que precisa acontecer antes da pane<\/h2>\n<p>Um dump conclu\u00eddo n\u00e3o prova recupera\u00e7\u00e3o. Em um ambiente isolado, prepare um banco vazio compat\u00edvel e crie primeiro o papel SQL <code>guacamole_app<\/code> e os demais pap\u00e9is referenciados pelo dump. Depois restaure o arquivo com <code>pg_restore<\/code> e confira as permiss\u00f5es; restaurar ACLs antes de criar seus destinat\u00e1rios provoca erros. O <code>pg_dump<\/code> de um banco n\u00e3o inclui a cria\u00e7\u00e3o dos pap\u00e9is globais do servidor; portanto, preserve um procedimento de provisionamento desses pap\u00e9is e proteja os segredos separadamente.<\/p>\n<p>Valide o login administrativo, a lista de conex\u00f5es e uma sess\u00e3o de teste. Se houver grava\u00e7\u00f5es, restaure seus arquivos e confira a reprodu\u00e7\u00e3o. Registre o tempo gasto e a perda m\u00e1xima de dados aceit\u00e1vel. Para detalhes do formato de dump e da restaura\u00e7\u00e3o, consulte <a href=\"https:\/\/www.postgresql.org\/docs\/17\/app-pgdump.html\">pg_dump<\/a> e <a href=\"https:\/\/www.postgresql.org\/docs\/17\/app-pgrestore.html\">pg_restore<\/a>.<\/p>\n<h2>Matriz de homologa\u00e7\u00e3o: teste sucesso e rejei\u00e7\u00e3o<\/h2>\n<table>\n<thead>\n<tr>\n<th>Teste<\/th>\n<th>Resultado esperado<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Conta v\u00e1lida com uma conex\u00e3o autorizada<\/td>\n<td>Apenas o destino previsto aparece e abre.<\/td>\n<\/tr>\n<tr>\n<td>Conta v\u00e1lida sem permiss\u00f5es<\/td>\n<td>Nenhuma conex\u00e3o administrativa fica dispon\u00edvel.<\/td>\n<\/tr>\n<tr>\n<td>Senha errada, conta bloqueada ou MFA recusado<\/td>\n<td>Autentica\u00e7\u00e3o recusada sem alternativa local imprevista.<\/td>\n<\/tr>\n<tr>\n<td>Destino com identidade\/certificado inv\u00e1lido<\/td>\n<td>Falha investigada; valida\u00e7\u00e3o n\u00e3o \u00e9 desabilitada como solu\u00e7\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td>Diret\u00f3rio\/IdP indispon\u00edvel<\/td>\n<td>Comportamento conhecido e recupera\u00e7\u00e3o sob controle.<\/td>\n<\/tr>\n<tr>\n<td>Revoga\u00e7\u00e3o durante sess\u00e3o ativa<\/td>\n<td>Tempo e procedimento de encerramento conhecidos e documentados.<\/td>\n<\/tr>\n<tr>\n<td>Restaura\u00e7\u00e3o isolada<\/td>\n<td>Portal, permiss\u00f5es e sess\u00e3o de teste recuperados.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Esta matriz \u00e9 um roteiro para a sua homologa\u00e7\u00e3o, n\u00e3o uma declara\u00e7\u00e3o de que todos esses cen\u00e1rios foram executados neste artigo. Para medir capacidade, acompanhe CPU e mem\u00f3ria de aplica\u00e7\u00e3o e guacd, banco, lat\u00eancia at\u00e9 os destinos e uso real por protocolo; conte sess\u00f5es simult\u00e2neas ativas, n\u00e3o apenas contas cadastradas.<\/p>\n<h2>Checklist antes de disponibilizar para a equipe<\/h2>\n<ul>\n<li>Senha inicial substitu\u00edda e contas administrativas individuais.<\/li>\n<li>HTTPS e proxies confi\u00e1veis configurados; acesso ao guacd restrito.<\/li>\n<li>Destinos e permiss\u00f5es limitados, inclusive no firewall.<\/li>\n<li>Autentica\u00e7\u00e3o, MFA e caminhos de recupera\u00e7\u00e3o homologados.<\/li>\n<li>Credenciais, dumps e logs protegidos contra divulga\u00e7\u00e3o.<\/li>\n<li>Backups restaurados em teste e rotina de atualiza\u00e7\u00e3o definida.<\/li>\n<li>Integra\u00e7\u00f5es remotas testadas com contas de baixo privil\u00e9gio.<\/li>\n<\/ul>\n<p>O Apache Guacamole pode tornar o acesso remoto mais organizado, mas tamb\u00e9m concentra acesso a sistemas importantes. Comece pelo laborat\u00f3rio, compreenda cada camada e s\u00f3 ent\u00e3o amplie o uso. A refer\u00eancia permanente \u00e9 o <a href=\"https:\/\/guacamole.apache.org\/doc\/1.6.0\/gug\/\">manual oficial<\/a>: instalar o portal \u00e9 apenas o in\u00edcio da opera\u00e7\u00e3o segura.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gu\u00eda de Apache Guacamole: arquitectura, Docker Compose con PostgreSQL, acceso RDP\/SSH\/VNC, LDAP y Active Directory, SSO, MFA, seguridad y copia de seguridad.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,2,120],"tags":[],"class_list":["post-1612","post","type-post","status-publish","format-standard","hentry","category-devops","category-linux","category-servidores"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=1612"}],"version-history":[{"count":3,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1612\/revisions"}],"predecessor-version":[{"id":1819,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1612\/revisions\/1819"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=1612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=1612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=1612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}