Hosting Projects
Deploy applications from GitHub repositories to your VPS with automatic builds, rolling updates, and container management.
Getting Started
- Navigate to the Self Host section in the dashboard
- Click Connect GitHub to link your GitHub account
- Select the repository you want to deploy
- Configure deployment settings (Nixopus auto populates name and description)
- Click Deploy
TIP
Nixopus automatically fetches available branches from your repository and suggests a default branch.
Configuration
The deployment wizard guides you through four steps. Here's what each field does:
Step 1: Basic Information
- Application Name: Display name for your project
- Environment: Choose
Production,Staging, orDevelopment - Build Pack: Select
Dockerfile(default) - Port: The port your application listens on (e.g.,
3000)
Step 2: Repository & Branch
- Domain: The domain where your application will be accessible
- Branch: Git branch to deploy from (auto detected from your repository)
Step 3: Docker Configuration
Build Base Path: Subdirectory path within your repository where the application code is located. This sets the Docker build context directory. For single-app repositories, use
/(repository root). For monorepos, specify the subdirectory (e.g.,apps/frontend). All Docker commands in your Dockerfile will execute relative to this path.Example: If your repository structure is:
my-repo/ ├── apps/ │ └── frontend/ │ ├── src/ │ └── package.json └── README.mdSet Build Base Path to
apps/frontendto use that directory as the build context.Dockerfile Path: Path to your Dockerfile relative to the build base path. Default is
Dockerfile. If your Dockerfile is in a subdirectory or has a different name, specify the relative path.Example:
- If Build Base Path is
apps/frontendand Dockerfile is atapps/frontend/Dockerfile, useDockerfile - If Build Base Path is
apps/frontendand Dockerfile is atapps/frontend/docker/Dockerfile.prod, usedocker/Dockerfile.prod - If Build Base Path is
/and Dockerfile is at the root, useDockerfile
- If Build Base Path is
Step 4: Variables & Commands
- Environment Variables: Runtime variables like
DATABASE_URL=postgres://... - Build Variables: Build time variables like
NODE_ENV=production - Pre Run Command: Script that runs before container starts
- Post Run Command: Script that runs after container starts
Monorepo Support
Deploy individual applications from repositories containing multiple projects by setting the Build Base Path to your application's directory.
Understanding Build Base Path and Dockerfile Path
Build Base Path: This is the subdirectory within your repository where your application code lives. Nixopus uses this path as the Docker build context, meaning all Docker commands (like
COPY,RUN, etc.) will execute relative to this directory. For single-app repositories, use/(the repository root). For monorepos, specify the subdirectory (e.g.,apps/frontend).Dockerfile Path: This is the path to your Dockerfile relative to the build base path. If your Dockerfile is named
Dockerfileand located in the base path root, useDockerfile. If it's in a subdirectory or has a different name, specify the relative path (e.g.,docker/Dockerfile.prod).
How It Works Together
The build process works like this:
- Nixopus clones your repository
- Sets the build context to:
repository_root + build_base_path - Looks for the Dockerfile at:
build_context + dockerfile_path - Runs
docker buildwith that context and Dockerfile
Complete Example: If your repository structure is:
my-monorepo/
├── apps/
│ ├── frontend/
│ │ ├── docker/
│ │ │ └── Dockerfile.prod
│ │ ├── src/
│ │ └── package.json
│ └── backend/
│ ├── Dockerfile
│ └── src/
└── README.mdFor the frontend app:
- Build Base Path:
apps/frontend(this becomes the build context) - Dockerfile Path:
docker/Dockerfile.prod(relative to the build context) - Result: Docker will build using
apps/frontendas the context and look for the Dockerfile atapps/frontend/docker/Dockerfile.prod
For the backend app:
- Build Base Path:
apps/backend - Dockerfile Path:
Dockerfile(default, relative to build context) - Result: Docker will build using
apps/backendas the context and look for the Dockerfile atapps/backend/Dockerfile
Example Structure
monorepo/
├── apps/
│ ├── frontend/
│ │ ├── docker/
│ │ │ └── Dockerfile.prod
│ │ └── src/
│ └── backend/
│ ├── Dockerfile
│ └── src/
└── shared/
└── libs/Build Base Path: apps/frontend
Dockerfile Path: docker/Dockerfile.prod
Build context: monorepo/apps/frontend
Dockerfile location: monorepo/apps/frontend/docker/Dockerfile.prodBuild Base Path: apps/backend
Dockerfile Path: Dockerfile
Build context: monorepo/apps/backend
Dockerfile location: monorepo/apps/backend/DockerfileManaging Applications
Click on any deployed application to open its detail view. The application header shows the current status, domain link, environment badge, and any labels you've added.
Quick Actions
The action buttons in the header let you:
- Restart the container without rebuilding (useful for picking up config changes)
- Redeploy to rebuild and deploy using the latest code from your branch
- Redeploy (No Cache) for a clean build when you need to bypass Docker's layer cache
From the dropdown menu, you can also Rollback to a previous deployment or Delete the application entirely.
Organizing with Labels
Add labels to categorize your applications. Click the Add button next to the application name, type your label, and press Enter. Labels appear as colored badges and help you identify projects at a glance.
Monitoring Tab
Track your application's deployment health:
- Total number of deployments
- Success and failure counts
- Current deployment status
- Visual health chart showing trends over time
- Overall success rate percentage
Logs Tab
View live Container Logs to see your application's output in real time. Switch to Deployment Logs to review the build process, including clone status, image building, and container startup.
Configuration Tab
Update your application settings without redeploying:
- Application name and port
- Build base path and Dockerfile path (see Monorepo Support section for examples)
- Environment and build variables
- Pre and post run commands
WARNING
Environment, Branch, Domain, and Build Pack cannot be changed after deployment. To modify these, delete the application and create a new one.
Deployments Tab
View the complete history of all deployments. Each entry shows the deployment status, timestamp, and commit information. Click on any previous successful deployment to trigger a rollback.
Automatic Deployments
When you connect a GitHub repository, Nixopus automatically configures webhooks. Every push to your configured branch triggers a new deployment without manual intervention.