Saltar al contenido principal

Configuración del Daemon

El daemon de Almena (almenad) es el servicio en segundo plano que alimenta la red P2P y expone la API gRPC. Esta guía cubre cómo instalarlo y ejecutarlo.

Prerrequisitos

  • Toolchain de Rust (edición 2021, instalar vía rustup)
  • Compilador de Protocol Buffers (protoc)
    • macOS: brew install protobuf
    • Linux: apt install protobuf-compiler
    • Windows: choco install protoc
  • Task runner (taskfile.dev)

Instalación desde el Código Fuente

git clone git@github.com:almena-network/daemon.git
cd daemon
task install
task build

El binario de release se encuentra en target/release/almenad.

Ejecutando el Daemon

Modo Desarrollo

task dev

Esto inicia el daemon con:

  • Logging de depuración habilitado
  • Datos almacenados en el directorio ./workspace/
  • Recarga en caliente vía cargo watch
  • Servidor gRPC en [::1]:50051 (localhost IPv6)

Modo Producción

./almenad

O con configuración personalizada:

./almenad --grpc-addr "[::1]:50051"

Opciones de CLI

FlagPor defectoDescripción
--grpc-addr[::1]:50051Dirección de escucha gRPC
--devfalseHabilitar logging de depuración y usar workspace de desarrollo
--versionImprimir versión y salir

Variables de Entorno

VariableDescripción
RUST_LOGNivel de log (trace, debug, info, warn, error)
GRPC_ADDRAlternativa al flag --grpc-addr
ALMENAD_DATA_DIRDirectorio de datos personalizado (solo modo desarrollo)

Directorios de Datos

El daemon almacena sus datos en ubicaciones específicas de cada plataforma:

PlataformaRuta
macOS~/Library/Application Support/network.almena.daemon
Linux~/.local/share/network.almena.daemon
Windows%APPDATA%\network.almena.daemon

En modo desarrollo (--dev), todos los datos se almacenan en el directorio local ./workspace/.

Instaladores de Plataforma

Instaladores precompilados están disponibles para cada plataforma:

PlataformaFormatoComando
macOS.pkg (firmado y notarizado)task package:darwin
Linux.debtask package:linux
Windows.msitask package:windows

El instalador de macOS registra el daemon como LaunchAgent (se inicia automáticamente al iniciar sesión). En Linux, se crea un servicio de usuario systemd. En Windows, se ejecuta como Servicio de Windows.

Verificando la Instalación

Una vez que el daemon esté ejecutándose, verifica la conectividad con cualquier cliente gRPC:

# Usando grpcurl
grpcurl -plaintext '[::1]:50051' almena.daemon.v1.DaemonService/Ping

Respuesta esperada:

{
"message": "pong"
}

El daemon también soporta gRPC Server Reflection, por lo que herramientas como Postman y grpcurl pueden descubrir todos los métodos disponibles automáticamente.

Red P2P

El daemon descubre automáticamente otros nodos de Almena en tu red local usando mDNS (DNS multicast). Los peers descubiertos aparecen en la respuesta de ListPeers.

Capacidades P2P actuales:

  • Transporte: TCP
  • Cifrado: Protocolo Noise
  • Multiplexación: Yamux
  • Descubrimiento: mDNS (solo LAN)
  • Timeout de inactividad: 60 segundos
Próximamente

El descubrimiento de peers por internet (más allá de LAN) y conectividad basada en relays están planificados para futuras versiones.