# Building & Running Lavina ## Configuration A server instance must be supplied with a configuration file to start up. The path to configuration is specified with a required CLI argument `--config `. Example configuration: ```toml [telemetry] # address for management and telemetry API # should be kept private listen_on = "127.0.0.1:8080" [irc] listen_on = "127.0.0.1:6667" server_name = "irc.localhost" [xmpp] listen_on = "127.0.0.1:5222" cert = "./certs/xmpp.pem" key = "./certs/xmpp.key" hostname = "localhost" [storage] db_path = "db.sqlite" [tracing] # otlp grpc endpoint endpoint = "http://jaeger:4317" service_name = "lavina" ``` ## With Docker Compose Example `docker-compose.yml` file: ```yaml version: '3.0' services: lavina: image: git.vilunov.me/lavina/lavina:0.0.1 volumes: - './config/:/etc/lavina/' - './data/:/var/lib/lavina/' ports: - '5222:5222' # xmpp - '6667:6667' # irc non-tls - '127.0.0.1:1380:8080' # management http (private) # if you want to observe traces jaeger: image: "jaegertracing/all-in-one:1.56" ports: - "16686:16686" # web ui - "4317:4317" # grpc ingest endpoint environment: - COLLECTOR_OTLP_ENABLED=true - SPAN_STORAGE_TYPE=memory ``` ## With Cargo You can run it via cargo: cargo run -- --config config.toml Or you can build it and run manually: cargo build --release ./target/release/lavina --config config.toml