Configuracao
O daemon pode ser configurado via um arquivo TOML. Passe o caminho com --config:
tesseras-daemon --config /etc/tesseras/config.toml
Se nenhum arquivo de configuracao for fornecido, o daemon usa padroes sensiveis. Opcoes CLI (--listen, --bootstrap, --data-dir) sobrescrevem os valores correspondentes da configuracao.
Exemplo completo
[node]
data_dir = "~/.local/share/tesseras"
listen_addr = "0.0.0.0:4433"
[dht]
k = 20
alpha = 3
bucket_refresh_interval_secs = 3600
republish_interval_secs = 3600
pointer_ttl_secs = 86400
max_stored_pointers = 100000
ping_failure_threshold = 3
[bootstrap]
dns_domain = "_tesseras._udp.tesseras.net"
hardcoded = [
"boot1.tesseras.net:4433",
"boot2.tesseras.net:4433",
]
[network]
enable_mdns = true
[observability]
metrics_addr = "127.0.0.1:9190"
log_format = "json"
Secoes
[node]
Configuracoes basicas do no.
| Chave | Tipo | Padrao | Descricao |
|---|---|---|---|
data_dir | caminho | Especifico da plataforma | Onde armazenar identidade, banco de dados e blobs |
listen_addr | endereco | 0.0.0.0:4433 | Endereco do listener QUIC |
O data_dir padrao e ~/.local/share/tesseras no Linux e ~/Library/Application Support/tesseras no macOS.
[dht]
Parametros de ajuste da DHT Kademlia. Os padroes funcionam bem para a maioria das implantacoes.
| Chave | Tipo | Padrao | Descricao |
|---|---|---|---|
k | inteiro | 20 | Maximo de entradas por bucket da tabela de roteamento |
alpha | inteiro | 3 | Paralelismo para buscas iterativas |
bucket_refresh_interval_secs | inteiro | 3600 | Com que frequencia atualizar buckets da tabela de roteamento (segundos) |
republish_interval_secs | inteiro | 3600 | Com que frequencia republicar ponteiros armazenados (segundos) |
pointer_ttl_secs | inteiro | 86400 | Quanto tempo manter um ponteiro antes de expirar (segundos) |
max_stored_pointers | inteiro | 100000 | Numero maximo de ponteiros armazenados localmente |
ping_failure_threshold | inteiro | 3 | Quantas falhas consecutivas de ping antes de remover um par |
[bootstrap]
Como o no descobre seus primeiros pares ao entrar na rede.
| Chave | Tipo | Padrao | Descricao |
|---|---|---|---|
dns_domain | string | _tesseras._udp.tesseras.net | Dominio DNS para descoberta de pares via registros TXT |
hardcoded | lista de strings | ["boot1.tesseras.net:4433", "boot2.tesseras.net:4433"] | Enderecos de bootstrap de fallback |
[network]
Funcionalidades de nivel de rede.
| Chave | Tipo | Padrao | Descricao |
|---|---|---|---|
enable_mdns | booleano | true | Habilitar descoberta na rede local via mDNS |
[observability]
Monitoramento e logging.
| Chave | Tipo | Padrao | Descricao |
|---|---|---|---|
metrics_addr | endereco | 127.0.0.1:9190 | Endereco para o endpoint de metricas Prometheus |
log_format | string | json | Formato de saida de log (json ou text) |
Suporte a IPv6
Tesseras suporta IPv6 nativamente. Os campos listen_addr e listen_addrs aceitam tanto enderecos IPv4 quanto IPv6.
Escutando em IPv6
Para escutar em todas as interfaces IPv6:
[node]
listen_addr = "[::]:4433"
No Linux e na maioria dos BSDs, vincular a [::] tambem aceita conexoes IPv4 (dual-stack) por padrao. Em alguns sistemas (notavelmente OpenBSD), [::] e somente IPv6 porque IPV6_V6ONLY e habilitado por padrao. Para garantir tanto IPv4 quanto IPv6 em todas as plataformas, use listen_addrs com enderecos explicitos:
[node]
listen_addrs = ["0.0.0.0:4433", "[::]:4433"]
Para loopback IPv6 apenas (testes):
[node]
listen_addr = "[::1]:4433"
Bootstrap com IPv6
Enderecos de bootstrap podem ser IPv6:
[bootstrap]
hardcoded = [
"boot1.tesseras.net:4433",
"[2001:db8::1]:4433",
]
Hostnames DNS com registros A e AAAA sao resolvidos para todos os enderecos, entao o daemon se conectara pelo protocolo que estiver acessivel.
Comportamento de IPV6_V6ONLY por SO
| SO | [::] aceita IPv4? | Notas |
|---|---|---|
| Linux | Sim (dual-stack) | IPV6_V6ONLY padrao 0 |
| macOS | Sim (dual-stack) | IPV6_V6ONLY padrao 0 |
| FreeBSD | Sim (dual-stack) | IPV6_V6ONLY padrao 0 |
| OpenBSD | Nao (somente IPv6) | IPV6_V6ONLY sempre 1 |
| Windows | Sim (dual-stack) | IPV6_V6ONLY padrao 0 |
Se precisar de controle explicito, use listen_addrs com um endereco IPv4 e um IPv6.
Configuracao minima
A maioria dos usuarios nao precisa de um arquivo de configuracao. Se precisar, uma configuracao minima sobrescrevendo apenas o necessario e suficiente:
[node]
listen_addr = "0.0.0.0:5000"
[bootstrap]
hardcoded = ["192.168.1.10:4433"]
Todos os outros valores usam seus padroes.