Depois de já ter alguns serviços rodando na minha VPS, decidi dar o próximo passo: parar de usar apps de terceiros pra controlar minhas finanças e subir minha própria instância do Securo. Mas o que é esse software? O Securo é um gerenciador financeiro pessoal, open-source e self-hosted. Diferente dos apps de finanças tradicionais, ele roda na sua própria infraestrutura, então nenhum dado financeiro seu passa pelas mãos de terceiros. Ele suporta múltiplas contas e moedas, orçamentos, metas e sincronização automática com bancos brasileiros através do Pluggy, permitindo acompanhar gastos e faturas sem depender de serviços externos guardando suas informações.
Pré requisitos:
1- Coolify instalado e devidamente configurado em sua máquina
2- Arquivo docker-compose.prod.yml (obter no github oficial do projeto: https://github.com/securo-finance/securo)
Se você não conhece: o Securo é um gerenciador financeiro pessoal open-source, self-hosted, feito com FastAPI + PostgreSQL no backend e React no frontend. Ele suporta múltiplas contas, múltiplas moedas, orçamentos, metas, e o que mais me interessava, sincronização automática com bancos brasileiros via Pluggy.
No papel, parecia simples: subir o docker-compose.prod.yml no Coolify, configurar as variáveis de ambiente, e pronto. Na prática, tive duas travadas que vale registrar aqui, porque não são coisas óbvias na primeira tentativa.
Deploy inicial: Docker Compose customizado
Ao invés de usar um template pronto, subi o Securo no Coolify colando diretamente o docker-compose.prod.yml do projeto.
No coolify, crie um novo projeto e selecione a opção de deploy Docker Compose:

Essa abordagem dá mais controle, mas também significa que você é responsável por acertar cada variável de ambiente na mão, sem nenhum assistente guiando o processo. É importante redefinir a variavel FRONTEND_URL pela URL do frontend gerada no seu Coolify.
Minha primeira tentativa foi subir a aplicação sem as variáveis específicas do Pluggy configuradas, só pra confirmar que a base (backend, banco de dados, frontend) estava de pé. Funcionou: o Securo abriu, dava pra criar conta e usar as funcionalidades básicas.
Adicionando as variáveis do Pluggy
Com a base funcionando, voltei no docker-compose.prod.yml e adicionei as variáveis de ambiente relacionadas à integração com o Pluggy (as credenciais de API que você gera lá no painel de desenvolvedor deles). Criar a conta no Pluggy e conseguir as chaves não teve segredo, é um processo direto pelo próprio site.
Depois de colar as variáveis certas no Coolify, fiz o redeploy da aplicação e ativei a integração dentro das configurações do Securo. Até aqui, tudo tranquilo.
O pulo do gato: "Meu Pluggy" em vez do banco direto
Foi na hora de sincronizar minha conta bancária de verdade que travei, e por um motivo nada óbvio.
Na tela de integração do Securo, os bancos brasileiros aparecem normalmente numa listagem (Nubank, Itaú, e por aí vai). O instinto natural é clicar direto no seu banco pra iniciar a conexão. Só que isso não funciona.
O fluxo correto é: em vez de selecionar o banco diretamente na lista, você precisa selecionar a opção "Meu Pluggy". É só a partir dali que o fluxo de conexão de verdade é iniciado, e aí sim você consegue linkar sua conta bancária através do Pluggy.
Não tem nada de errado acontecendo quando você clica no banco direto, ele simplesmente não segue o fluxo esperado. Isso me custou um tempo tentando entender se era erro de configuração, chave de API errada, ou bug, quando na verdade era só um detalhe de navegação na interface que não estava claro.
A fatura do cartão não batia com o Securo
Depois de tudo sincronizado, notei outro problema: a fatura do cartão de crédito no aplicativo do banco, no celular, não batia com o valor exibido no Securo.
O motivo é que o sistema identifica algumas transações como transferências e as remove do cálculo por algum motivo. A transação é ocultada do somatório quando sua categoria possui a flag "treat_as_transfer": true, ou quando existe um identificador de pareamento cruzado no campo "transfer_pair_id". Cheguei a essas informações analisando, com ajuda de IA, as respostas das requisições capturadas no console do navegador, e comparando com a fatura atual exportada pelo aplicativo do cartão de crédito.
Solução: altere a categoria de transferência atribuída automaticamente na compra para qualquer outra categoria. Quando for uma transferência vinculada (não sei o motivo do vínculo ser criado automaticamente), edite a transação e desfaça o link clicando em "Unlink Transfer". Dessa forma, seus dados no Securo ficam 100% compatíveis com o aplicativo do banco.
Resumindo
Se você for subir o Securo self-hosted com sincronização via Pluggy, o processo geral é tranquilo. A real dificuldade não está no deploy em si, mas em detalhes específicos de integração que só aparecem na prática:
- Suba a base do Securo primeiro (sem Pluggy), confirme que está tudo de pé
- Adicione as variáveis de ambiente do Pluggy no
docker-compose.prod.ymle faça o redeploy - Ative a integração dentro do Securo
- Na hora de sincronizar: não clique direto no seu banco, vá em "Meu Pluggy" primeiro
- Se a fatura do cartão não bater com o valor real, verifique transações marcadas como transferência e desvincule ou recategorize as que não deveriam estar assim
Esses pontos sozinhos já teriam me poupado uns bons minutos de dúvida se eu tivesse lido em algum lugar antes. Espero que isso poupe o seu tempo também.