Ir direto ao conteúdo
English

Seções

English

Vitória, Espírito Santo, Brasil

Um laboratório de uma pessoa só, com uptime.

Firmware de hardware wallet, sistemas de gestão para o setor público e infraestrutura que roda em servidor próprio. Tudo entra em produção pelo mesmo caminho: push na master, o CI testa, o webhook redeploya. Ninguém abre SSH às duas da manhã.

Isotipo do Self-Labs energizando trilha por trilha

Leitura

1580 commits
em 32 repositórios, públicos e privados
17 PRs aceitos
em projetos de outras pessoas
6 em produção
sistemas no ar em selflabs.org
14 meses
de operação contínua e rastreável

Contados pela API do GitHub em 14 de setembro de 2026, não estimados. Atualizam sozinhos toda segunda.

LAB O que é o Self-Labs

O "self" é literal

Self-hosted, self-custody, feito por conta própria. Nenhum banco de dados gerenciado sem necessidade, nenhum deploy que dependa de alguém logar no servidor, nenhuma chave privada dentro de uma máquina que fala com a internet.

O que existe aqui é software que já quebrou em produção, foi consertado e continua rodando. Firmware assinado de hardware wallet Bitcoin. Uma loja que apaga os dados do comprador 72 horas depois da entrega. Um sistema de efetivo com cerca de 500 militares dentro. Imagens Docker que se reconstroem sozinhas todo domingo e não gastam runner quando nada mudou.

Quando algo deu errado, está escrito no repositório que deu errado, com data e referência de arquivo. Isso não é humildade, é rastreabilidade.

MET Método

Cinco coisas que se repetem em todo projeto

Não são princípios de parede. Cada um aparece no código de pelo menos três projetos, e os que servem de prova estão listados embaixo.

  1. GitOps sem passo manual, em hardware próprio

    O caminho é sempre o mesmo: push na master, o CI testa e constrói a imagem, o webhook do Portainer redeploya. No CI da Wallet Store o job de deploy falha alto em qualquer HTTP fora do 2xx. Build ARM64 acontece em runner nativo, nunca em emulação, porque o alvo real é um Orange Pi 5 ou uma VPS Ampere.

    Prova Wallet StoreSoluções DIYcateim/cupsALFERES

  2. Verificação em vez de confiança

    A loja e o rastreador de carteira operam apenas com xpub watch-only e derivam cada endereço localmente. A loja vai além: uma checagem roda no entrypoint, antes do servidor de aplicação, e recusa subir se as chaves configuradas derivarem um endereço diferente do esperado. Um xpub trocado por invasor não vira pagamento desviado em silêncio.

    Prova Wallet StoreCrypto TrackerJade DIY

  3. Privacidade e autorização em código executável

    Política em página de texto não protege ninguém. Um comando agendado destrói os dados pessoais do comprador 72 horas após a entrega. No ALFERES, administrar e comandar são dois eixos que nunca se misturam, e o escopo é aplicado em SQL com CTE recursiva sobre a subordinação, não na tela. No Escala e Folgas a autorização mora no app_metadata do token, porque o user_metadata é gravável pelo próprio usuário.

    Prova Wallet StoreALFERESEscala e FolgasAtlas Logistics

  4. Toda integração externa falha um dia

    Preço tem cascata de três fontes com circuit breaker. O saldo on-chain é lido de um pool de três servidores Electrum. O monitor do portal WiFi só declara a internet caída se três alvos independentes falharem, e ainda espera três ciclos antes de acordar o administrador, porque soluço de rede não é queda.

    Prova Crypto TrackerWallet StoreCaptive Portalai-usagebar-win

  5. Diagnóstico até a causa raiz, inclusive no hardware

    Na placa TTGO T-Display o app da carteira travava o botão de Boot. Em vez de aceitar a gambiarra de driver, o rastreamento foi até o circuito: o sinal RTS do conversor USB passa por um resistor de 10k até a base de um transistor, que puxa o GPIO0 para o chão. A correção troca o resistor por um capacitor de 100nF, convertendo acoplamento DC em AC. Bug de software resolvido no hardware.

    Prova Jade DIYcateim/cupsCaptive PortalPMES

VIT Em destaque

Seis que valem a leitura

Escolhidos pelo que provam tecnicamente, não pelo tamanho. A nota de campo em cada um é o achado que sustenta o projeto.

Produto próprio em produção

Wallet Store

