A gestão de identidades e acessos (IAM) é um dos pilares fundamentais da infraestrutura moderna. Para administradores de sistemas, desenvolvedores e empresas que buscam autonomia digital, a necessidade de proteger recursos críticos sem depender de grandes fornecedores de nuvem se tornou uma prioridade estratégica. Neste tutorial técnico, abordamos a instalação do Authentik em um ambiente VPS, posicionando-o como uma solução robusta de SSO (Single Sign-On) open source e auto-hospedada.
O Authentik surge como uma alternativa poderosa ao Keycloak, oferecendo uma experiência mais leve, moderna e com uma interface de usuário intuitiva, sem abrir mão da profundidade necessária para configurações avançadas de identidade. Diferente de soluções mais simples como Authelia, o Authentik oferece um ecossistema completo que inclui autenticação multifator (MFA), provisionamento automático de usuários e integração profunda com protocolos padrão da indústria como SAML, OIDC e LDAP.
1. Pré-requisitos e Preparação do Ambiente
Antes de iniciar a instalação, é crucial garantir que o servidor VPS esteja preparado para as demandas do container. O Authentik roda em um ambiente contêinerizado utilizando Docker Compose, o que facilita drasticamente o gerenciamento de dependências e atualizações.
Recomendamos o uso de uma distribuição Linux LTS (Long Term Support), como Ubuntu 22.04 ou Debian 12. O servidor deve ter acesso root ou um usuário com privilégios sudo. Para uma instalação básica que suporte dezenas de usuários, recomendamos um mínimo de 2 vCPUs e 2GB de RAM, embora a aplicação seja otimizada para rodar eficientemente em recursos menores.
O primeiro passo é atualizar o sistema operacional e instalar as dependências necessárias para o Docker. Execute os seguintes comandos no terminal do seu servidor:
sudo apt update
sudo apt upgrade -y
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release git -y
Em seguida, adicione a chave oficial do Docker e configure o repositório. A maneira mais padronizada hoje em dia é utilizar o script de conveniência ou adicionar o repositório manualmente. Para garantir estabilidade, adicionamos o repositório oficial:
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
Instale o Docker Engine e o Docker Compose (agora integrado como plugin do Docker):
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
sudo systemctl enable docker
sudo usermod -aG docker $USER
Agora, crie um diretório dedicado para a configuração do Authentik. Isso manterá seus arquivos de configuração isolados e fáceis de backupar:
mkdir ~/authentik && cd ~/authentik
2. Configuração do Docker Compose
O coração da instalação do Authentik é o arquivo docker-compose.yml. Este arquivo define os serviços necessários: o próprio servidor do Authentik, um banco de dados (PostgreSQL) e, opcionalmente, um serviço de cache (Redis). Para esta instalação inicial, focaremos na configuração essencial com PostgreSQL, que é a recomendação oficial para produção.
Crie o arquivo docker-compose.yml no diretório criado:
nano docker-compose.yml
Insira a seguinte configuração. Note as variáveis de ambiente cruciais, especialmente a senha secreta do banco de dados e a chave secreta do Authentik (AUTHENTIK_SECRET_KEY). Nunca compartilhe essas chaves publicamente.:
services:
postgres:
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${PG_PASS:-password_random_gerado}
POSTGRES_USER: ${PG_USER:-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_LOG_LEVEL=info
- AUTHENTIK_REDIS__HOST=redis
- AUTHENTIK_POSTGRESQL__HOST=postgres
- AUTHENTIK_POSTGRESQL__USER=${PG_USER:-authentik}
- AUTHENTIK_POSTGRESQL__PASSWORD=${PG_PASS:-password_random_gerado}
- AUTHENTIK_POSTGRESQL__DATABASE=${PG_DB:-authentik}
# GERE UMA CHAVE SECRETA ÚNICA E SALVE-A SEGURAMENTE
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY:-sua_chave_secreta_super_segura_aqui}
volumes:
- ./media:/media
- ./custom-logs:/var/log/authentik
ports:
- "9000:9000"
depends_on:
- postgres
- redis
worker:
image: ghcr.io/goauthentik/server:2024.x.x
restart: unless-stopped
command: worker
environment:
- AUTHENTIK_LOG_LEVEL=info
- AUTHENTIK_REDIS__HOST=redis
- AUTHENTIK_POSTGRESQL__HOST=postgres
- AUTHENTIK_POSTGRESQL__USER=${PG_USER:-authentik}
- AUTHENTIK_POSTGRESQL__PASSWORD=${PG_PASS:-password_random_gerado}
- AUTHENTIK_POSTGRESQL__DATABASE=${PG_DB:-authentik}
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY:-sua_chave_secreta_super_segura_aqui}
volumes:
- ./media:/media
- ./custom-logs:/var/log/authentik
depends_on:
- postgres
- redis
volumes:
db_data:
Dica de Segurança: Para evitar expor senhas no código, é recomendável criar um arquivo .env na mesma pasta e carregar as variáveis. O Docker Compose lê automaticamente esse arquivo. Crie o arquivo .env com suas credenciais geradas aleatoriamente.
3. Inicialização e Migração do Banco de Dados
Com a configuração salva, inicie os contêineres em modo detached (background):
docker compose up -d
O primeiro início pode levar alguns minutos, pois o sistema precisa baixar as imagens, inicializar o banco de dados e executar as migrações de schema. Você pode acompanhar o progresso dos logs com:
docker compose logs -f server
Quando você vir a mensagem indicando que o servidor está escutando na porta 9000, a instalação base está completa. No entanto, o Authentik precisa de um usuário administrador inicial. Execute o comando para criar esse usuário diretamente no contêiner do worker ou server:
docker compose exec server python manage.py createsuperuser
O sistema solicitará que você insira o nome de usuário, endereço de e-mail e senha. Anote essas credenciais em um local seguro. Com isso, seu serviço de identidade está rodando.
4. Configuração do Nginx como Reverse Proxy
Acessar a interface web diretamente pela porta 9000 é inseguro e não permite o uso correto de tokens de sessão HTTPS. A prática padrão da indústria é colocar um servidor web reverso, como o Nginx, na frente do Authentik.
Instale o Nginx:
sudo apt install nginx -y
Crie um arquivo de configuração no diretório sites-available. Vamos assumir que você tem um domínio (ex: auth.seudominio.com) apontando para o IP do seu VPS.
sudo nano /etc/nginx/sites-available/authentik
Cole a seguinte configuração, ajustando os nomes de domínio:
server {
listen 80;
server_name auth.seudominio.com;
# Redirecionamento obrigatório para HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name auth.seudominio.com;
ssl_certificate /etc/letsencrypt/live/auth.seudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/auth.seudominio.com/privkey.pem;
# Configurações de segurança SSL recomendadas
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://localhost:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Ajustes para WebSockets e buffering se necessário
proxy_read_timeout 86400;
proxy_send_timeout 86400;
}
}
Ative o site, teste a configuração do Nginx e reinicie o serviço:
sudo ln -s /etc/nginx/sites-available/authentik /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Agora, instale o Certbot para garantir seus certificados SSL gratuitos via Let's Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d auth.seudominio.com
Siga as instruções do Certbot. Ele atualizará automaticamente a configuração do Nginx para usar os certificados e forçará o redirecionamento HTTPS.
5. Configuração Inicial da Interface Web
Acesse https://auth.seudominio.com em seu navegador. Você será redirecionado para a tela de login. Utilize as credenciais criadas no passo anterior.
Após o login, você entrará no painel de administração (Admin Interface). A primeira tarefa crítica é configurar o Provider. O Authentik funciona como um "IdP" (Identity Provider). Ele não serve apenas para logar, mas para autenticar outros serviços contra si mesmo.
Navegue até Application Providers e clique em Create. Você verá uma lista de protocolos suportados:
- SAML 2.0: Ideal para aplicações empresariais legacy, ferramentas internas e serviços que exigem conformidade corporativa.
- OIDC (OpenID Connect): O padrão moderno para aplicações web e móveis (SPAs, React, Vue, Next.js).
- LIDP: Para integração com clientes LDAP tradicionais.
Comece criando um Provider do tipo OIDC / OAuth2. Dê um nome à aplicação (ex: "Minha App Web"). O Authentik gerará automaticamente um Client ID e um Client Secret. Copie essas chaves.
Você precisará configurar o Redirect URIs na aplicação que você está protegendo. Se a aplicação estiver em https://app.seudominio.com, adicione esse domínio à lista de redirect URI permitidos no Authentik, ou defina um wildcard se a segurança permitir.
6. Integração com MFA e Fluxos de Autenticação
A grande vantagem do Authentik sobre soluções básicas é a capacidade de criar fluxos de autentação complexos. Vá até Flows > Authentication. Aqui você pode definir que, ao acessar qualquer aplicação protegida, o usuário deve fornecer não apenas senha, mas também um código TOTP (Google Authenticator/Authy) ou uma chave de segurança FIDO2.
Para ativar isso:
- Crie um novo fluxo ou edite o padrão
Authentication: Default. - Adicione a etapa Identification (captura de usuário).
- Adicione a etapa Password Authentication.
- Adicione a etapa Totp Validation.
Isso garante que, mesmo que uma senha seja comprometida, o acesso não autorizado será bloqueado sem o segundo fator. Essa é a implementação prática de um servidor Authelia robusto e escalável.
7. Boas Práticas e Manutenção
Para manter seu ambiente self-hosted SSO seguro e estável, adote as seguintes práticas:
- Backups: O banco de dados PostgreSQL é onde reside toda a sua lógica de identidade. Faça backups regulares do volume
db_data. Scripts simples compg_dumpagendados via cron são suficientes. - Atualizações: O Authentik lança atualizações frequentes. Como está em Docker, a atualização é segura: baixe a nova imagem e reinicie os contêineres. As migrações do banco de dados são executadas automaticamente pelo container
server.
docker compose pull
docker compose up -dworker, pois ele é responsável por processar filas de tarefas, como envio de e-mails de recuperação ou provisionamento.Conclusão: Sua Identidade Digital sob Controle
A instalação do Authentik em uma VPS representa um salto qualitativo na maturidade de segurança da sua infraestrutura. Ao escolher esta keycloak alternativa mais leve e moderna, você ganha agilidade sem sacrificar recursos. A capacidade de gerenciar acesso centralizado, implementar MFA facilmente e integrar-se a qualquer protocolo moderno (OIDC, SAML) torna o Authentik uma ferramenta indispensável para quem leva a gestão de acesso a sério.
Com este tutorial, você estabeleceu as bases para um ecossistema seguro. O próximo passo é começar a proteger suas aplicações internas, ferramentas de desenvolvimento e serviços web, migrando gradualmente o login único para esta nova central de identidade. Lembre-se: segurança é um processo contínuo, e ter o controle total dos seus dados de autenticação é o primeiro passo fundamental.