Beacon WMS is a web map service built with a dual-backend architecture for optimal performance and scalability.
The application consists of two complementary backends:
- Node.js Backend: Handles client communication, templating, and OGC (Open Geospatial Consortium) compliance
- Rust Backend: Handles high-performance map drawing and querying operations
Before running Beacon WMS, ensure you have the following installed:
To build and run both backends using Docker:
docker compose up --buildRun both backends in separate terminal windows:
Terminal 1 - Rust Backend:
cd rust-backend
cargo run --release # Use --release for better performanceTerminal 2 - Node.js Backend:
cd node-backend
npm install
npm run dev| Variable | Default | Used for |
|---|---|---|
HTTP_ADDRESS |
0.0.0.0 |
Rust backend bind address. |
HTTP_PORT |
8000 |
Rust backend HTTP port. |
WORKERS |
12 |
Number of Tokio worker threads. |
LOG_DIR |
../logs |
Directory for backend logs. |
LOG_LEVEL |
INFO |
Log verbosity (TRACE, DEBUG, INFO, WARN, ERROR). |
CONFIG_DIR |
../config |
Base directory for config files like config.json and colormaps.json. |
CONFIG_FILE |
config.json |
Main backend config file name (resolved under CONFIG_DIR). |
LAYER_DIR |
../layers |
Directory where generated layer parquet files are stored. |
BEACON_TOKEN |
(none) | Auth token used for Beacon API queries. |
TILE_CACHE_ENABLED |
false |
Enables tile image cache when set to 1, true, yes, or on. |
TILE_CACHE_DIR |
../tile_cache |
Root directory for tile cache files. |
| Variable | Default | Used for |
|---|---|---|
HTTP_ADDRESS |
0.0.0.0 |
Node backend bind address. |
HTTP_PORT |
3000 |
Node backend HTTP port. |
RUST_BACKEND_URL |
http://localhost:8000 |
Base URL for forwarding WMS requests to Rust backend. |
CONFIG_DIR |
../config |
Base directory for Node config files. |
CONFIG_FILE |
config.json |
Node config file name (resolved under CONFIG_DIR). |
LOG_DIR |
../logs |
Directory for Node logs. |
PATH_PREFIX |
(empty) | URL prefix prepended to Node routes. |
HTTP_HOST |
Request host header | Host used in generated capabilities URLs. |
HTTP_PROTOCOL |
Request protocol | Protocol used in generated capabilities URLs. |
ADMIN_SECRET |
(empty) | Bearer token required for admin endpoints (must be set to enable). |