Vende hardware wallets DIY montadas à mão para quem compra autocustódia e não quer deixar CPF, endereço e e-mail guardados para sempre. Não pede cadastro, aceita Pix e Bitcoin, e apaga os dados pessoais do comprador cerca de 72 horas depois da entrega.

Nota de campo

Nenhuma chave privada toca o servidor: a loja carrega só xpub watch-only e deriva um endereço novo por venda com descriptor RANGED e .derive(index), porque no embit chamar .script_pubkey() sem derivar devolve sempre o /0/0. O entrypoint roda o check_depix antes do gunicorn e recusa subir a aplicação se o xpub configurado derivar um endereço diferente do esperado, então xpub trocado por invasor vira deploy quebrado em vez de pagamento desviado em silêncio. Na Liquid, a blinding key sai por endereço via SLIP-77, que é HMAC-SHA256 da master blinding key sobre o scriptPubKey. E o comando reaper destrói a PII 72 horas depois da entrega, o que põe a LGPD no cron em vez do papel.

  • Django 5
  • React 18 + Vite
  • PostgreSQL 15
  • embit
  • Nova DAO (Pix em DePix)
  • Melhor Envio
  • Docker + Portainer
  • GitHub Actions (runner ARM64)
  • Cloudflare Tunnel

repositório fechado Abrir serviço

Firmware e Bitcoin ativo

Jade DIY

Entrega o firmware Blockstream Jade compilado e assinado com Secure Boot para placas ESP32 de prateleira, junto com os tutoriais em português que fazem essa placa virar uma hardware wallet Bitcoin que funciona de verdade no Windows, no Android e no iOS. Quem monta a própria carteira não fica sem binário confiável nem sem documentação.

Nota de campo

O firmware oficial não se comporta numa T-Display com CH9102F: abrir a serial pelo Blockstream Green ou pelo SideSwap trava o GPIO0 em nível baixo e mata o botão de Boot. Marcar Disable ModemHandShake no driver resolve até o primeiro app que sobrescreve a configuração, então a resposta tinha que vir do circuito: o RTS sai do CH9102F, passa pelo resistor R19 de 10k e chega na base do transistor Q2, cujo coletor puxa o GPIO0, e o driver moderno segura o RTS em nível DC constante, saturando essa base para sempre. Trocar o R19 por um capacitor cerâmico de 100nF SMD 0603 converte o acoplamento de DC para AC: o nível fixo é bloqueado e os pulsos rápidos de reset e de boot continuam passando. Bug de software resolvido no ferro de solda. As chaves .pem de Secure Boot são a primeira linha do .gitignore e nunca foram commitadas, porque perder a chave inutiliza para sempre toda placa já travada com ela.

  • ESP-IDF 5.4 / 5.5.4
  • ESP32 e ESP32-S3
  • LILYGO T-Display e Waveshare S3 Touch LCD 2
  • Secure Boot V1 e V2
  • Batch script Windows
  • esp-web-tools (Web Serial)
  • GitHub Actions

CaTeIM/ Ver código

Setor público em produção

ALFERES

Junta num sistema só o que a Seção P1 de uma unidade da Polícia Militar do Espírito Santo mantinha em planilhas do Google costuradas com Apps Script: efetivo, dispensas, concessões, férias, saúde, conceito, movimentações e a geração das notas. Entrou em produção no 3º CPOR, com cerca de 500 militares e 20 usuários simultâneos no pico, e o cadastro de unidades já cobre o estado inteiro.

Nota de campo

O controle de acesso anda em dois eixos que nunca se misturam: administrar é escrever e segue unidade_administradora_id; comandar é ler consolidado e segue a subordinação, percorrida por CTE recursiva sobre unidade_pai_id. Juntar os dois entregaria escrita sobre CPF e dado de saúde de batalhões inteiros a quem só precisa olhar totais, e dado de saúde é categoria especial na LGPD. O filtro sai em SQL, não na tela: esconder o botão é cortesia, quem barra é a cláusula. No mesmo espírito, o runner de migrations roda no boot com pg_advisory_xact_lock e checksum sha256 por arquivo, então editar uma migration já aplicada faz o servidor se recusar a subir em vez de divergir em silêncio.

  • Node.js 26 em ESM puro
  • node:http com roteador próprio
  • PostgreSQL 18
  • driver postgres, sem ORM
  • esbuild
  • JavaScript vanilla no frontend
  • Docker + Portainer (GitOps)
  • Caddy
  • Cloudflare Tunnel

