Skip to Content
Getting StartedInstallation

Installation

Nexora runs as a Docker Compose stack. Prerequisites: Docker 24+ and Docker Compose v2.

Quick install (one-liner)

The fastest way to stand up the open-source core. The installer is interactive: it clones the repo, generates every secret, writes .env, starts the Docker stack, and runs the database migrations. It is safe to re-run to update.

curl -fsSL https://raw.githubusercontent.com/ParendumOU/Nexora/main/install.sh | bash

Run non-interactively (accept all defaults):

NEXORA_NONINTERACTIVE=1 bash -c "$(curl -fsSL https://raw.githubusercontent.com/ParendumOU/Nexora/main/install.sh)"

Overrides (set before running): NEXORA_DIR (install path), NEXORA_PORT (nginx host port, default 80), NEXORA_NONINTERACTIVE.

When it finishes, open http://localhost and register the first account — it becomes the platform admin.

Running NexoraCloud (the paid, license-gated product) instead? Grab your one-liner from the customer portal at nexora.parendum.com — it is served from the Gateway (curl -fsSL https://nexora-gw.parendum.com/install/cloud.sh | bash) and also handles license and package download. The open-source installer above is for the free core.

Manual install

Prefer to do it step by step:

Clone the repository

git clone https://github.com/ParendumOU/Nexora.git cd nexora

Configure environment

cp .env.example .env

Edit .env with required values — see Configuration for all variables.

Minimum required:

SECRET_KEY=your-secret-key-at-least-32-characters-long ENCRYPTION_KEY=your-fernet-key-44-chars-base64 POSTGRES_PASSWORD=strongpassword REDIS_PASSWORD=strongpassword

Generate a Fernet key:

python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Start services

make up

Starts all services in production mode. Default port: 80.

Run database migrations

docker compose exec backend alembic upgrade head

Access Nexora

Open http://localhost (prod) or http://localhost:8080 (dev).

Register the first account — it becomes the platform admin.

What gets deployed

ServicePortDescription
nginx80 / 8080Reverse proxy — routes /api to backend, / to frontend
backend8000 (internal)FastAPI — REST API + WebSocket
frontend3000 (internal)Next.js UI
postgres5432 (internal)PostgreSQL 16
redis6379 (internal)Redis 7 — pub/sub + cache

Make targets

make up # start production stack make dev # start with hot-reload make down # stop all services make logs # tail all logs make ps # show running containers make clean # stop + remove volumes (DESTRUCTIVE — deletes DB data)

make clean destroys all Docker volumes including the database. Only use it for a full reset.

Troubleshooting

Backend fails to start with “weak secret” error

Production mode validates SECRET_KEY length (≥32 chars). Use a strong random value.

Port 80 already in use

Set HTTP_PORT=8080 in .env.

Migrations fail

Ensure the backend container is running: make ps. Then re-run:

docker compose exec backend alembic upgrade head