Option A: Manual Installation (Maven)
Prerequisites
Step 1: Clone the Repository
Step 2: Set the Signing Key
Set theNEXUS_SIGNING_KEY environment variable before building or running. This key is used for HMAC-SHA256 signing on both incoming and outgoing Redis messages, so every Spigot server in the network must use the same value.
If
NEXUS_SIGNING_KEY is not set, both inbound signature verification and outbound message signing are disabled. A one-time warning is logged. This is acceptable only for local development.Step 3: Build the JAR
Step 4: Run Nexus Core
Step 5: Configure the Connection
In the web panel, provide the following:
Since v1.4.0, these values are persisted to a local config file. Subsequent launches load them automatically, so the configuration step only needs to be completed once.
Step 6: Verify the Installation
After initialization you should see log output confirming:- Redis connection established
- MongoDB connection established
- AddonRegistry ready
- Security layer active (if
NEXUS_SIGNING_KEYis set)
Running as a Background Service (Linux)
To keep Nexus Core running after you close the terminal, usenohup or a systemd unit.
- nohup
- systemd
Troubleshooting
The web panel is not accessible on port 8080
The web panel is not accessible on port 8080
Check that no other process is using port 8080 (
lsof -i :8080). If you need a different port, set SERVER PORT to a free port during first-time configuration, or update the persisted config file.Redis or MongoDB connection fails at startup
Redis or MongoDB connection fails at startup
Verify the host, port, and credentials. For MongoDB, ensure the URI is a valid connection string (e.g.
mongodb://user:pass@host:27017/dbname). For Redis, confirm redis-server is running and reachable from the Nexus Core host.Packets are being rejected with a signature error
Packets are being rejected with a signature error
The
NEXUS_SIGNING_KEY on Nexus Core and the sending Spigot server must be identical. Set the same key on both sides. Also confirm that NTP is running and server clocks are within 5 minutes of each other.Packets are rejected even with the correct key
Packets are rejected even with the correct key
Timestamp drift is the most common cause. Nexus Core rejects packets older than 5 minutes. Run
ntpdate or enable an NTP service (timedatectl set-ntp true) on all hosts.Option B: Docker Compose Installation
The Docker Compose stack builds Nexus Core from source inside a container and starts Redis, MongoDB, and Nexus Core together, with health checks, persistent volumes, and automatic service discovery.Prerequisites
Step 1: Clone the Repository
Step 2: Create a .env File
Create a .env file in the project root to set credentials and the VNC password:
Step 3: Build and Start the Stack
Nexus Core only starts after both Redis and MongoDB pass their health checks.
Check that all three containers are running:
Step 4: Connect via VNC for Initial Setup
On first launch, Nexus Core presents an interactive setup wizard over VNC. Connect your VNC client to:VNC_PASSWORD you set in the .env file. Inside the VNC session, the setup wizard asks for Redis and MongoDB connection details. Use the Docker service names as hostnames — not localhost:
Inside the Docker network, containers reach each other by service name (
redis, mongo). Using localhost here will not work.Step 5: Access the Web Panel
After completing the setup wizard, open your browser and navigate to:Exposed Ports
Useful Docker Commands
Persistent Data
Redis and MongoDB store data in named Docker volumes (redis-data and mongo-data). Stopping the stack with docker compose down preserves all data. To wipe all volumes and start fresh:
Docker Troubleshooting
Nexus Core container starts but exits immediately
Nexus Core container starts but exits immediately
Redis or MongoDB may not have passed their health checks in time. Check their status with
docker compose ps and inspect their logs with docker compose logs nexus-redis or docker compose logs nexus-mongo. The depends_on health checks require both services to respond before Nexus Core starts.Cannot connect to VNC on port 5900
Cannot connect to VNC on port 5900
Confirm the container is running (
docker compose ps) and that no firewall rule is blocking port 5900. If you changed the default VNC port, update the ports mapping in docker-compose.yml to match.MongoDB authentication fails during setup
MongoDB authentication fails during setup
The default credentials from the
.env file are MONGO_ROOT_USER and MONGO_ROOT_PASSWORD. If you changed them, use the updated values in the MongoDB URI. Always include ?authSource=admin at the end of the URI when using root credentials.Web panel not accessible at port 8080
Web panel not accessible at port 8080
Confirm the setup wizard completed successfully inside the VNC session. The web panel only becomes available after Nexus Core has initialized. Also check that no other service on the host is using port 8080.
Docker Security Checklist
Before deploying to production:- Replace all default credentials in
.envwith strong, unique values. - Restrict external access to ports 6379 and 27017 using a firewall — they should not be publicly reachable unless required.
- Restrict VNC access (port 5900) to trusted IPs or behind a VPN. The VNC session is only needed for initial setup.
- Protect the web dashboard (port 8080) with HTTPS and access controls.
- Never commit
.envor any credentials to version control.
Next Steps
Quickstart
Register your first DataAddon and send your first request.
Configuration
Full reference for all connection parameters and the signing key.