gemini generated image fmr8jwfmr8jwfmr8

Guia de Instalação: DocuSeal com Podman Compose

O DocuSeal se provou como uma das ferramentas Open Source mais disruptivas para assinatura de documentos e contratos digitais online. Porém, gerenciar essa stack de containers herdando privilégios de root através do Docker clássico adiciona camadas desnecessárias de risco à sua infraestrutura.

Neste artigo, vamos detalhar a estratégia de provisionar a stack completa do DocuSeal rodando em Podman no modo rootless no Arch Linux. O nosso foco principal é manter os privilégios do sistema operacional intactos e isolados, alterando pontualmente o mapeamento das portas para que o serviço coexista sem atritos com outras aplicações de desenvolvimento da sua máquina.

1. O Cenário B2B e o Desenho da Stack

A arquitetura do DocuSeal é ágil, mas exige serviços interdependentes declarados em um arquivo Compose. Nessa topologia gerenciada pelo Podman, trabalhamos com três pilares principais:

  • DocuSeal App: O núcleo da aplicação web, que orquestra e gerencia o fluxo de assinaturas.
  • PostgreSQL: Banco de dados relacional confiável onde residem todas as validações e metadados.
  • Caddy: Servidor web focado em alta performance que atua como proxy reverso automático, lidando com a porta de saída.

2. O Desafio das Portas Rootless e a Estratégia de Isolamento

A filosofia de segurança do Linux é clara: por padrão, usuários comuns (rootless) não podem iniciar aplicações vinculadas a portas abaixo de 1024, como as clássicas HTTP (80) e HTTPS (443), requeridas pelo servidor Caddy. Somado a isso, é provável que a porta padrão da aplicação do DocuSeal (3000) já esteja em conflito com outros projetos locais de Front-end ou APIs no seu ambiente.

A Solução Inteligente (Sem gambiarras no Kernel): Modificar os parâmetros globais via sysctl para forçar o usuário comum a abrir portas baixas seria criar uma falha sistêmica desnecessária. A prática recomendada de DevOps é redirecionar o mapeamento para portas altas (acima de 1024) diretamente no arquivo docker-compose.yml do seu ambiente.

Com essa técnica, a adaptação das portas no Host se comporta da seguinte maneira:

Serviço/ContainerPorta InternaPorta Externa (Host PC)Justificativa Técnica
Aplicação (DocuSeal)30003001Evita colisão com frameworks ou serviços preexistentes.
Tráfego HTTP (Caddy)808081Porta > 1024 nativamente liberada para usuários rootless.
Tráfego HTTPS (Caddy)4438443Porta > 1024 nativamente liberada para usuários rootless.

3. Refatorando o docker-compose.yml

Aplicando o conceito acima, repare que as portas à esquerda dos dois pontos (a porta vista pelo sistema do host) foram alteradas para garantir a execução rootless de forma segura e sem colisão de IP:

services:
  app:
    depends_on:
      postgres:
        condition: service_healthy
    image: docuseal/docuseal:latest
    ports:
      - 3001:3000
    volumes:
      - ./docuseal:/data/docuseal
    environment:
      - FORCE_SSL=${HOST}
      - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/docuseal

  postgres:
    image: postgres:18
    volumes:
      - './pg_data:/var/lib/postgresql/18/docker'
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: docuseal
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  caddy:
    image: caddy:latest
    command: caddy reverse-proxy --from $HOST --to app:3000
    ports:
      - 8081:80
      - 8443:443
      - 8443:443/udp
    volumes:
      - ./caddy:/data/caddy
    environment:
      - HOST=${HOST}

4. Pipeline de Comandos de Execução

No Arch Linux (ou derivados), o Podman não ativa seu socket por padrão. Precisamos ativá-lo atrelado puramente ao seu usuário para orquestração efetiva:

Passo 1: Habilitar o Socket do Podman (Modo Usuário)

systemctl --user enable --now podman.socket

⚠️ Atenção DevOps: Nunca use sudo nesta etapa! O uso do argumento --user cria um canal de comunicação de infraestrutura seguro restrito ao seu próprio nível de permissão local.

Passo 2: Subindo a Stack do DocuSeal

Uma vez validado o mapeamento das portas altas e com o socket escutando, a iniciação do Podman fluirá magicamente sem solicitar senhas do superusuário:

# Faça um reset em estruturas corrompidas, caso existam:
podman compose down

# Coloque os serviços no ar em modo background (Daemon):
podman compose up -d

5. Operação Tática e Economia de RAM

A vantagem principal do Podman frente ao Docker clássico é a eficiência na linha de comando. Para evitar uso indiscriminado de RAM e recursos quando você não precisa emitir contratos, adote essa rotina:

  • Ligar o servidor antes de preparar os contratos:
    podman compose up -d
  • Desligar toda a stack imediatamente após a assinatura:
    podman compose down
  • Monitorar e debugar falhas nos processos em tempo real:
    podman compose logs -f

Veredito Técnico

A adoção dessa arquitetura rootless prova que você não apenas soluciona problemas, mas desenha soluções de alto calibre voltadas à segurança corporativa. Usar o DocuSeal impulsionado pelo Podman garante controle soberano sobre sua hospedagem Open Source, alavancando uma redução agressiva de consumo da sua máquina no modo Stand-by.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *