Instalação do Authentik em VPS: SSO Open Source

11 min de leitura Segurança e Identidade
Instalação do Authentik em VPS: SSO Open Source

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:

  1. Crie um novo fluxo ou edite o padrão Authentication: Default.
  2. Adicione a etapa Identification (captura de usuário).
  3. Adicione a etapa Password Authentication.
  4. 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 com pg_dump agendados 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 -d
  • Monitoramento: Ative o envio de logs para um sistema centralizado se possível. Verifique regularmente os logs de erro do contêiner worker, 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.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000