Documentation

Self-Hosting SolutionEngine

SolutionEngine is designed to be easily deployable on your own private infrastructure, ensuring complete data privacy and network isolation. This guide covers the standard deployment process using Docker Compose.


Architecture Overview

The platform uses a standardized 3-tier containerized architecture:

  1. Database Storage (kasunk/solution-engine-db): A custom PostgreSQL instance that handles relational data and acts as the central state store.
  2. Core Backend (kasunk/solution-engine-backend): A Python-based high-performance engine handling API requests, workflow execution, model routing, and websocket communications.
  3. Frontend Interface (kasunk/solution-engine-frontend): A Next.js web application that serves the dashboard, visual editors, and monitoring tools.

Prerequisites

Before deploying, ensure the host machine meets these requirements:

  • Operating System: Linux (Ubuntu/Debian recommended) or macOS. (Windows requires WSL2).
  • Software: Docker Engine and Docker Compose (v2) installed and running.
  • Hardware (Minimum): 4 CPU cores, 8GB RAM, 50GB SSD storage.

Step-by-Step Deployment

The entire stack is orchestrated via a single docker-compose.yml file. Because all fully-built images are hosted securely on Docker Hub, you do not need to download the source code or build any containers yourself.

1. Obtain the Configuration File

Begin by creating a new directory on your host server and placing the official SolutionEngine docker-compose.yml file inside it.

mkdir solution-engine
cd solution-engine

# You can download the official compose file directly (example URL)
curl -O https://raw.githubusercontent.com/your-org/SolutionEngine/main/docker-compose.yml

(Alternatively, you can manually create the docker-compose.yml file and paste the official configuration into it).

2. Start all Services

Use Docker Compose to pull the latest images from the registry and start the services in the background (detached mode).

docker compose up -d

Note: On the first run, Docker will download the images which may take a few minutes depending on your network connection.

3. Verify the Deployment

Once the command completes, verify that all three containers (solution_engine_db, solution_engine_backend, solution_engine_frontend) are running correctly:

# List all running containers
docker ps 

You can now access the SolutionEngine dashboard by navigating to http://localhost:3000 (or your server's IP address) in your web browser.


Managing Your Instance

Viewing Logs

To troubleshoot or monitor the platform, you can tail the logs for all services or target a specific component:

# Follow logs for all services combined
docker compose logs -f

# Follow logs for the backend specifically
docker compose logs -f backend

# Follow logs for the frontend specifically
docker compose logs -f frontend

Stopping Services

To gracefully stop the platform without destroying any stored data:

docker compose down

Restarting & Rebuilding

If you have pulled new changes or modified environment configurations, rebuild and restart the stack:

docker compose up -d --build

Advanced Troubleshooting

Complete Factory Reset

If you need to completely wipe the installation and start fresh (this will destroy all project data, models, and workflows):

# Stop all containers and delete attached storage volumes
docker compose down -v

# Remove all cached SolutionEngine images
docker rmi kasunk/solution-engine-db:latest
docker rmi kasunk/solution-engine-backend:latest
docker rmi kasunk/solution-engine-frontend:latest

Database Schema Issues

If the frontend cannot connect or complains about missing tables, the database schema may not have initialized correctly. You can force a re-initialization:

# Stop the database service
docker compose stop db

# Remove the specific database volume
docker volume rm solutionengine_pgdata

# Start the database (the schema will be applied automatically on boot)
docker compose up -d db

To verify the tables were created successfully, you can access the Postgres shell directly:

docker exec -it solution_engine_db psql -U postgres -d solution_engine -c "\dt public.*"