repositório fechado Abrir serviço

Produto próprio em produção

Radar de Promo

Captura promoção crua nos canais que vigia, reescreve o texto com IA, troca o link nu por link de afiliado oficial e dispara para uma rede de grupos de WhatsApp e um canal de Telegram, sem ninguém no meio. Quando um grupo bate o teto de membros, o próximo é criado e o convite que já está circulando passa a apontar para ele.

Nota de campo

Nenhuma API da Meta publica figurinha de link no Story, então um Puppeteer headful sob Xvfb dirige o Meta Business Suite já logado e publica no Instagram e no Facebook de uma vez. O sticker certo só existe em Editar > Figurinhas > Link, porque o botão 'Adicionar link' ao lado é o swipe-up, que a própria Meta avisa não valer para o Instagram; e o container dele mede 0x0, então a caixa real precisa ser reconstruída a partir das três alças. Depois do 'Compartilhar' a página navega e destrói o contexto: o erro 'Execution context was destroyed' é o sinal de sucesso, não de falha. Onde deu para matar o browser, matou: a Amazon virou getShortUrl por HTTP com o cookie do painel de Associados e o Mercado Livre virou createLink, os dois sem Chromium.

  • TypeScript
  • Fastify 5
  • Drizzle ORM
  • PostgreSQL 15
  • Evolution GO
  • GramJS
  • Puppeteer
  • Satori + sharp
  • Gemini

repositório fechado Abrir serviço

Firmware e Bitcoin em produção

Crypto Tracker

Acompanha preço médio, lucro não realizado e saldo on-chain de Bitcoin, Liquid Bitcoin e DePix lendo a blockchain direto por xpub watch-only, num Orange Pi 5 em casa. Nenhuma chave privada entra, nenhum endereço sai para app de terceiro, e transferência entre duas carteiras suas não conta como compra nem como venda.

Nota de campo

Para Bitcoin não há explorador proprietário no caminho: o backend fala Electrum JSON-RPC sobre SSL contra um pool de três servidores, converte o scriptPubKey em scripthash no formato Electrum e faz o parse da raw transaction localmente com embit. No Liquid os endereços confidenciais saem do descriptor via SLIP77 e o unblinding acontece na própria máquina, com as requisições em round-robin entre liquid.network e blockstream.info. A deduplicação é por carteira, com unicidade em (wallet, txid), então o mesmo txid vive nas duas pontas de uma transferência interna sem que nenhum lado seja descartado, e a flag is_internal deixa esses valores neutros no investido e no P&L. O preço tem circuit breaker de verdade: três falhas seguidas da Binance caem para a AwesomeAPI, com cache Redis de 30 segundos e um último valor conhecido de uma hora para emergência.

  • Django REST Framework
  • Python 3.12
  • React 18
  • PostgreSQL 15
  • Redis 7
  • embit
  • Electrum JSON-RPC
  • Esplora API
  • Orange Pi 5

CaTeIM/ repositório fechado Abrir serviço

Aberto ativo

DIY na Prática

Reúne 27 guias em português de self-hosting e automação residencial, do Portainer no Debian ao Home Assistant, cada um com a stack Docker pronta para colar no Portainer. Nasceu de um incômodo prático: parar de refazer a mesma pesquisa toda vez que um serviço precisa ser reinstalado.

Nota de campo

Não é um amontoado de tutoriais. A convenção está formalizada no CLAUDE.md e as 18 stacks obedecem a ela: restart unless-stopped em vez de always, no-new-privileges:true, bind mount em /srv/<serviço> no lugar de volume nomeado, segredo só por interpolação, TZ America/Sao_Paulo, healthcheck no banco com depends_on condition service_healthy e um banco por stack em vez de um Postgres compartilhado. Os guias documentam a armadilha que de fato quebra a instalação: criar as pastas de /srv por SSH antes de subir a stack, senão o Docker cria como root e o container que roda sem root não escreve. A regra do Cloudflare Tunnel é igualmente específica, porque o cloudflared roda bare metal no host e não faz parte da stack: a Cloudflare termina o TLS e o container serve HTTP puro, então a variável de URL pública aponta para https enquanto o protocolo interno continua http. O guia mais denso é o de backup da Orange Pi 5, que cobre justamente o que o Timeshift não pega, o bootloader no SPI NOR e os setores brutos do NVMe, em quatro cenários de desastre.

  • Docker Compose
  • Portainer
  • Cloudflare Tunnel e Zero Trust
  • Caddy (forward-auth)
  • Authelia + lldap
  • Home Assistant, Mosquitto, Node-RED, ESPHome
  • Tasmota em ESP8266 e ESP32
  • Forgejo + Forgejo Actions
  • Debian e Orange Pi 5 (ARM64)

