Run Hostpanel locally
What you need
- A container engine with Compose support
- About 8 GB of free memory
- Ports
3001,5174and5149free on the host
Clone the repository
The plugin SDK is a git submodule. Clone with --recurse-submodules to get it in one step:
git clone --recurse-submodules https://github.com/innovayse/hostpanelIf you already cloned without it:
git submodule update --initStart the stack
Change to the docker directory:
bashcd dockerCopy the example environment file:
bashcp .env.example .envStart all services:
bashdocker compose -f docker-compose.shared.yml -f docker-compose.dev.yml up -dServices started:
hostpanel-db,hostpanel-api,hostpanel-client,hostpanel-admin, plus RabbitMQ, Redis and MailHog.Follow the API log to watch startup and migrations:
bash./scripts/manage.sh logs apiWait for "Now listening on" before opening the apps.
Open it
| Name | Type | Default | Description |
|---|---|---|---|
CLIENT_HOST_PORT | number | 3001 | Client portal — http://localhost:3001 |
ADMIN_HOST_PORT | number | 5174 | Admin panel — http://localhost:5174 |
API_HOST_PORT | number | 5149 | API and OpenAPI page — http://localhost:5149/swagger |
MAILHOG_UI_HOST_PORT | number | 8027 | Local mail inbox UI — http://localhost:8027 |
The dev seed creates these accounts:
| Account | Password env var | |
|---|---|---|
| Admin | admin@example.test | DEV_SEED_ADMIN_PASSWORD (default: Admin123!) |
| Client | owner@example.test and others | DEV_SEED_CLIENT_PASSWORD (default: Test@12345) |
Hot reload
The API container mounts the source tree and rebuilds on file changes. File polling is enabled by default in .env.example to cover host filesystems that do not emit watch events reliably.
dotnet build, dotnet restore, npm install or similar on the host while the dev stack is up. The container and the host will fight over the same files. Without containers
If you prefer to run the stack directly, you need .NET 9 SDK, Node.js 22+, yarn and PostgreSQL 17.
cd backend && dotnet run --project src/Innovayse.Hostpanel.API # http://localhost:5148
cd client && yarn install && yarn dev # http://localhost:3000
cd admin && npm install && npm run dev # http://localhost:5173Set the API's connection string, RabbitMQ and SMTP settings through environment variables, user secrets or appsettings.Development.json (git-ignored).
Reset the data
Use the management script from the docker/ directory:
./scripts/manage.sh db resetThis asks for confirmation, drops the database and applies all migrations. To seed development data afterwards:
./scripts/manage.sh db seedTroubleshooting
| Problem | Fix |
|---|---|
| Port already in use | Change API_HOST_PORT, CLIENT_HOST_PORT or ADMIN_HOST_PORT in .env |
| Subnet clash with another network | Change STACK_NETWORK_SUBNET in .env (default 172.30.0.0/24) |