O que é o Authentik e por que escolher uma solução SSO Open Source?
A gestão de identidades e acessos (Identity and Access Management - IAM) tornou-se um dos pilares fundamentais da infraestrutura de TI moderna. Com a proliferação de aplicações, serviços em nuvem e ferramentas colaborativas, os profissionais de tecnologia frequentemente enfrentam o problema do "fardo das senhas". A necessidade de lembrar dezenas de credenciais diferentes não apenas impacta a produtividade, mas também introduz riscos significativos de segurança, como reutilização de senhas e práticas inadequadas de armazenamento.
Neste cenário, soluções de Single Sign-On (SSO) surgem como a resposta ideal. O SSO permite que um usuário faça login uma única vez e tenha acesso a múltiplos sistemas e aplicações sem precisar autenticar-se novamente. Entre as opções disponíveis no mercado, o Authentik se destaca como uma plataforma robusta, flexível e, principalmente, open source. Diferente de soluções proprietárias caras ou complexas demais para ambientes menores, o Authentik oferece um painel administrativo intuitivo, suporte a protocolos padrão da indústria (como OIDC, SAML e LDAP) e uma arquitetura containerizada que facilita a implantação.
A escolha de realizar uma authentik vps instalação em seu próprio servidor oferece benefícios cruciais: controle total sobre os dados dos usuários, privacidade reforçada (já que as credenciais não residem em servidores de terceiros) e custos operacionais reduzidos. Este tutorial guiará você, passo a passo, pela instalação do Authentik em um ambiente Linux usando Docker Compose, a ferramenta padrão da indústria para orquestração de containers multi-contêiner.
Pré-requisitos para a Instalação
Antes de iniciarmos o processo de configuração, é essencial garantir que seu ambiente atenda aos requisitos mínimos. O Authentik é uma aplicação Python/Django robusta, mas não excessivamente pesada, sendo perfeitamente adequada para rodar em VPSs de entrada.
- Servidor Linux: Recomendamos Ubuntu Server 22.04 LTS ou Debian 12. Ambos possuem excelente suporte a containers e documentação abundante.
- Especificações de Hardware: Para um ambiente doméstico ou de pequena equipe, 2 vCPUs e 2GB de RAM são suficientes. Para produção com muitos usuários simultâneos, considere 4GB de RAM ou mais.
- Docker e Docker Compose: O Authentik depende inteiramente do ecossistema Docker. Certifique-se de que o daemon do Docker está instalado e em execução, e que o plugin
docker-compose(v2) está disponível no seu sistema. - Domínio Resolvido: Você precisará de um domínio (ex:
suaempresa.com) apontando para o IP público da sua VPS. O Authentik requer HTTPS para operar corretamente, especialmente para fluxos OAuth2 e OIDC. Utilizaremos o Nginx Proxy Manager ou Caddy neste guia, mas qualquer proxy reverso que suporte certificados TLS funcionará.
Dica de Segurança: Certifique-se de que as portas 80 (HTTP) e 443 (HTTPS) estão abertas no firewall da sua VPS. As portas internas do Docker (geralmente a 9000 para o serviço web e 8080 para a API) não precisam ser expostas diretamente à internet se você estiver utilizando um proxy reverso.
Passo 1: Preparação do Ambiente Linux
A primeira etapa consiste em preparar o sistema operacional. Vamos atualizar os pacotes existentes e instalar as dependências necessárias para o Docker. Abra seu terminal e conecte-se à sua VPS via SSH.
sudo apt update && sudo apt upgrade -y
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
Agora, vamos adicionar a chave GPG oficial do Docker e configurar o repositório. Isso garante que você esteja instalando versões oficiais e seguras.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Após adicionar o repositório, atualize a lista de pacotes novamente e instale o Docker Engine e o Docker Compose plugin.
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Verifique se a instalação foi bem-sucedida executando os comandos de verificação:
docker --version
docker compose version
Você deve ver as versões instaladas retornadas no terminal. Se tudo estiver correto, seu ambiente está pronto para receber o Authentik.
Passo 2: Configuração do Docker Compose
O Authentik utiliza um banco de dados PostgreSQL como backend e Redis para cache e filas de tarefas. Em vez de configurar cada container manualmente com comandos docker run complexos, utilizaremos um arquivo docker-compose.yml. Este arquivo define todos os serviços necessários de forma declarativa.
Crie um diretório dedicado para o projeto:
mkdir -p ~/authentik && cd ~/authentik
Agora, crie o arquivo de configuração. Você pode usar seu editor de texto favorito, como nano ou vim:
nano docker-compose.yml
Cole o seguinte conteúdo no arquivo. Este é um modelo básico e seguro para a instalação inicial:
version: "3.4"
services:
postgres:
image: docker.io/library/postgres:16
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${PG_PASS:-postgres}
POSTGRES_USER: ${PG_USR:-authentik}
POSTGRES_DB: ${PG_DB:-authentik}
redis:
image: docker.io/library/redis:alpine
restart: unless-stopped
server:
image: ghcr.io/goauthentik/server:2024.x.x
restart: unless-stopped
command: server
environment:
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgres
AUTHENTIK_POSTGRESQL__USER: ${PG_USR:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS:-postgres}
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
# IMPORTANTE: Defina uma chave secreta forte aqui ou use variáveis de ambiente externas
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:-"change-me-to-a-random-string"}
ports:
- "9000:9000"
volumes:
- ./media:/media
- ./custom-logs:/var/log/custom
worker:
image: ghcr.io/goauthentik/server:2024.x.x
restart: unless-stopped
command: worker
environment:
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgres
AUTHENTIK_POSTGRESQL__USER: ${PG_USR:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS:-postgres}
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:-"change-me-to-a-random-string"}
volumes:
- ./media:/media
- ./custom-logs:/var/log/custom
- /var/run/docker.sock:/var/run/docker.sock
volumes:
db_data:
Nota Crítica: No trecho acima, substitua "change-me-to-a-random-string" por uma sequência aleatória complexa de caracteres. Esta é a chave criptográfica usada para assinar sessões e senhas. Se você perder esta chave ou usá-la em texto claro sem proteção, a segurança do seu sistema fica comprometida. Uma boa prática é usar um gerador de senhas seguro.
Salve o arquivo (Ctrl+O, Enter, Ctrl+X no nano).
Passo 3: Inicialização e Migração do Banco de Dados
Com o arquivo docker-compose.yml salvo, podemos iniciar os containers. O Docker irá baixar as imagens necessárias (PostgreSQL, Redis e Authentik) se elas não estiverem presentes localmente.
docker compose up -d
O parâmetro -d executa os serviços em modo detached (background). Você pode acompanhar o log do servidor para verificar se há erros:
docker compose logs -f server
A primeira vez que você iniciar o Authentik, ele precisará criar as tabelas no banco de dados e aplicar migrações. Isso pode levar alguns minutos. Você saberá que está pronto quando vir mensagens indicando que o servidor está escutando na porta 9000.
Importante: O Authentik exige a execução de um comando de setup inicial para criar o usuário administrador (superusuário). Execute este comando em seu terminal, fora do modo interativo dos logs:
docker compose exec server python manage.py changepassword root
O sistema solicitará que você defina uma senha forte para o usuário root. Esta será sua conta de administrador principal. Anote esta senha em um local seguro, pois ela é a chave mestra do seu sistema de identidade.
Passo 4: Configuração do Proxy Reverso e HTTPS
Agora que o Authentik está rodando na porta 9000, ele não é acessível diretamente pela internet de forma segura. Precisamos configurar um proxy reverso para gerenciar o tráfego HTTP/HTTPS e fornecer certificados SSL/TLS automáticos. O Caddy é uma escolha excelente por sua simplicidade e configuração automática de certificados Let's Encrypt.
Crie um arquivo Caddyfile no mesmo diretório:
nano Caddyfile
Insira a seguinte configuração, substituindo auth.seudominio.com pelo seu domínio real:
auth.seudominio.com {
reverse_proxy localhost:9000
tls admin@seudominio.com
}
# Opcional: Redirecionar HTTP para HTTPS se necessário, embora o Caddy faça isso automaticamente na maioria dos casos.
http://auth.seudominio.com {
redir https://auth.seudominio.com{uri}
}
Agora, adicione o Caddy ao seu docker-compose.yml ou crie um arquivo separado para ele. Para manter a simplicidade neste tutorial, vamos adicionar o serviço Caddy diretamente ao compose existente (ou criar um novo compose apenas para o proxy). Aqui, adicionaremos ao compose atual:
nano docker-compose.yml
Adicione este bloco na seção services:
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
db_data:
caddy_data:
caddy_config:
Reinicie os serviços para aplicar as mudanças:
docker compose down
docker compose up -d
Aguarde alguns segundos e acesse https://auth.seudominio.com no seu navegador. Você deverá ver a tela de login do Authentik.
Passo 5: Configuração Inicial e Primeiros Passos
Faça login com o usuário root e a senha definida anteriormente. Ao entrar no painel administrativo, você será convidado a completar o setup inicial ou poderá acessar diretamente o dashboard.
Os primeiros passos recomendados incluem:
- Configurar Fontes de Identidade: Vá em Applications -> Identity Providers. Aqui, você pode conectar o Authentik ao seu Active Directory (LDAP), Azure AD ou criar provedores locais para testar.
- Criar uma Aplicação Provedora: Em Applications -> Applications, clique em "Create". Selecione um protocolo, como OIDC. Dê um nome à aplicação (ex: "Meu GitLab") e configure o
Client IDeClient Secret. Copie esses valores, pois serão necessários na configuração da aplicação de destino. - Definir Fluxos de Autenticação: O Authentik usa "Fluxos" para definir como a autenticação ocorre. Por padrão, o fluxo
Authentication - Defaultfunciona bem para a maioria dos casos. Você pode customizar isso em Flows.
Para testar, configure uma aplicação pública simples, como um painel de controle ou até mesmo o próprio GitLab (se você tiver um), usando as credenciais OIDC geradas pelo Authentik.
Melhores Práticas para Produção
A instalação descrita acima é funcional, mas para um ambiente de produção robusto, considere as seguintes melhorias:
- Backup Automático: Configure backups regulares do volume
db_data. O banco de dados PostgreSQL contém toda a estrutura de usuários e permissões. Scripts simples compg_dumppodem ser agendados via cron. - Variáveis de Ambiente Seguras: Não deixe senhas e chaves hardcoded no
docker-compose.yml. Utilize um arquivo.envou ferramentas como Docker Secrets para gerenciar credenciais sensíveis. - Monitoramento: Integre o Authentik com ferramentas de monitoramento como Prometheus e Grafana. O Authentik expõe métricas na porta 9001 que podem ser coletadas facilmente.
- Atualizações: Mantenha suas imagens Docker atualizadas. Verifique frequentemente o repositório oficial do Authentik no GitHub para novas versões e notas de lançamento, pois atualizações frequentes trazem correções de segurança importantes.
Conclusão
Realizar uma authentik vps instalação é um investimento estratégico na segurança e eficiência da sua infraestrutura. Ao centralizar a autenticação, você simplifica o ciclo de vida do usuário (onboarding/offboarding) e fortalece a postura de segurança contra ataques de phishing e credenciais vazadas.
O Authentik demonstra que soluções open source podem competir com gigantes corporativos em funcionalidade, oferecendo ao mesmo tempo a liberdade de auto-hospedagem (self-hosted). Com este tutorial, você possui as bases para implantar um sistema de Single Sign-On profissional, escalável e sob seu total controle. A partir daqui, a personalização dos fluxos de identidade e a integração com suas aplicações favoráveis são o próximo passo na sua jornada de transformação digital.
Lembre-se: a segurança é um processo contínuo. Revise regularmente os logs de acesso, audite as permissões e mantenha seu sistema atualizado. Agora que você domina a instalação, explore a documentação oficial para avançar em tópicos como autenticação multifator (MFA) avançada e integração com provedores de nuvem.