Quick Start
What is Hostzeros?
Hostzeros is a self-hosted control panel that lets you manage websites on any VPS (Virtual Private Server). Think of it as a modern alternative to cPanel — but cheaper, faster, and developer-friendly.
It consists of two parts:
- Control plane — the web app at hostzeros.com where you manage everything
- Agent — a lightweight Go binary that runs on your VPS and executes commands
The agent connects outbound to the control plane, so you don't need to open any ports on your VPS.
Requirements
Before you start, you need:
- A VPS running Ubuntu 22.04 or 24.04 (64-bit)
- At least 1GB RAM (2GB+ recommended)
- Root or sudo access to the VPS
- A Hostzeros account (free at hostzeros.com)
Install the Agent
SSH into your VPS and run the install script:
curl -s https://hostzeros.com/install | bash
The script will:
Connect a Server
After running the install script:
Sites
Create a Site
A site is a web application running in its own Docker container on your VPS.
my-blog)yourdomain.com). If you leave it blank, a temporary .nip.io URL is assigned so you can test immediatelyProvisioning takes 30–60 seconds. Once the status shows Active, your site is live.
PHP, Node.js & Static
PHP — Runs Apache + PHP (8.1, 8.2, or 8.3). Files are served from /var/www/html/ inside the container, mapped to your site's public/ folder on the VPS. Perfect for WordPress, Laravel, and any PHP app.
Node.js — Runs your Node.js app (18, 20, or 22). You specify a start command (e.g. npm start) and the port your app listens on. Traefik proxies incoming HTTP/HTTPS to that port.
Static — Nginx serves static files directly. Upload your HTML/CSS/JS via the file manager. Perfect for frontend apps, documentation sites, or landing pages.
Add a Domain
Create a Subdomain Site
Each subdomain can be its own independent site with separate files, databases, and SSL.
blog for blog.yourdomain.com)* A record in your DNS pointing to the server IP — then any subdomain works without individual A records.Delete a Site
Go to your site → scroll to Danger Zone → click "Delete site". You will be asked to confirm before anything is deleted.
The agent will stop the container, remove Docker volumes, and clean up the VPS. Any associated database and database users are also deleted automatically.
SSL & HTTPS
How SSL Works
Hostzeros uses Traefik as a reverse proxy on your VPS. Traefik handles SSL certificates via the Let's Encrypt ACME HTTP-01 challenge — no DNS API keys needed.
When you add a domain, Traefik automatically requests a free SSL certificate from Let's Encrypt. Certificates are renewed automatically before they expire (every 90 days).
Enable SSL
SSL is issued automatically when you add a real domain. There is nothing to click.
If you need to manually trigger it: go to the site → Domains & SSL → click the lock icon next to your domain.
The status will show "Issuing…" then change to "SSL active" within 30–60 seconds.
Auto-issuance & Renewal
Every 10 minutes, a background job checks for domains without active SSL and triggers issuance automatically. This means even if you add a domain while the server is offline, SSL will be issued once the server comes back online.
Certificates renew automatically via Traefik's built-in renewal. You never need to manually run certbot.
Troubleshooting SSL
If SSL issuance fails, common causes are:
- DNS not propagated yet — Let's Encrypt can't reach your domain. Wait a few minutes and try again.
- Port 80 blocked — The HTTP-01 challenge requires port 80 to be open. Check your VPS firewall.
- Domain points to wrong IP — Verify your A record points to the correct server IP.
- Rate limit — Let's Encrypt allows 5 failed attempts per domain per hour. Wait and retry.
File Manager
Browse & Navigate
The file manager is available on every site's detail page under "Files". It shows the contents of your site's public/ directory.
Click any folder to navigate into it. Use the breadcrumb at the top to go back. Folders appear first, sorted alphabetically, followed by files.
Edit Files
Click the pencil icon (or click directly on a file name) to open the code editor.
The editor features:
- Syntax highlighting for PHP, JS, HTML, CSS, JSON, and more
- Line numbers
- Tab key support
Click "Save" to write the file back to the VPS. Changes are immediate.
Upload Files
There are two ways to upload:
Drag & drop — Drag files from your computer onto the file manager area. A blue drop zone appears.
Upload button — Click the Upload button (cloud with arrow) in the toolbar and select files.
Multiple files can be uploaded at once. Progress is shown per file.
Create Folders & Files
Click the + folder icon in the toolbar to create a new directory. You will be prompted for the folder name.
To create a new file, click the + file icon and enter the filename (e.g. index.php). An empty file is created which you can then edit.
To rename a file or folder, click the three-dot menu (⋯) next to it and select Rename.
Server File Manager
The server-level file manager lets you browse all sites' files from one place, without switching between sites.
Access it from your server's detail page under "Server Files". It starts at /opt/easypanel/sites/ and shows all site directories.
Navigate into any site's folder to browse and edit its files. All the same operations are available: edit, upload, delete, rename.
Databases
Create a Database
Hostzeros manages a MariaDB instance on your VPS. Each site can have its own database (or share one).
Database Users
Each database comes with a dedicated user that has full privileges on that database only. You can also create additional users.
To rotate (regenerate) a password: click the rotate icon next to the user. The new password is shown once.
phpMyAdmin
Need a GUI for your database? Deploy phpMyAdmin with one click from the Databases section.
Rotate Password
To rotate a database user's password:
Environment Variables
Add Variables
Environment variables are injected into your site's container at startup. They're perfect for API keys, database URLs, and secrets.
Common variables:
APP_KEY=base64:xxxx... APP_URL=https://yourdomain.com DB_HOST=mariadb DB_DATABASE=mysite_db DB_USERNAME=mysite_user DB_PASSWORD=secret
Applying Changes
Environment variable changes take effect after the site container is restarted.
After saving, click "Restart" in the site header to apply the new values.
php artisan config:cache via the terminal after updating env vars.Deployments
Deploy from Git
Hostzeros can deploy any public or private Git repository directly to your site.
https://github.com/user/repo.git)main)The agent clones the repo into your site's public/ directory. Deployment logs appear in real time.
Build Commands
For apps that need to be compiled (React, Vue, Node.js), add a build command:
Example build commands:
npm install && npm run buildcomposer install --no-devpip install -r requirements.txt
The command runs inside the site's container after the code is cloned.
Deployment Logs
Each deployment shows a status (Pending → Running → Success/Failed) and full logs.
Click on any deployment row to expand and see the full output including build command output, errors, and timing.
Cron Jobs
Add a Cron Job
Common use cases:
- Laravel scheduler:
php artisan schedule:runevery minute - WordPress cron:
wp cron event run --due-nowevery 5 minutes - Custom scripts every hour
Cron Syntax
Cron expressions have 5 fields: minute hour day-of-month month day-of-week
* * * * * Every minute 0 * * * * Every hour (on the hour) 0 0 * * * Every day at midnight 0 0 * * 0 Every Sunday at midnight */5 * * * * Every 5 minutes 30 3 * * * Every day at 3:30 AM
Backups
Configure S3
Hostzeros backs up to any S3-compatible bucket: AWS S3, Backblaze B2, Cloudflare R2, MinIO, etc.
For AWS S3: endpoint is s3.amazonaws.com. For Cloudflare R2: use your R2 endpoint URL.
Backup Policy
Set up automatic backups per site:
Restore a Backup
To restore a previous backup:
One-Click Apps
Install WordPress
/blog) to install in a subdirectoryThe agent downloads WordPress, configures wp-config.php with your database credentials, and runs the installer. Takes about 30–60 seconds.
.env file.Install Laravel
This runs composer create-project laravel/laravel . in your site's public folder and sets a random APP_KEY.
Email Accounts (Mailboxes)
Hostzeros doesn't host email (running a mail server has serious deliverability challenges). Instead, the Email tab generates the exact DNS records you need for third-party email providers.
Go to your site → Email → Email accounts tab. Choose a provider:
- Zoho Mail — Free for up to 5 users. Great for individuals and small teams.
- Google Workspace — Gmail with your domain. Best deliverability.
- Microsoft 365 — Outlook + Office apps.
- Fastmail — Privacy-focused, $3/user/month.
The panel shows the exact MX, SPF, DMARC, and DKIM records to add in your DNS provider. Copy each one and add them in Hostinger/Cloudflare/Namecheap.
Transactional SMTP
For your app to send emails (password resets, notifications), you need a transactional email service.
Go to Email → Transactional (SMTP) tab. Choose a provider:
- Brevo — Free 300 emails/day. Best for small apps.
- Mailgun — $0.80 per 1,000 emails. Good analytics.
- SendGrid — Free 100/day, 40k first month.
The panel generates the environment variables to paste into your site's Environment Variables section. For Laravel:
MAIL_MAILER=smtp MAIL_HOST=smtp-relay.brevo.com MAIL_PORT=587 MAIL_ENCRYPTION=tls MAIL_USERNAME=your-email@example.com MAIL_PASSWORD=your-smtp-key MAIL_FROM_ADDRESS=noreply@yourdomain.com MAIL_FROM_NAME="My App"
Teams
Create a Team
Teams let you organize servers and share access with other people. Every resource (server, site, database) belongs to a team.
Invite Members
Team members have access to all servers and sites within that team.
Something missing? Open an issue on GitHub