Documentation
Full local platform
Combine reverse proxy, services, observability, and Kubernetes in one stack.
Use this pattern when you want a compact end-to-end local platform. It combines the smaller examples into one vectron.stack.toml source file.
This is still an example, not a reference. Start smaller when possible, then add the blocks your workspace actually needs.
schema_version = 1
tld = "local.dev.test"
enabled = [
"dnsmasq",
"nginx",
"mongodb",
"rabbitmq",
"redis",
"minio",
"qdrant",
"docker",
"prometheus",
"loki",
"alloy",
"grafana",
"kubernetes",
]
[nginx]
https_port = 54443
[[nginx.server]]
server_names = ["app.local.dev.test"]
link = { label = "App", path = "/" }
upstreams = { web = "http://127.0.0.1:3000", api = "http://127.0.0.1:4000" }
[[nginx.server.route]]
match = { prefix = "/api/ws" }
to = { upstream = "api", websocket = true }
[[nginx.server.route]]
match = { prefix = "/api/" }
to = { upstream = "api" }
[[nginx.server.route]]
match = { prefix = "/" }
to = { upstream = "web", websocket = true }
[[rabbitmq.vhost]]
name = "platform"
queues = [
"jobs.default",
"jobs.priority",
"events.outbox",
]
[prometheus]
scrape_config_files = ["./monitoring/prometheus.yml"]
[alloy]
import_files = [
{ name = "app", path = "./monitoring/config.alloy" },
]
blocks = [
'app.logs "local_app_logs" { forward_to = loki.write.default.receiver }',
]
[alloy.docker_logs]
enabled = true
refresh_interval = "5s"
[alloy.docker_logs.labels]
environment = "local"
origin = "docker"
[[alloy.docker_logs.relabel]]
source_labels = ["__meta_docker_container_label_service"]
target_label = "service"
[[alloy.docker_logs.relabel]]
source_labels = ["__meta_docker_container_name"]
target_label = "container"
[grafana]
[[grafana.dashboard_dirs]]
dir = "./grafana/dashboards"
folder = "Apps"
[kubernetes]
driver = "minikube"
cluster_name = "local-dev"
control_planes = 1
workers = 0
wait_seconds = 120
kubeconfig_path = ".vectron_stack/generated/kubernetes/kubeconfig"
api_server_address = "127.0.0.1"
api_server_port = 6443
local_registry_port = 5001
stop_after_init = true
stop_on_vectron_stop = trueHow to evolve it
- Remove plugins your project does not need.
- Split monitoring files under
./monitoring/and dashboards under./grafana/dashboards. - Keep domains, ports, queues, and Docker labels project-specific.
- Run
vectron stack checkafter each change.
Use the smaller examples when you need to understand one part of the stack in isolation.