CaTeIM/ Abrir serviço

ARQ Portfólio completo

Projetos

De firmware em C rodando em ESP32 até imagem Docker multi-arquitetura. Repositórios privados aparecem sem link, porque o código é de cliente ou tem chave dentro.

20 projetos

Produto próprio em produção

Wallet Store

Vende hardware wallets DIY montadas à mão para quem compra autocustódia e não quer deixar CPF, endereço e e-mail guardados para sempre. Não pede cadastro, aceita Pix e Bitcoin, e apaga os dados pessoais do comprador cerca de 72 horas depois da entrega.

  • Django 5
  • React 18 + Vite
  • PostgreSQL 15
  • embit
  • +5

repositório fechado Abrir serviço

Firmware e Bitcoin ativo

Jade DIY

Entrega o firmware Blockstream Jade compilado e assinado com Secure Boot para placas ESP32 de prateleira, junto com os tutoriais em português que fazem essa placa virar uma hardware wallet Bitcoin que funciona de verdade no Windows, no Android e no iOS. Quem monta a própria carteira não fica sem binário confiável nem sem documentação.

  • ESP-IDF 5.4 / 5.5.4
  • ESP32 e ESP32-S3
  • LILYGO T-Display e Waveshare S3 Touch LCD 2
  • Secure Boot V1 e V2
  • +3

CaTeIM/ Ver código

Setor público em produção

ALFERES

Junta num sistema só o que a Seção P1 de uma unidade da Polícia Militar do Espírito Santo mantinha em planilhas do Google costuradas com Apps Script: efetivo, dispensas, concessões, férias, saúde, conceito, movimentações e a geração das notas. Entrou em produção no 3º CPOR, com cerca de 500 militares e 20 usuários simultâneos no pico, e o cadastro de unidades já cobre o estado inteiro.

  • Node.js 26 em ESM puro
  • node:http com roteador próprio
  • PostgreSQL 18
  • driver postgres, sem ORM
  • +5

repositório fechado Abrir serviço

Produto próprio em produção

Radar de Promo

Captura promoção crua nos canais que vigia, reescreve o texto com IA, troca o link nu por link de afiliado oficial e dispara para uma rede de grupos de WhatsApp e um canal de Telegram, sem ninguém no meio. Quando um grupo bate o teto de membros, o próximo é criado e o convite que já está circulando passa a apontar para ele.

  • TypeScript
  • Fastify 5
  • Drizzle ORM
  • PostgreSQL 15
  • +5

repositório fechado Abrir serviço

Firmware e Bitcoin em produção

Crypto Tracker

Acompanha preço médio, lucro não realizado e saldo on-chain de Bitcoin, Liquid Bitcoin e DePix lendo a blockchain direto por xpub watch-only, num Orange Pi 5 em casa. Nenhuma chave privada entra, nenhum endereço sai para app de terceiro, e transferência entre duas carteiras suas não conta como compra nem como venda.

  • Django REST Framework
  • Python 3.12
  • React 18
  • PostgreSQL 15
  • +5

CaTeIM/ repositório fechado Abrir serviço

Aberto ativo

DIY na Prática

Reúne 27 guias em português de self-hosting e automação residencial, do Portainer no Debian ao Home Assistant, cada um com a stack Docker pronta para colar no Portainer. Nasceu de um incômodo prático: parar de refazer a mesma pesquisa toda vez que um serviço precisa ser reinstalado.

  • Docker Compose
  • Portainer
  • Cloudflare Tunnel e Zero Trust
  • Caddy (forward-auth)
  • +5

CaTeIM/ Abrir serviço

Produto próprio estável, sem commits recentes

Atlas Logistics

Esconde o endereço real de quem envia e de quem recebe uma encomenda, quebrando a entrega em saltos entre intermediários, cada salto com etiqueta e código próprios. A loja despacha para o primeiro peer e o endereço final do cliente só é decifrado no último salto. Para loja e comprador que não querem o próprio endereço circulando por transportadora e marketplace.

  • Node.js
  • Express 4
  • PostgreSQL 15
  • AES-256-CBC
  • +5

