Português
Começar

← Todos os templates · Senhas e login

Faça deploy de Keycloak em um clique

Gerenciamento de identidade e acesso de código aberto: login único para seus apps com OpenID Connect e SAML

Uma alternativa auto-hospedada para Auth0 e Okta.

O que é Keycloak?

O Keycloak é um servidor de gerenciamento de identidade e acesso: seus apps entregam o login a ele, e quem entrou uma vez está logado em todos eles. Ele suporta OpenID Connect, OAuth 2.0 e SAML 2.0, então a maioria dos apps e frameworks se conecta a ele com as bibliotecas padrão deles. Ele faz o login das pessoas com senha, passkey ou uma conta social como Google ou GitHub, adiciona autenticação de dois fatores com códigos de uso único, sincroniza usuários do LDAP e do Active Directory e deixa cada usuário gerenciar o perfil, a senha e as sessões no console da conta.

O Keycloak é um projeto em incubação da Cloud Native Computing Foundation, usado tanto por empresas quanto em home labs para colocar um só login na frente de muitos apps. Este template o roda em modo de produção com PostgreSQL atrás do proxy e cria o administrador do realm master a partir dos campos antes de o Keycloak responder a qualquer pessoa. O porém: o Keycloak é poderoso e tem muitas configurações, então o primeiro cliente exige alguma leitura, e ele roda em Java, que usa mais memória que a maioria dos servidores de login.

Hospedagem de Keycloak no Pethost

  1. Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
  2. Novo projeto abre em Keycloak. Você preenche o que ele pede e clica em Criar projeto: Usuário, Senha do administrador.
  3. Em um ou dois minutos Keycloak está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
  4. É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.

Perguntas sobre Keycloak

O Keycloak é gratuito?

Sim. O Keycloak é de código aberto sob a licença Apache 2.0, sem edição paga e sem limite de usuários ou apps. A Red Hat vende suporte para a própria versão dele, o Red Hat build of Keycloak.

Keycloak ou Auth0: qual devo usar?

Os dois fazem o login de usuários por OpenID Connect e SAML, com login social e autenticação de dois fatores. O Auth0 é um serviço na nuvem cobrado por usuários ativos por mês, enquanto o Keycloak é um que você mesmo roda, gratuito para qualquer número de usuários, ao custo de cuidar dele.

O Keycloak permite login com Google ou GitHub?

Sim. Em “Provedores de identidade”, um realm ganha Google, GitHub, Facebook, Microsoft e outros, ou qualquer provedor OpenID Connect ou SAML 2.0, como botões na página de login dele, sem mudança nos seus apps.

O Keycloak suporta autenticação de dois fatores e passkeys?

Sim. Ele aceita códigos de uso único de apps como Google Authenticator ou FreeOTP, códigos de recuperação e passkeys, e um realm pode exigi-los de todos ou deixar que os usuários os ativem no console da conta.

Por que o Keycloak diz que sou um administrador temporário?

O Keycloak marca como temporário o administrador que cria na primeira inicialização e pede um permanente: adicione um usuário no realm master, dê a ele a função admin em “Mapeamento de funções”, entre com ele e exclua o administrador temporário.

De quanta memória e disco Keycloak precisa?

O Keycloak roda em Java: cerca de 550 MB de memória com o Postgres em repouso, mais com muitos usuários e sessões; o banco de dados dele continua pequeno. No Pethost, o plano Starter basta, com espaço para outros apps ao lado.

Arquivo Docker Compose de Keycloak

O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito.

Containers: keycloak (quay.io/keycloak/keycloak:26.8), postgres (postgres:18-alpine).

Volumes, no backup noturno: db.

services:
  keycloak:
    image: quay.io/keycloak/keycloak:26.8
    restart: unless-stopped
    command: start
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
      KC_HOSTNAME: ${URL}
      # The proxy serves HTTPS and passes requests on over HTTP, saying in X-Forwarded-* who sent
      # them and how.
      KC_HTTP_ENABLED: "true"
      KC_PROXY_HEADERS: xforwarded
      KC_HEALTH_ENABLED: "true"
      # The administrator of the master realm is made from these at the first start, before
      # Keycloak answers anyone; Keycloak calls it temporary until a permanent one replaces it.
      KC_BOOTSTRAP_ADMIN_USERNAME: ${ADMIN_USERNAME}
      KC_BOOTSTRAP_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    depends_on:
      postgres:
        condition: service_healthy
    # The port listens before Keycloak is ready: the deploy waits for its readiness, which its
    # management port answers. The image has no curl: bash asks it.
    healthcheck:
      test: ["CMD-SHELL", "exec 3<>/dev/tcp/127.0.0.1/9000 && printf 'GET /health/ready HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && grep -q '\"UP\"' <&3"]
      interval: 5s
      timeout: 5s
      retries: 5
      start_period: 180s

  postgres:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U keycloak -d keycloak"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 30s

volumes:
  db:

Mais em Senhas e login