Deployment Guide
Learn how to deploy your application from GitHub using sPanel with zero-downtime traffic switching.
PREREQUISITES
GitHub Deployment Workflow
Zero ConfigCreate a New Application
Navigate to Applications in the sPanel dashboard, click '+ New Application', and select GitHub as the deployment source.
Choose Repository & Branch
Select your GitHub repository from the dropdown and specify the branch you want to track (e.g. main or production).
Configure Build Settings & Environment
Set the framework detection preset (or let Nixpacks detect automatically), specify runtime ports, and inject environment variables.
Trigger Deployment
Click 'Deploy Application'. sPanel will trigger an ephemeral Nixpacks build container and stream live logs directly to your browser.
Framework-Specific Configurations
sPanel detects project languages automatically using Nixpacks.
Laravel (PHP 8.2+)
php / composerNixpacks automatically runs composer install --optimize-autoloader. Add your APP_KEY in Environment Variables before deploying. sPanel automatically ensures storage permissions and runs database migrations.
Next.js & Node.js
node / pnpm / yarnSupports Next.js standalone output and SSR out of the box. sPanel passes dynamic PORT injection into the container so Traefik automatically routes traffic without custom nginx configurations.
Python (FastAPI, Flask, Django)
python / pip / poetryNixpacks mendeteksi requirements.txt atau pyproject.toml secara otomatis. Masukkan command start (misal: uvicorn main:app --host 0.0.0.0 --port $PORT) pada environment variable NIXPACKS_START_CMD jika menggunakan ASGI runner khusus.
Custom Dockerfile
dockerIf your repository contains a root Dockerfile, sPanel switches to native Docker build mode, honoring custom multi-stage build instructions and expose ports.
Environment Variables & Secrets
Securely store credentials with AES-256-GCM encryption.
Environment variables can be defined via the sPanel Project Settings dashboard or uploaded directly as a raw .env file.
Values are encrypted in the local SQLite database prior to storage. When containers start, variables are safely injected into container processes without writing unencrypted secrets to disk.
Domains & Automatic HTTPS (Traefik)
Automated Let's Encrypt SSL certificates for your custom domains.
Point your domain's DNS A Record to your server IP address. In sPanel, add your custom domain in the project routing settings.
Traefik validates the domain and automatically provisions an SSL certificate via ACME HTTP-01 challenge within 60 seconds.
Database Provisioning & Networking
1-Click PostgreSQL, MySQL, and Redis container provisioning.
Provision managed database containers attached directly to the sPanel internal bridge network. Your applications can connect using private container hostnames (e.g., postgres:5432) without exposing database ports to the public internet.
Web Terminal & Live Logs
Direct container interaction without needing SSH client access.
sPanel provides real-time container log streaming via Server-Sent Events (SSE). Use the integrated xterm.js terminal to execute artisan commands, inspect files, or run database seeders inside active containers.
Container Monitoring & Auto-Restart
Real-time resource utilization and restart policies.
Every active application is monitored via Docker Stats API. Memory limits, CPU throttling, and health check thresholds ensure crashed applications restart automatically with zero manual intervention.
<app>.<ip>.sslip.io) after the deployment health checks pass.