Getting Started
Table of Contents
Prerequisites
Before installing NexusScribe, ensure you have:
- Rust 1.75+ (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - Node.js 20+ (
nvm install 20) - Aegis-DB running on port 9091
- Ollama running on port 11434 (optional, for AI features)
Quick Installation
1. Clone the Repository
git clone https://github.com/AutomataNexus/NexusScribe.git
cd NexusScribe
2. Build the Backend
# For local development (x86_64)
cargo build --release --target x86_64-unknown-linux-gnu
# For Raspberry Pi 5 (aarch64)
cargo build --release --target aarch64-unknown-linux-gnu
3. Build the Frontend
cd web
npm install
npm run build
cd ..
4. Configure Environment
cp .env.example .env
# Edit .env with your settings
Key environment variables:
| Variable | Description | Example |
|---|---|---|
DATABASE_URL | Aegis-DB connection | aegis://localhost:9091/default |
JWT_SECRET | JWT signing key (48+ chars) | Generate with openssl rand -base64 48 |
OLLAMA_URL | Ollama API endpoint | http://localhost:11434 |
RESEND_API_KEY | Email service API key | re_xxxxx |
5. Initialize Database
bash scripts/init-db.sh
6. Start Services
Using PM2 (recommended):
pm2 start ecosystem.config.js
Or manually:
# Backend
./target/release/nexus-scribe &
# Frontend
cd web && npm start &
Verify Installation
Check Service Status
pm2 status
Expected output:
┌─────────────┬────────┬───────┐
│ Service │ Status │ Port │
├─────────────┼────────┼───────┤
│ Backend API │ Online │ 8080 │
│ Frontend │ Online │ 3000 │
│ Aegis-DB │ Online │ 9091 │
│ Ollama │ Online │ 11434 │
└─────────────┴────────┴───────┘
Test API Health
curl http://localhost:8080/health | jq
Access the UI
Open http://localhost:3000 in your browser.
Create Admin Account
Via API
curl -X POST http://localhost:8080/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "admin@example.com",
"password": "SecurePassword123!",
"display_name": "Admin User"
}'
Set Admin Role
~/.local/bin/aegis-client -d nexusscribe query \
"UPDATE users SET role = 'Admin' WHERE email = 'admin@example.com'"