Documentation

Installation guide

Everything you need to install, upgrade and operate Pushpendra Panel on your own server.

Requirements

ItemMinimumNotes
Operating systemUbuntu 22.04 LTS or 24.04 LTSDebian 12 is accepted by the installer; Ubuntu is the primary target.
Architectureamd64 (x86_64) or arm64 (aarch64)
Memory1 GB RAM2 GB or more recommended for Node.js builds, mail or several sites.
Disk5 GB freePlus space for your sites, databases and local backups.
Accessroot or sudoA fresh server without another control panel is strongly recommended.
NetworkPublic IPv4 (IPv6 optional)A hostname / domain pointing at the server is needed for trusted HTTPS.

Ports

PortPurpose
22/tcpSSH (your current SSH port is detected and kept open)
80/tcpHTTP — websites and Let’s Encrypt HTTP-01 challenges
443/tcpHTTPS — websites
7800/tcpPanel (HTTPS). Change with --panel-port. Consider restricting it to trusted IPs.
25, 465, 587, 993/tcpOnly if you enable mail hosting (--with-mail)
53/tcp+udpOnly if you enable the DNS server (--with-dns)

Ports 80, 443 and the panel port must be free before installing. Databases and Redis stay bound to localhost.

Install

Connect to your server over SSH and run:

curl -fsSL https://ptpanel.in/install.sh | sudo bash

The installer:

  1. checks the OS, architecture, memory, disk, hostname and required ports;
  2. installs system packages (Nginx, PostgreSQL, Certbot, UFW, fail2ban, Node.js LTS and optionally MariaDB, mail and DNS);
  3. downloads the latest release for your architecture and verifies its SHA-256 checksum and ed25519 signature;
  4. creates service accounts, directories, secrets and the panel database;
  5. configures Nginx, the firewall and hardened systemd services;
  6. creates the first Super Admin and prints a one-time password.
Prefer to read the script first? curl -fsSL https://ptpanel.in/install.sh -o install.sh, review it, then run sudo bash install.sh.

Installer options

Pass options after bash -s --, for example:

curl -fsSL https://ptpanel.in/install.sh | sudo bash -s -- --admin-email you@example.com --hostname panel.example.com
OptionDescription
--admin-email EMAILEmail for the first Super Admin (prompted if omitted)
--hostname NAMEPanel hostname (default: the server’s FQDN)
--panel-port PORTHTTPS port for the panel (default 7800)
--version X.Y.ZInstall a specific release
--channel stable|betaRelease channel (default stable)
--with-mysql / --without-mysqlInstall MariaDB for hosted databases (default: with)
--with-mailInstall Postfix, Dovecot and Rspamd
--with-dnsInstall the PowerDNS authoritative server
--skip-firewallDon’t configure UFW
--tarball PATHInstall from a local release archive (air-gapped installs)
-y, --yesNon-interactive; accept defaults

After installing

  1. Open the panel URL printed at the end (https://your-hostname:7800) and sign in with the one-time password. You will be asked to choose a new password.
  2. The panel starts with a temporary self-signed certificate — your browser warns once. Point a domain at the server and attach it in Settings to get a trusted certificate.
  3. Back up /etc/ptpanel/master.key offline. It decrypts stored secrets such as deploy keys and DNS tokens.
  4. Restrict the panel port to your IP addresses under Security → Firewall if you can.
  5. Add your first website, then connect a Git repository to deploy.

Upgrade & rollback

sudo ptpanel upgrade            # latest release on your channel
sudo ptpanel upgrade 1.2.0      # a specific version
sudo ptpanel rollback           # switch back to the previous release

Upgrades download and verify the new release, switch to it atomically and run a health check. If the health check fails, the previous release is restored automatically. Database migrations are forward-only — take a backup before major upgrades.

The panel can also check for updates itself; see Download for release notes.

Uninstall

sudo ptpanel uninstall          # removes the panel; keeps hosted sites, data and config
sudo ptpanel uninstall --purge  # ALSO deletes hosted sites, backups and panel data

A normal uninstall keeps websites running under Nginx and leaves /srv/ptpanel and /etc/ptpanel in place. --purge asks you to type a confirmation phrase before deleting anything.

CLI reference

CommandDescription
ptpanel statusShow version, service states and the panel URL
ptpanel start | stop | restartControl the panel services
ptpanel logs [agent|api|web] [n]Show recent service logs (default: api, 200 lines)
ptpanel create-admin <email> [name]Create a Super Admin and print a one-time password
ptpanel upgrade [version]Upgrade to the latest (or given) release
ptpanel rollbackSwitch back to the previous release
ptpanel uninstall [--purge]Remove the panel
ptpanel versionPrint the installed version

Commands that change the system must be run with sudo.

Verifying releases

Each release archive on the download page has two companions: .sha256 (checksum) and .sig (base64 ed25519 signature). The installer verifies both automatically. To check an archive by hand:

V=1.0.0; A=amd64; F=ptpanel-$V-linux-$A.tar.gz
curl -fsSLO https://ptpanel.in/releases/$V/$F
curl -fsSLO https://ptpanel.in/releases/$V/$F.sha256
curl -fsSLO https://ptpanel.in/releases/$V/$F.sig
sha256sum -c $F.sha256
base64 -d $F.sig > $F.sig.bin
openssl pkeyutl -verify -pubin -inkey release-public.pem -rawin -in $F -sigfile $F.sig.bin

The public key is embedded in the installer script (RELEASE_PUBKEY).

Machine-readable release information is available at /api/releases/latest?channel=stable and /api/releases.

Files & services

Path / unitContents
/opt/ptpanelPanel releases (current, previous)
/etc/ptpanelConfiguration and secrets (including master.key)
/var/lib/ptpanelPanel state
/var/log/ptpanelPanel logs
/srv/ptpanelWorkspaces, applications and backups
ptpanel-agent, ptpanel-api, ptpanel-websystemd services

Troubleshooting

  • “port 80 is already in use” — another web server (often Apache) is running. Remove it or install on a fresh server.
  • Panel not reachable — run sudo ptpanel status, then sudo ptpanel logs api. Check that the panel port is open in your cloud provider’s firewall too.
  • Signature verification failed — do not bypass it. Re-download the installer from this site and try again; if it persists, tell us via the security contact.
  • Lost admin password — create a new Super Admin with sudo ptpanel create-admin you@example.com.

Still stuck? Ask in the community forum.