Requirements
| Item | Minimum | Notes |
|---|---|---|
| Operating system | Ubuntu 22.04 LTS or 24.04 LTS | Debian 12 is accepted by the installer; Ubuntu is the primary target. |
| Architecture | amd64 (x86_64) or arm64 (aarch64) | |
| Memory | 1 GB RAM | 2 GB or more recommended for Node.js builds, mail or several sites. |
| Disk | 5 GB free | Plus space for your sites, databases and local backups. |
| Access | root or sudo | A fresh server without another control panel is strongly recommended. |
| Network | Public IPv4 (IPv6 optional) | A hostname / domain pointing at the server is needed for trusted HTTPS. |
Ports
| Port | Purpose |
|---|---|
22/tcp | SSH (your current SSH port is detected and kept open) |
80/tcp | HTTP — websites and Let’s Encrypt HTTP-01 challenges |
443/tcp | HTTPS — websites |
7800/tcp | Panel (HTTPS). Change with --panel-port. Consider restricting it to trusted IPs. |
25, 465, 587, 993/tcp | Only if you enable mail hosting (--with-mail) |
53/tcp+udp | Only 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 bashThe installer:
- checks the OS, architecture, memory, disk, hostname and required ports;
- installs system packages (Nginx, PostgreSQL, Certbot, UFW, fail2ban, Node.js LTS and optionally MariaDB, mail and DNS);
- downloads the latest release for your architecture and verifies its SHA-256 checksum and ed25519 signature;
- creates service accounts, directories, secrets and the panel database;
- configures Nginx, the firewall and hardened systemd services;
- creates the first Super Admin and prints a one-time password.
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| Option | Description |
|---|---|
--admin-email EMAIL | Email for the first Super Admin (prompted if omitted) |
--hostname NAME | Panel hostname (default: the server’s FQDN) |
--panel-port PORT | HTTPS port for the panel (default 7800) |
--version X.Y.Z | Install a specific release |
--channel stable|beta | Release channel (default stable) |
--with-mysql / --without-mysql | Install MariaDB for hosted databases (default: with) |
--with-mail | Install Postfix, Dovecot and Rspamd |
--with-dns | Install the PowerDNS authoritative server |
--skip-firewall | Don’t configure UFW |
--tarball PATH | Install from a local release archive (air-gapped installs) |
-y, --yes | Non-interactive; accept defaults |
After installing
- 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. - 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.
- Back up
/etc/ptpanel/master.keyoffline. It decrypts stored secrets such as deploy keys and DNS tokens. - Restrict the panel port to your IP addresses under Security → Firewall if you can.
- 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 releaseUpgrades 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 dataA 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
| Command | Description |
|---|---|
ptpanel status | Show version, service states and the panel URL |
ptpanel start | stop | restart | Control 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 rollback | Switch back to the previous release |
ptpanel uninstall [--purge] | Remove the panel |
ptpanel version | Print 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.binThe 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 / unit | Contents |
|---|---|
/opt/ptpanel | Panel releases (current, previous) |
/etc/ptpanel | Configuration and secrets (including master.key) |
/var/lib/ptpanel | Panel state |
/var/log/ptpanel | Panel logs |
/srv/ptpanel | Workspaces, applications and backups |
ptpanel-agent, ptpanel-api, ptpanel-web | systemd 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, thensudo 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.