Documentation
Everything you need to deploy your apps with Darmi Cloud.
Getting started
Sign in with GitHub from the home page. On first sign-in we request access to your repositories so the deploy worker can clone them on your behalf.
Once signed in you land on the dashboard. Click “New Project” to import a repository and configure your first deployment.
Import a GitHub repository
Step 1 — pick a repository from the list (search by name).
Step 2 — choose the branch to deploy (the default branch is preselected).
Step 3 — configure the project: name, framework preset, and build/start commands.
Step 4 — add environment variables (mark secrets as sensitive).
Step 5 — deploy. We queue a deployment job and take you to its live logs.
Environment variables
Environment variables are injected into your container at runtime.
Variables marked as “sensitive” are never shown again in the UI after saving — only the key is displayed.
Changing variables takes effect on the next deployment. Click Redeploy after editing.
Framework presets
Static Site — built output served by nginx.
React / Vite — npm install + build, served by nginx from the output directory (default: dist).
Next.js — npm install + build + start (standalone server on port 3000).
Node.js / Express — npm install, optional build, then npm start.
Laravel — composer install, then php artisan serve (MVP server).
Django — pip install, collectstatic, then gunicorn.
Dockerfile — we use the Dockerfile already present in your repository.
Automatic deployments & previews
When you create a project, Darmi Cloud installs a GitHub webhook on your repository.
Push to your production branch → a new production deployment is triggered automatically.
Open a pull request → Darmi Cloud builds a preview at <project>-pr-<number>.<platform-domain> so you can review changes on a live URL.
Close or merge the pull request → the preview is automatically torn down.
Toggle auto-deploy or reconnect the webhook in Project → Settings → Git. Webhooks require the app to run on a public URL (not localhost).
Custom domains
Each project gets an automatic subdomain: <project-slug>.<platform-domain>.
To use a custom domain, add it in project settings and create a CNAME record pointing to your project subdomain.
Domain verification is a placeholder in this MVP; once DNS resolves to the server, Traefik + Let's Encrypt issue the certificate.
Deployment logs
Open any deployment to see live build and runtime logs, streamed while the deployment is in progress.
Statuses move through: queued → cloning → building → deploying → deployed (or failed).
If a deployment fails, the error message and full logs are kept for debugging.
Troubleshooting
Build fails immediately — check your install/build commands and that the root directory is correct.
App starts but 502s — make sure your app listens on the port we inject via the PORT environment variable (or the framework's default).
Private repo won't clone — re-authenticate with GitHub to refresh the access token.
Worker not processing — ensure Redis is running and `npm run worker` is active.