atlasdao/ repositório fechado

Firmware e Bitcoin em produção

Jade DIY Flasher

Grava o firmware da Jade DIY direto do navegador: a pessoa escolhe a placa, escolhe a versão e clica uma vez. Não pede driver, nem Python, nem ESP-IDF, nem linha de comando. Quem comprou uma carteira montada consegue atualizar sozinho, em vez de deixar a placa parada num firmware velho.

  • TypeScript
  • esptool-js
  • Web Serial API
  • Rollup
  • +4

CaTeIM/ Abrir serviço

Setor público em produção

PMES Escalas e ISEO

Monta a escala mensal, a diária e a ISEO de uma unidade da PMES e imprime tudo em papel timbrado A4, do jeito que o comando assina. O efetivo chega pelo número funcional, puxado dos sistemas do governo do Estado, em vez de ser redigitado uma vez em cada uma das três telas.

  • Node.js + Express 4
  • PostgreSQL 16
  • JWT + bcryptjs
  • helmet + express-rate-limit
  • +5

repositório fechado Abrir serviço

Infraestrutura ativo

cateim/cups

Transforma uma impressora USB antiga em impressora de rede com AirPrint usando um container CUPS que se reconstrói sozinho todo domingo, sempre na versão de CUPS que a base publicou. Roda igual num PC, num Raspberry Pi ou num Orange Pi, porque a imagem é multi-arquitetura de verdade.

  • Docker multi-arch (amd64 + arm64)
  • Ubuntu Rolling e Debian 13 Trixie
  • CUPS, printer-driver-all, hplip
  • Avahi (AirPrint e Bonjour)
  • +5

CaTeIM/ Abrir serviço

Infraestrutura em produção

Captive Portal WiFi

Vende e controla acesso WiFi por voucher rodando dentro do próprio roteador OpenWrt, sem servidor RADIUS, sem PC ligado e sem ninguém de plantão entregando senha na mão. O cliente escolhe o plano no Telegram, paga por Pix e recebe o código sozinho, inclusive de madrugada. Feito para alojamento, pousada e evento, onde o hóspede troca toda semana.

  • OpenWrt 24.10.4 (Xiaomi AX3000T)
  • openNDS
  • PHP 8 (CGI sob uhttpd)
  • SQLite3 com WAL
  • +4

repositório fechado

Cliente entregue

Prospecção Jordão

Dá ao vendedor externo um app de celular que acha marmorarias por cidade e CNAE, traça a rota de carro até cada uma e registra o contato feito. Substitui a planilha com o Google Maps aberto em outra aba, onde ninguém sabia quem já tinha sido visitado nem a que distância a empresa ficava da base.

  • JavaScript + JSDoc
  • esbuild
  • PWA
  • Cloudflare Pages Functions
  • +5

repositório fechado Abrir serviço

Aberto ativo

ai-usagebar-win

Mostra na bandeja do Windows quanto da cota do Claude, do Codex e dos outros planos de IA você já gastou, antes de o agente parar de responder no meio da tarefa. Já existia um medidor para isso, o CLI Rust ai-usagebar, mas ele nasceu para Waybar, GNOME e macOS. Aqui é um único .exe que roda em máquina limpa, sem instalar Rust nem rodar cargo install.

  • C#
  • .NET 8
  • WPF
  • WPF-UI 4.3.0
  • +4

Ver código

Produto próprio pré-lançamento

CriarViral

Recebe alguns clipes de gancho, corpo e CTA e devolve dezenas de vídeos curtos prontos para postar, um por combinação. É para criador e afiliado que precisa de volume diário e não vai montar cada combinação na mão.

  • Next.js 16
  • TypeScript
  • PostgreSQL + Prisma 7
  • Redis + BullMQ
  • +5

repositório fechado

Setor público em produção

Escala e Folgas

Mostra num calendário a escala 12x24 e 12x72 de cada equipe e deixa o próprio policial clicar no dia para marcar a folga. Cada marcação guarda quem criou e quem alterou, no lugar da negociação solta no grupo de mensagem. Cinco equipes giram no mesmo ciclo fixo e nenhuma enxerga nem mexe na folga da outra.

  • React 19
  • Vite 8
  • react-big-calendar
  • date-fns
  • +3

repositório fechado

Infraestrutura ativo

cateim/stirling-pdf

