auto-cert: deixe a limpeza do certificado de lixo realmente ver o lixo que foi escrito para
cleanup orphan certificates() listado com '-l auto-cert.kamo/fqdn'. Isso. label é mais recente do que os certificados de scanner a função existe para remover, d...
auto-cert: emitir certificados de uma org como um lote, não um a cada 90 segundos
Uma nova organização precisa de um certificado para todos os onze dos seus anfitriões, e cada um é um certificado de certificado-gerente separado. O laço espero...
Preferir brotli no host do tema, e corrigir o raciocínio anterior
Duas coisas, uma delas uma correção para o compromisso antes disso. O commit anterior justificou `codificações: [br, gzip]` com uma sonda contra api.kamocrm.co...
Prefere brotli, pare de comprimir o que já está comprimido
O middleware 'compress' compartilhado foi 'compress: {}', que é três Separe os padrões e nenhum deles é o que queremos. Traefik escolhe gzip sempre que o clien...
Carregar com listas de colunas explícitas -- posicional COpy corrompe silenciosamente
COPY t DE STDIN sem lista de colunas mapeia os campos CSV para o FÍSICO da tabela Ordem da coluna. Os CSV vêm da COPY (SELECT *) em BarataDB, e Hibernate cria a...
Carregar com listas de colunas explícitas -- posicional COpy corrompe silenciosamente
COPY t DE STDIN sem lista de colunas mapeia os campos CSV para o FÍSICO da tabela Ordem da coluna. Os CSV vêm da COPY (SELECT *) em BarataDB, e Hibernate cria a...
Esquema paridade com BarataDB -- 714 tabelas, 8706 colunas
O desvio ganhou o seu lugar. KamoInitializerService constrói o esquema de entidades JPA e produziu 599 tabelas; produção carrega 714. O 115 diferenças são tabel...
Esquema paridade com BarataDB -- 714 tabelas, 8706 colunas
O desvio ganhou o seu lugar. KamoInitializerService constrói o esquema de entidades JPA e produziu 599 tabelas; produção carrega 714. O 115 diferenças são tabel...
Tradutor completo de BarataDB->YSQL para as migrações do universo
Todas as 15 migrações agora se aplicam de forma limpa ao YugabyteDB: 111 tabelas, correspondentes Exactamente. Oito constructos distintos de Baratas só tinham d...
Tradutor completo de BarataDB->YSQL para as migrações do universo
Todas as 15 migrações agora se aplicam de forma limpa ao YugabyteDB: 111 tabelas, correspondentes Exactamente. Oito constructos distintos de Baratas só tinham d...
Exportação de CSV via COPY TO STDOUT, além de um verificador consciente de CSV
Transporte é copiado ... para STDOUT With (format CSV), não `cockroach sql - format=csv`. Este último renderiza SQL NULL como a string literal "NULL", indisting...
Exportação de CSV via COPY TO STDOUT, além de um verificador consciente de CSV
Transporte é copiado ... para STDOUT With (format CSV), não `cockroach sql - format=csv`. Este último renderiza SQL NULL como a string literal "NULL", indisting...
Faça cada esquema de varredura saber; kamo tem 714 tabelas, não 680
Verificando cruzadamente SHOW BackUP (714 objetos) contra uma tabela schema='público' inventário (680) exposto 34 tabelas vivendo em cinco outros esquemas: emai...
Faça cada esquema de varredura saber; kamo tem 714 tabelas, não 680
Verificando cruzadamente SHOW BackUP (714 objetos) contra uma tabela schema='público' inventário (680) exposto 34 tabelas vivendo em cinco outros esquemas: emai...
Captura de base para a verificação de paridade BarataDB para YugabyteDB
Duas passagens: contagem em lote barata(*), em seguida, um checksum independente de ordem. As somas da soma de cheques por linha md5 hashes como inteiros em ve...
Captura de base para a verificação de paridade BarataDB para YugabyteDB
Duas passagens: contagem em lote barata(*), em seguida, um checksum independente de ordem. As somas da soma de cheques por linha md5 hashes como inteiros em ve...
Meet-secrets **************** para a gravação jibri ingerir
Vamos finalizar jibri.sh autenticar seu upload de gravação para MediaService; correspondências o valor do cluster *** MediaService valida contra.
Provisão R1 MEDIA JetStream stream via idempotent bootstrap Job
Os eventos media/leader-feed (media.feed.*, media.post.*) não tiveram nenhum JetStream stream, assim publica retornado '503 Nenhum Respondedor Disponível para P...
nó-config(k1m1-runner): registro data.forgejo.org Pino IPv4 + capacidade=6
Documentos a mudança on-node ao vivo: dados. forgejo.org é IPv6 somente e k1m1 não tem Rota IPv6, então os containers de tarefas penduradas ~133s e ações/checko...
Consolidar os serviços do kluster para um único cluster k1m1+k3m1
- NATS: um único casulo separado k1m1 (derrapar k2m1 + variantes genéricas de agrupamento) - BarataDB: pino k1m1, nó único -- join - MySQL: uma única instância ...
Atualizar v3.0 -> v3.3 (fixo desconexão intermitente do WebSocket)
v3.0.0 completa intermitentemente a atualização WS 101 em seguida, fecha o soquete antes de qualquer fluxos de frame — o 'desconectar em carga' recorrente no cl...
nó- config: documento k1m1 forgejo-runner config (-- add-host for submodule DNS)
Os contêineres de trabalho no k1m1 voltam ao DNS público, então a frota varreda http://k1m1:3000 .gitmodules URLs não conseguem clonar lá. Pin k1m1 na tarefa re...
node- config: documento k1m1 docker daemon insegura- registros
A compilação do 'k1m1 forgejo-runner' vai para o registo HTTP Forgejo; o daemon.json enviado com apenas as entradas :5000, assim cada trabalho de construção no ...
Junte- se ao cluster de dois nós partilhado com o k3m1 sobre a LAN; isolamento da conta
Retirar rotas WireGuard (10.8.x.x) para rotas LAN (192.168.4.22 <-> 192.168.4.36 :6222) com credos incorporados nas URLs de rota. Mudar o nome do cluster para k...
configuração do nó: aumentar k1m1 kubelet max-pods 110 -> 200
O padrão RKE2 max-pods=110 estava sendo atingido, bloqueando kamolos rolling-update implantes (maxSurge:1,maxIndisponível:0 precisa de slot para criar novo pod ...
Update Traefik routes: themes.* assets now only load from k1m1 minio instead of balancing across k0m1, k1m1, and k2m1
Use VPN addresses for k0m1/k2m1 minio-public backends
- Endpoints: k0m1 10.8.0.1, k2m1 10.8.2.1 (VPN); k1m1 stays local - IngressRoute host match: 100.64.x.x -> 10.8.0.1, 10.8.1.1, 10.8.2.1
MinIO secret creation from workflow (MinIO is managed manually)
Atualizar endereços IP de Tailscale (100.64.x.x) para WireGuard VPN (10.8.x.x) para fluxos de trabalho NATS, BaratasDB e CI/CD
Adicionar o logotipo completo do Kamo SVG com todos os 14 caminhos
Incorpore conteúdo SVG completo diretamente em vez de caminhos parciais
Use a abordagem somente de CSS para o logotipo do Kamo
A montagem do ficheiro SVG foi removida, usando a imagem de fundo do CSS para carregar o logotipo externo diretamente no elemento #logo
Corrigir logo.svg para referenciar o logotipo externo do Kamo URL
Usar o elemento de imagem SVG para incorporar o logotipo externo em vez de caminhos complexos com transformadas quebradas
Substituir Roundcube logo.svg com o logotipo de Kamo SVG
Monte logo.svg personalizado para ******************* para substituir a marca d'água Roundcube / logotipo de fundo
Adicionar arquivo CSS personalizado para substituir o logotipo da marca d'água Roundcube
- Criado custom.css com sobreposição de marca d'água - Montar o ficheiro CSS em /var/www/html/custom.css - Configurar o Roundcube para carregar folhas estilo ad...
Substituir todos os logotipos Roundcube com logotipo Kamo, incluindo marca d'água
Configuração atualizada do skin logo para o formato do array para cobrir: - Logotipo do cabeçalho principal - Pequeno logotipo de cabeçalho colapsado - Caixa de...
Adicionar subdomínio de e- mail à lista automática SUBDOMAINS
Activa a criação automática de certificados SSL para mail.kamocrm.com
Expor as portas Postfix 25 e 587 via hostPort para correio de entrada
Necessário para receber conexões SMTP externas no K1M1
Configurar o Roundcube para usar o Mailgun SMTP diretamente
Bypass local Postfix para e- mail de saída, conectando-se diretamente para smtp.mailgun.org com TLS na porta 587
Mudar o Postfix para a implantação baseada no Alpine com suporte ao MySQL
Semelhante ao Dovecot, usando Alpine 3.18 com pacote postfix-mysql instalado em tempo de execução para suporte a mapas virtuais MySQL confiáveis
Fix postfix command to use apt-get instead of apk
boky/postfix is Debian-based, not Alpine
Add postfix-mysql support for MySQL virtual maps
Installed postfix-mysql package at container startup to enable MySQL dictionary lookups for virtual domains/users/aliases
Add auth debugging and ensure MySQL driver packages for Dovecot
- Enable auth_debug, auth_debug_passwords, auth_verbose - Add dovecot-mysql package for proper SQL support - Add mariadb-connector-c for MySQL protocol compatib...
Add MySQL auth fix job for MariaDB client compatibility
Changes kamo user from caching_sha2_password to mysql_native_password Required for Dovecot (Alpine/MariaDB) to connect to MySQL 8
Replace Roundcube logo with Kamo logo
Added skin_logo config pointing to **************** Updated deployment annotation to trigger pod restart
Fix MySQL auth: change kamo user to mysql_native_password
Alpine's MariaDB client doesn't support caching_sha2_password plugin This prevents Dovecot from connecting to MySQL for authentication
Force Roundcube pod restart to pick up ConfigMap change
Added annotation to trigger pod recreation since ConfigMap with subPath doesn't auto-update in running pods
Fix Roundcube redirect loop - disable force_https
Traefik handles TLS termination, so internal traffic is HTTP Setting force_https=true caused Roundcube to redirect to HTTPS internally creating an infinite redi...
Reference kamocrm.com wildcard cert in mail IngressRoute
The certificate secret is in kamo namespace, copied to mail namespace tls.secretName explicitly references wildcard-kamocrm-com
Fix mail IngressRoute to use auto-cert service
Changed tls from certResolver: letsencrypt to tls: {} This allows the auto-cert service to automatically generate certs when mail.kamocrm.com is accessed
Fix Roundcube readiness probe - use TCP socket instead of HTTP
Roundcube redirects / to login page (302), failing HTTP readiness probe TCP socket check on port 80 works correctly
Como o que vês no transporte?
Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.