ExploreTrendingAnalytics
Nostr Archives
ExploreTrendingAnalytics

Fajre

692db6…fb1750
16Followers173Following4Notes

Se eu sumir dos relays públicos, a verdade continua aqui: ws://oxz6arhmx7dxrgxveqccafilm4lbkaqegxvgrufw4tbzrdkg22bnt7id.onion

4 total
Fajre6d ago
Boa noite guys. Gostaria de compartilhar um pedaco dos ultimos dias do meu JOURNAL.md do meu Homelab. (leia de tras pra frente os dias). --- ## 2026-03-10 **Status:** ✅ Sucesso (Integração End-to-End). **Foco:** Implementação do Client (Sparrow Wallet), Supply Chain Security e Hardening de Privacidade. ### A Batalha do Supply Chain (Confiança Matemática) - **Risco:** Instalar softwares financeiros (Carteiras) via repositórios mantidos por terceiros (AUR por exemplo) abre vetor para injeção de malware roubador de chaves. - **Defesa (PGP):** Antes da instalação, a chave pública do desenvolvedor principal (Craig Raw) foi importada via Keybase e seu *fingerprint* validado (`D4D0 D320 2FC0 6849 A257 B38D E946 1833 4C67 4B40`). O comando `yay` foi instruído a validar o `.tar.gz` assinado antes da descompactação. ### Hardening de Privacidade (A Armadilha do Mempool.space) - **O Problema:** Por padrão, o Sparrow Wallet "vaza" a identidade de rede. Ele usa o `mempool.space` público para consultar o preço das taxas de rede e visualizar blocos, vinculando o IP físico da operadora (ISP) ao interesse na blockchain. - **Solução:** Nas configurações gerais do Sparrow (`File -> Preferences`), a fonte de taxas (Fee Rates Source) foi alterada para `Server` (apontando as consultas para a própria VM `OrangeShadow`). O *Block Explorer* foi silenciado. Consultas FIAT (Coingecko) foram mantidas por não transmitirem dados criptográficos de conta. ### Conexão e O "Aperto de Mão" - A conexão `Private Electrum` foi estabelecida sem TLS (visto que a rede local VLAN 20 -> VLAN 30 já é um conduíte confiável) na porta `50001`. - **Telemetria:** O Sparrow retornou `Batched RPC enabled` e conectou ao `electrs 0.11.1`. Os blocos da mempool exibidos na aba de envio agora são alimentados em tempo real pelo meu próprio hardware. ### Criação da Sandbox (Arquitetura de Cofres) - **Escala de Paranoia:** Foi definido que a carteira criada hoje (Software Wallet nativa) operará como uma **Sandbox (Hot Wallet)** para aprendizado. Em cenários de produção futuros para reserva de valor, será exigida a implementação de Airgapped Cold Storage (ex: SeedSigner) ou uso amnésico via Tails OS. - **Protocolo de Criação:** A semente BIP39 de 24 palavras foi gerada off-screen e registrada/armazenada de forma segura. - **Resultado Final:** A carteira importou o `xpub` (Master Public Key) e o nó `OrangeShadow` varreu os 750GB de disco em milissegundos via índice RocksDB, confirmando a inexistência histórica de UTXOs atrelados à chave. Soberania alcançada. ## 2026-03-09 **Status:** ✅ Sucesso (Nó Público Onion e Indexação em Andamento). **Foco:** Abertura do Perímetro Tor (Inbound) e Engenharia de Compilação do Electrs (Fase 2). ### O Risco do "Erro Fatal do GitHub" (Segurança P2P) - **O Dilema:** Para o nó do Bitcoin ser um cidadão útil e validar/enviar blocos, ele precisa aceitar conexões (Inbound). O padrão da comunidade é definir o parâmetro `externalip=xyz.onion` no `bitcoin.conf`. - **A Falha de OPSEC:** Como minha infraestrutura segue o paradigma *Infrastructure as Code* (GitOps), commitar um arquivo com o endereço onion exato no GitHub vincularia imediatamente minha identidade digital (DevOps) ao nó na Darknet, quebrando o princípio básico de anonimato. - **A Solução (Tor Control API):** - Habilitei as diretrizes `ControlPort 9051` e `CookieAuthentication 1` no `/etc/tor/torrc`. - Inseri o usuário do sistema (`fajre`) no grupo `debian-tor` para permitir a leitura do cookie criptográfico. - No `bitcoin.conf`, apliquei `listen=1`, `listenonion=1` e `discover=1`. - **Resultado:** O Bitcoin Core conversou com o Daemon do Tor, negociou a criação de um *Hidden Service* em background, e publicou-se na rede. O comando `bitcoin-cli getnetworkinfo` retornou o endereço `.onion` na porta 8333 com sucesso absoluto. Zero rastros no Git. ### Compilação (Electrs vs Debian Trixie) - **Necessidade:** O Bitcoin Core armazena blocos, mas não é um banco de dados pesquisável por endereços. O Electrs (Rust) atua como tradutor para a carteira Sparrow. A exigência de segurança (Supply Chain) forçou a compilação local (sem binários pré-compilados de terceiros). - **Incidente 1 (Crash de API JSON):** A versão estável (tag `v0.10.4`) do Electrs compilou perfeitamente em ~8 minutos. Porém, ao iniciar, entrou em *Crash Loop* (Erro: `JSON error: invalid type: sequence, expected a string`). - *Causa Raiz:* O Bitcoin `v28.1` (Bleeding Edge) alterou a estrutura da resposta do RPC `localaddresses` de string para array (sequence). O Electrs legado quebrou. - *Roll-Forward:* Mudei a branch git do Electrs para a `master` para pegar as atualizações de API mais recentes. - **Incidente 2 (O labirinto do Clang/LLVM):** Durante a recompilação da `master`, o script falhou criticamente no pacote `rust-rocksdb` (Erro: `couldn't find any valid shared libraries matching: ['libclang.so']`). - *Causa Raiz:* O script do Rust não encontrou o caminho da biblioteca dinâmica C++ no Debian Testing (que a instala como `libclang-19-dev` em diretórios específicos versionados). - *Solução:* Instalação forçada do pacote base e injeção do caminho correto via variável de ambiente antes da compilação: `export LIBCLANG_PATH=$(llvm-config-19 --libdir)`. - **Vitória:** O binário otimizado da versão `0.11.1` foi gerado (3m 18s). - **Ignição:** O serviço `electrs.service` foi iniciado (com colete de força `MemoryMax=10G`). Os logs mostraram que a comunicação com o Bitcoin via `.cookie` funcionou perfeitamente e o Electrs começou a engolir os blocos da rede a velocidades extremas. A indexação completa no SSD SATA vai durar a madrugada. ## 2026-03-08 (Parte 2) **Status:** ✅ Sucesso (IBD Concluído e Camuflagem). **Foco:** Finalização da Sincronização do Bitcoin e Transição para a Rede Tor. ### A Matemática do Sucesso (Benchmark do IBD) - O *Initial Block Download* (IBD) processou toda a história do Bitcoin (de 2009 até o bloco 939.920) em aproximadamente **21 horas**. - **Fatores de Êxito:** A estratégia de utilizar um SSD com cache DRAM (Samsung 870 EVO) aliado à alocação de 11GB de RAM (`dbcache=11000`) foi impecável. No pico, o nó segurou mais de 63 milhões de UTXOs em ~8.6 GB de RAM antes de consolidar no disco, evitando o *thrashing* da controladora SATA. ### O Grande Flush e a Transição (Fase 2) - Executei o `systemctl stop bitcoind`. O tempo de *flush* dos dados da RAM para o disco levou vários minutos, validando a necessidade do parâmetro `TimeoutStopSec=600` que configurei no Systemd ontem para evitar corrupção por encerramento forçado. - **Redução de Pegada:** Com o banco de dados atualizado, o nó não precisa mais devorar a memória do servidor. O `dbcache` foi estrangulado para `512` (MB), devolvendo mais de 10GB de RAM para o Sistema Operacional (que serão usados pelo Electrs). ### Camuflagem (Tor) - O pacote `tor` já havia sido instalado no Debian. O teste via `curl --socks5` confirmou a saída anônima. - O `bitcoin.conf` foi alterado para operar **estritamente via Tor** (`onlynet=onion`). A máquina sumiu da Clearnet. - **Validação:** Ao reiniciar, os logs reportaram `Leaving InitialBlockDownload` e as novas conexões `block-relay-only` passaram a ocorrer perfeitamente através de *peers* Onion (v2/v3). O motor base está concluído. ## 2026-03-08 **Status:** ✅ Sucesso (IBD Iniciado). **Foco:** Ignição do Nó Bitcoin (OrangeShadow - VM 107), Engenharia de Throttling e Correção de Backup. ### Desilusões Arquiteturais e Realismo Físico - **O Mito do "All-in-One":** Descartei a ideia de rodar Mempool.space e Lightning Network no servidor. A memória RAM (8GB alvo para produção) não comporta Redis e MariaDB operando simultaneamente com o motor do Monero e Bitcoin sem causar *starvation*. A LN exige *inbound liquidity* e *clearnet* de baixa latência, incompatíveis com roteamento Tor. O servidor será estritamente uma caixa-forte *On-Chain*. - **A Armadilha da Hot Wallet (`wallet.dat`):** O plano original previa backupear a carteira no Backblaze B2. Inaceitável. O Bitcoin Core foi reconfigurado com `disablewallet=1`. O nó é agora um validador cego. A seed será gerada offline (Tails OS) e o client (Sparrow no Arch Linux) terá apenas a chave pública (xpub). ### Blindagem de Hypervisor (Proxmox Cgroups) Para impedir que a validação matemática intensa (ECDSA/Schnorr) cause um ataque DoS contra os nós críticos (DockerHost, OPNsense), apliquei limites diretamente no metal via CLI: - **CPU:** `qm set 107 --cpuunits 512` (reduz o peso no scheduler do Proxmox à metade do padrão) e `--cores 4` (teto físico). - **I/O de Disco:** `qm set 107 --scsi1 file=/dev/disk/by-id/[...],iothread=1,mbps_wr=250,mbps_rd=400,aio=threads,discard=on,backup=0`. Limitou-se a escrita a 250 MB/s para que a controladora da placa-mãe não trave os SSDs NVMe do pool ZFS principal. ### Erros, Falhas e Soluções (Post-Mortem do Setup) - **Erro de Traffic Shaping (Network):** Ao tentar limitar a rede a 15MB/s (`rate=15` no `net0`), o Kernel do Proxmox disparou alertas do algoritmo *sch_htb* (`quantum of class 10001 is big`). Limitar a placa virtual L2 estrangulou a comunicação com o Gateway e DNS. **Solução:** Removi o limite físico (`qm set 107 --net0 virtio=...,bridge=vmbr0,tag=30`) e deleguei o controle de rede à aplicação (`maxconnections=40` no `bitcoin.conf`). - **Engano de Hot-Plug de SCSI:** Tentei injetar os parâmetros assíncronos (`aio=threads`) com a VM rodando. O Proxmox registrou a mudança em laranja (Pending Change), pois KVM não altera o pipeline de disco root a quente. **Solução:** Foi necessário o ciclo elétrico bruto (`qm stop 107` seguido de `qm start 107`). Um simples reboot via Linux não injetaria a alteração do Hypervisor. - **Erro Estratégico de P2P:** Iniciei com `listen=1`. Isso permitiu conexões de entrada. A máquina começou a ler do disco e servir blocos históricos para outros nós, gastando I/O que deveria ser da própria validação. **Solução:** Alterado para `listen=0` (Modo Parasita) temporariamente até o fim do IBD. ### Validação de FS e Instalação - Verifiquei o `/etc/fstab` e constatei que o disco do blockchain já havia sido montado com a diretriz `noatime`. Isso evitou a escrita contínua de metadados (*Access Time*) cada vez que um bloco de 2MB é lido, salvando ciclos cruciais de IOPS. - Instalação via binários pré-compilados (`v28.1`) verificados por `sha256sum`. ### Correção Crítica de Backups (Restic) O arquivo `setup_backup.yml` do Ansible instruía o backup da pasta blockchain inteira e do `wallet.dat`. Isso subiria 700GB de dados públicos inúteis para a nuvem e, pior, poderia vazar chaves privadas. **Solução:** O Restic na OrangeShadow foi reescrito para fazer o backup **estritamente** da inteligência do nó (`bitcoin.conf`, `bitcoind.service`), ignorando `/opt/blockchain`. Documentação completa do homelab em: https://github.com/fajremvp/homelab
0100 sats
Fajre8d ago
quer ver q isso ai vai ser normalizado vao rastrea quem escrever 83105.53105
0000 sats
Fajre17d ago
Estou rodando meu próprio relay Nostr (um na LAN em nostr.home e outro exposto via .onion (é o mesmo, só botei em .onion pra ter algo exposto onde possa salvar e hospedar, alem de aprender mais sobre os hidden services)), estou tentando usar o Nostr de forma mais “soberana”, sem depender de grandes relays públicos ou indexadores centralizados. Meu relay está funcionando corretamente, eu já verifiquei pelos logs que os eventos estão sendo escritos e armazenados corretamente tanto pelo desktop quanto pelo celular. No Android eu uso o Amethyst, e ele lê/escreve diretamente no meu relay .onion (ele ja tem um suporte em background e consegue enviar direto pelo .onion (sem a necessidade de usar tor ou orbot)). O problema começa nos clientes web de navegador ou no desktop. Alguns clientes (como o Primal) parecem depender de infraestrutura centralizada de cache/indexador. Então mesmo quando o evento está no banco do meu relay, ele não aparece na interface se o backend deles não consegue enxergar meu relay. Isso vai contra o propósito de rodar meu próprio relay. O que eu estou procurando: - Um cliente web (no navegador) - Que conecte diretamente aos relays que eu configurar manualmente (sem dependência de indexador central) - Que suporte totalmente relays customizados, incluindo .onion - Que respeite exatamente as configurações de Read/Write - Que não dependa silenciosamente de infraestrutura de fallback No momento q escrevo to usando o Coracle pelo librewolf no meu pc. O Coracle funciona perfeitamente, mas a UX é horrivel. Eu gostei muito da UX do Primal. Alguem conhece algum cliente web pra pc que tenha isso que quero? se alguem conseguiu entender (se n manda um comentario q explico melhor) (de preferencia UX parecida com a do Primal)
2200 sats
Fajre17d ago
Boa noite clazinho! Duvida: como vcs se organizam para conversar? estilo grupo de whatsapp assim mesmo. Simplex? vi vcs falando (ja tinha ouvido falar, mas me surpreendi com a arquitetura e a forma q trabalha isso) Usam alguma outra coisa? Tipo tenho varias ideias de dev usando nostr e outras coisas assim e gostaria de compartilhar e ver oq vcs achar sabe? Obrigado!
2400 sats

Network

Following

HoppeAnaGato no nostrMcVera
fiatjaf
InfoNostr BR
Cláudio
Daniel
brisk
petola
Bauer
Kaká Furlan
carlota
Ancapstein
FarmDev
Servidor Público em Regime CLT do Ancapistão
ALTIERE
m4dire0701
🧙🏼‍♂️Homemdosaco

Followers

£e0N GöngßangeR☩ ✠ NVLLVOX ✠ ☩Sandro dos SantosIninteligível🏴‍☠️Bellya⬛🟨🟪linkad0oDavi Pinheiro☠️ 𝕷𝖔́𝖉𝖚𝖗𝖗 🔥Carlos CórdobaPhantom BullfrogelnardosaGnetynZezinhoCleoneyBauerDDeleted Account