SmashPanel – home
Charcoal illustration of a small server on pale steps, with a gold-outlined window of configuration lines.

// Get started

Install SmashPanel on your server

Ubuntu 22.04 or 24.04 LTS, a domain you control, and the commands below. The examples use example.com. There is no default admin password.

Install stepsInstall article

Requirements

What the server needs
RequirementDetail
Operating systemUbuntu 22.04 LTS or Ubuntu 24.04 LTS.
CPU architecture64-bit x86 (amd64).
Memory8 GB of RAM when you install mail. The installer warns below 4 GB.
Disk100 GB is a practical starting size. The installer warns below 50 GB free.
CPU2 vCPU or more.
AccessRoot SSH, a public IPv4 address, and a domain you control.
Port 53Must be free for authoritative DNS. On Ubuntu the installer releases it if the local resolver is holding it.
Dedicated IPsOptional, for accounts that need their own address.

Copy the SmashPanel files onto the server. This website does not offer a separate download package. The commands below run from the directory you copied them into, shown here as <install-dir>.

Don't have the SmashPanel files yet? Contact support@smashhithosting.com for access.

DNS records

Create these before or just after install. SSL and public DNS work once the registrar points the names at the server.

DNS records for example.com. Point each A record at the server's public IPv4 address.
RecordPurpose
panel.example.comAdmin, reseller and client portals.
mail.example.comMailcow, if you install mail.
docker.example.comPortainer. It redirects into the panel.
status.example.comThe bundled uptime tool. Monitors are not created for you.
host1.example.comThe server's own hostname.
ns1 and ns2Optional glue records, when customer domains will use your nameservers.
PTRSet at the server provider: the server IP address points at the mail hostname.

Ports

Ports the installer opens
PortService
SSH22 by default, or the port you choose in the wizard.
80 and 443HTTP and HTTPS. Certificate issuance needs port 80.
53DNS, TCP and UDP, on the primary address.
22000–22999One SFTP port per hosting account.
25, 465, 587, 993, 995, 4190, 143, 110Mail, only when Mailcow is installed.
51820/udpWireGuard, when VPN is in use.
1194/udp and 1195/tcpOpenVPN, when VPN is in use.
500, 4500 and 1701/udpIPsec and L2TP, when VPN is in use.

Install

  1. Go to the directory that holds the SmashPanel files and start the installer.

    cd <install-dir>
    sudo bash scripts/host-setup/install.sh

    Only needed if you copied the files from a Windows machine:

    sudo bash scripts/fix-line-endings.sh
  2. Answer the wizard. It asks for the base domain (example.com), the panel hostname (default panel.example.com), the server hostname (default host1.example.com), an admin email address for Let's Encrypt, the public IPv4 address, the network interface, the gateway, any extra dedicated IPs, whether to install Mailcow and its hostname, and the SSH port.

  3. If the server's network is already correct, you can skip the network and package-upgrade steps.

    sudo bash scripts/host-setup/install.sh --skip-network --skip-upgrades

    Other flags: --yes, --reconfigure, --dry-run, --skip-mailcow, --skip-upgrades, --skip-network, --skip-dns-check, and --config FILE.

  4. The installer runs twelve steps: preflight, base packages, SSH settings with fail2ban and time sync, network, firewall, Docker, system limits, directories, the host agent, the platform stack, post-install wiring (DNS, certificates, mail if you chose it, and the admin login), then a verify step. If a step fails, resume it:

    sudo bash scripts/host-setup/setup.sh --step <step>
  5. For an unattended run, write the answers first, check them, then install:

    sudo bash scripts/host-setup/configure-host.sh --non-interactive
    sudo bash scripts/host-setup/setup.sh --strict --validate-only
    sudo bash scripts/host-setup/setup.sh

First login

Open the panel:

  • Admin: https://panel.example.com/admin
  • Client: https://panel.example.com/client
  • Reseller: https://panel.example.com/reseller

The generated admin username and password are written to a root-only file on the server. There is no default password. Read that file as root, sign in, and enrol two-factor authentication before you create hosting accounts. Admin two-factor authentication cannot be turned off.

After install

  1. Sign in and enrol two-factor authentication. You need it before the panel will create clients.
  2. Point the registrar A and NS records at the server so public DNS and certificates work.
  3. Set the PTR record at the provider so the server IP address resolves to the mail hostname.
  4. Optional: limit who can open the admin area by IP address.
  5. If mail was installed and the admin health check for it is not OK, run the mail setup script, then reset the mail admin password from the panel:
sudo bash scripts/mailcow/ensure-panel-api-key.sh
  1. Optional: connect GitHub under Admin, System, Integrations, so accounts can deploy from a repository.
  2. Create the first hosting account under Admin, Clients, or from the shell:
bash scripts/clients/create-client.sh --username acme --domain example.com --with-db

Next

Moving a site from cPanel?

The backup upload, the live SSH transfer and the command-line import are on the migrations page.

Get startedBrowse the knowledge base