Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

ChaveTipoPadraoDescricao
data_dircaminhoEspecifico da plataformaOnde armazenar identidade, banco de dados e blobs
listen_addrendereco0.0.0.0:4433Endereco 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.

ChaveTipoPadraoDescricao
kinteiro20Maximo de entradas por bucket da tabela de roteamento
alphainteiro3Paralelismo para buscas iterativas
bucket_refresh_interval_secsinteiro3600Com que frequencia atualizar buckets da tabela de roteamento (segundos)
republish_interval_secsinteiro3600Com que frequencia republicar ponteiros armazenados (segundos)
pointer_ttl_secsinteiro86400Quanto tempo manter um ponteiro antes de expirar (segundos)
max_stored_pointersinteiro100000Numero maximo de ponteiros armazenados localmente
ping_failure_thresholdinteiro3Quantas falhas consecutivas de ping antes de remover um par

[bootstrap]

Como o no descobre seus primeiros pares ao entrar na rede.

ChaveTipoPadraoDescricao
dns_domainstring_tesseras._udp.tesseras.netDominio DNS para descoberta de pares via registros TXT
hardcodedlista de strings["boot1.tesseras.net:4433", "boot2.tesseras.net:4433"]Enderecos de bootstrap de fallback

[network]

Funcionalidades de nivel de rede.

ChaveTipoPadraoDescricao
enable_mdnsbooleanotrueHabilitar descoberta na rede local via mDNS

[observability]

Monitoramento e logging.

ChaveTipoPadraoDescricao
metrics_addrendereco127.0.0.1:9190Endereco para o endpoint de metricas Prometheus
log_formatstringjsonFormato 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
LinuxSim (dual-stack)IPV6_V6ONLY padrao 0
macOSSim (dual-stack)IPV6_V6ONLY padrao 0
FreeBSDSim (dual-stack)IPV6_V6ONLY padrao 0
OpenBSDNao (somente IPv6)IPV6_V6ONLY sempre 1
WindowsSim (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.