Install
Install Hostpanel
One command on a Linux server with Docker. The installer sets up HTTPS for you.
Before you start
- A Linux server with Docker and the Compose v2 plugin installed and running.
- Two different host names pointing at the server: one for the client portal and one for the admin panel.
- An email address for the administrator account and the Let's Encrypt certificate.
- Ports 80 and 443 free and reachable, unless you install without TLS.
Run the installer
curl -fsSL https://raw.githubusercontent.com/innovayse/hostpanel/main/install.sh | bashThe installer checks for docker, docker compose, curl and openssl, and names anything that is missing.
Step by step
From an empty server to your first sign-in
The same five steps on every install.
Point the DNS
Point both host names at your server and wait for them to propagate.
Run the installer
Paste the command on the server. It downloads three files into /opt/hostpanel.
Answer three prompts
The portal domain, the admin domain and an admin email, which is also the certificate contact.
Wait for the stack
The installer pulls the images, starts everything and waits up to five minutes for the health check.
Claim the administrator role
Open the admin panel, create your account and paste the one-time setup token.
Then set up mail
The installer leaves the mail relay empty on purpose. Until you set a real one, no verification, password reset or invoice email is sent.
Configuration reference

Installer options
Flags and variables
Pass flags through the pipe, for example bash -s -- --version 1.4.0, or set the matching variable in front of bash.
--dir or HOSTPANEL_DIR
The install directory. The default is /opt/hostpanel.
--version or HOSTPANEL_VERSION
The release to install. The default is the latest.
--no-tls or HOSTPANEL_TLS=off
Serve plain HTTP on port 8080 behind your own TLS proxy.
HOSTPANEL_NONINTERACTIVE=1
Skip the prompts. Set HOSTPANEL_DOMAIN and HOSTPANEL_ADMIN_EMAIL first.
Behind your own proxy, forward both host names to port 8080, keep the original Host header and add X-Forwarded-Proto: https, because sign-in cookies need a secure origin.
Keep it running
Updates, backups and rollback
Take a database dump before every upgrade. Migrations run forward when the API starts and never backwards.
Back up
Keep .env with every database dump. Without the same encryption key a restore cannot read stored secrets.
Backup guideRoll back
If a release added a migration, restore your dump first, then start the old version.
Rollback guideTroubleshooting
When something does not start
Read the API log first. It names the setting that failed.
cd /opt/hostpanel && docker compose -f docker-compose.hub.yml logs hostpanel-apiThe API refuses to start
A secret still holds a placeholder, or the mail encryption setting is not tls, ssl or none. The log names the key.
Certificates are not issued
Both host names must resolve to the server before the first request. Check with dig, then run the installer again.
The stack is not healthy in time
The installer waits five minutes. Read the API and database logs for the start-up error.
No emails arrive
The mail relay is empty until you set it in .env. Set it, then run docker compose up -d again.
The setup token is lost
Restart the API and read the newest token from its log. It is printed again while setup is outstanding.
FAQ
Install questions
Can I install behind my own proxy?
Yes. Use the no-TLS option and forward both host names to port 8080.
Why two host names?
The admin panel is served from the root path, so it needs a host of its own.
Can I skip the script?
Yes. Download the three files, fill in .env and run docker compose by hand. The install guide lists the steps.
Which CPU architectures work?
Prebuilt images exist for amd64 and arm64.