Gera toda semana uma imagem Docker 100% MIT do Stirling-PDF, com as mais de 50 ferramentas de PDF e sem o teto de 5 usuários da edição paga. É para quem faz self-hosting e quer juntar, dividir, comprimir, assinar e passar OCR nos próprios arquivos, com a autenticação empurrada para a borda.

  • GitHub Actions
  • Docker buildx (amd64 + arm64)
  • ubuntu-24.04-arm runners
  • Docker Hub
  • +5

Ver código

Cliente entregue

Stack helpgas

Coloca um sistema legado em ScriptCase e SQL Server 2019 dentro de containers, com deploy pelo Portainer direto do Git, num servidor onde ninguém entra por SSH no dia a dia. Junto vem a rotina de backup que faltava, terminando num SSD externo montado só na hora de gravar.

  • ScriptCase
  • SQL Server 2019 Express
  • PHP 8.2 + Apache
  • msodbcsql18
  • +5

repositório fechado

Infraestrutura em produção

Home Assistant da casa

Automação residencial inteira rodando em servidor próprio: Home Assistant como cérebro, Mosquitto como broker MQTT, ESPHome para as placas ESP32 e Node-RED para os fluxos que ficam ilegíveis em YAML. Os dados moram em disco local, o deploy é uma stack do Portainer e nenhum comando depende de nuvem de fabricante. Cada automação vira um guia com o YAML inteiro, não trechos, porque o critério para entrar é ter funcionado tempo suficiente para confiar.

  • Home Assistant Container
  • Docker via Portainer Stack
  • Mosquitto (MQTT)
  • Node-RED
  • +4

repositório fechado

Firmware e Bitcoin ativo

Origo

Projeto do Oderico, não meu: corrijo bugs com acesso de escrita ao repositório. É um firmware que gera seed BIP39 a partir dos dados, moedas ou cartas que o próprio dono jogou, numa placa sem rádio, sem disco e sem gerador de números aleatórios no caminho da seed.

  • C
  • ESP-IDF 5.5.4
  • ESP32 T-Display
  • libwally-core
  • +2

oroderico/ Ver código

Aberto ativo

ai-memory

Dá memória de longo prazo a agentes de código: você fecha o Claude Code no meio da tarefa, abre o Codex na mesma pasta e continua sem reexplicar arquitetura, tentativas que falharam e questões em aberto. O projeto é de Fabio Akita; o que entra aqui são três commits meus, aceitos no upstream, que consertam o caminho do Windows.

  • Rust (edition 2024)
  • Cargo workspace, 10 crates
  • SQLite (rusqlite + refinery)
  • axum
  • +5

akitaonrails/ Ver código

CI Como chega em produção

Do push ao ar, sem ninguém no meio

Desenvolvo no Windows, apenas na IDE. Nenhum serviço de servidor roda nesta máquina. Daqui em diante é tudo automático.

  1. 01 push

    Commit na master do GitHub ou do Forgejo próprio.

  2. 02 CI

    Testes, typecheck e build da imagem em runner nativo da arquitetura alvo.

  3. 03 registry

    Imagem publicada com tag CalVer no padrão ano.mês.revisão.

  4. 04 webhook

    O stack do Portainer recebe o gatilho e puxa a versão nova.

  5. 05 no ar

    Cloudflare Tunnel conecta de saída. Nenhuma porta aberta no host.

Esta própria página segue o mesmo caminho: push na master, GitHub Actions builda o site e o Wrangler publica no apex.

NÃO O que eu não faço

A lista curta importa mais que a longa

  • Não provisiono serviço gerenciado sem necessidade

    Banco, fila e storage rodam em servidor próprio por padrão. Quando um serviço de terceiro entra, a decisão fica escrita no repositório com o motivo.

  • Não entrego deploy que precise de intervenção

    Se subir a versão nova exige alguém abrindo SSH, o trabalho não está terminado. Redeploy é webhook, sempre.

  • Não coloco chave privada no servidor

    Sistema que lida com Bitcoin opera com xpub watch-only. A assinatura acontece no dispositivo do dono, fora da máquina que fala com a internet.

  • Não prometo o que ainda não roda

    Projeto sem commit há meses aparece aqui marcado como estável e sem commits recentes, não como ativo. O que está parado está escrito que está.

FIM Contato

Se tiver um problema real para resolver, me escreva

Firmware embarcado, sistema web que precisa aguentar produção, infraestrutura self-hosted que ninguém quer manter. Responda o que precisa e eu digo se é para mim ou não.