# Install SixPanel

> Source: https://www.allsweb.com/sixpanel/docs/install
> Markdown for agents: https://www.allsweb.com/sixpanel/docs/install.md
> Publisher: AllsWeb (www.allsweb.com)

Part of: SixPanel documentation

**What this page is for.** Run one command on a fresh server, and save the three things it prints at the end.

**You need**

- A fresh server running **Ubuntu 26.04 LTS**, **Ubuntu 24.04 LTS** or
  **Debian 13 (trixie)**. Ubuntu 26.04 LTS is the recommended choice for a new
  server.
- The `root` login for that server, and an SSH program to reach it (Terminal
  on Mac or Linux, PowerShell or PuTTY on Windows).
- The server must be able to reach the internet while it installs.

You do **not** need a licence code, a customer number or a password to run the
installer. The command below is the same for everybody and contains no secrets.

---

## 1. Check the server is allowed

The installer stops with a clear message if any of this is wrong, so you cannot
break anything by trying. But checking first saves time.

| Item | What is allowed |
|---|---|
| Operating system | **Ubuntu 26.04 LTS, Ubuntu 24.04 LTS, or Debian 13 (trixie)** — and nothing else |
| Processor type | x86_64, or arm64 (also called aarch64) |
| Memory (RAM) | at least about 1.2 GB, and 2 GB or more is recommended |
| Other panels | none — aaPanel, CloudPanel, cPanel and Plesk are refused |
| Ports 80 and 443 | nothing else may be listening on them |

**The list is a hard requirement, not a preference.** The server's web server,
database, PHP and certificate tool all come from that release's own package
archive, at the versions it ships and supports. On any other system those
package names either do not exist or mean something different, so the installer
refuses before it downloads anything. If your provider gave you 22.04, or
Debian 12, rebuild the server with one of the three above. There is no flag that
gets around this.

**Debian 12 is refused by name.** Its own security support ended in July 2026,
and the only PHP its archive carries is 8.2, whose upstream security support
ends in December 2026 — a server built on it today would be running an
unsupported PHP within months. Use **Debian 13 (trixie)** instead: same family,
and its archive serves PHP 8.4 with security updates arriving on their own.

Why a *fresh* server? SixPanel manages this machine's nginx, PHP-FPM, MariaDB
and Redis configuration, and takes ports 80 and 443 for your project. On a
server that already runs another control panel the two fight over the same
ports and the same files.

## 2. Do this first: point your domain at the server

> **Do this first** — at your domain provider (GoDaddy, Namecheap, Cloudflare
> and so on), create a DNS **A record** for your project's name and set it to
> your server's IP address.

You do not need it for the install itself. You need it for the free HTTPS
certificate a few steps later, and DNS changes take time to spread. Starting
the clock now means the certificate works on the first try.

**Using Cloudflare?** You can skip this by hand entirely. Connect your
Cloudflare token in the first-run wizard and the panel creates the records for
you, already proxied. See **[Cloudflare](https://www.allsweb.com/sixpanel/docs/cloudflare)**.

## 3. Log in to the server and become root

Open your SSH program and connect to the server. Then run:

```bash
sudo su root
```

Some providers (AWS, Oracle Cloud, Google Cloud) log you in as `ubuntu` or
`opc` instead of `root`. The line above turns you into `root`. The installer
refuses to run as anyone else.

Every `sixpanel` command in this manual is written with `sudo` in front of it,
because on those providers it does not run without it. If you are already
`root` you can drop the `sudo`. Leaving it in does no harm.

Then bring the system up to date and add the small tools the installer uses:

```bash
apt update && apt -y upgrade && apt -y install curl ca-certificates
```

## 4. Run the install command

One line. There is nothing to fill in and no code to paste:

```bash
curl -fsSL https://installer.allsweb.net/sixpanel-native/install.sh | sudo bash
```

`https://installer.allsweb.net/native/install.sh` is the same file under a
shorter name, if you prefer to type less.

**What protects a command that runs as `root`.** Not the address it came from —
addresses can be faked. The installer carries our release signing key inside
itself, and every file it goes on to download is checked against a signature
made with the matching private key, which never leaves an offline password
manager. If any byte does not match, the installer stops and nothing is
installed. That check is automatic and you cannot accidentally skip it.

If you would rather read the script before running it, download it first and
look:

```bash
curl -fsSL https://installer.allsweb.net/sixpanel-native/install.sh -o install.sh
less install.sh          # read it
sudo bash install.sh     # then run it
```

## 5. Watch it work

The installer prints its progress. In order, it:

1. Checks the operating system, the processor, the memory and that the server
   is fresh.
2. Verifies our signature on the release, checks that the release was built for
   this processor type, then downloads and checks the SixPanel files.
3. Unpacks them into `/opt/sixpanel`.
4. Installs the serving stack from your release's own archive: nginx, MariaDB,
   PHP with the extensions 6ammart needs, Redis, certbot, and the backup tools.
   Node.js comes from the Node project's own archive, at the exact version this
   release was built against.
5. Adds a small swap file if the machine has little memory, and switches on the
   system's unattended security updates.
6. Creates random passwords and picks a **random high port number** for the
   panel.
7. Sizes the database, the cache and the PHP workers for your server's memory
   and processor count.
8. Writes the web server, PHP and database configuration, starts everything,
   and boots the panel.

There is no image to build, so this is mostly download and configure time — a
few minutes on an ordinary server. Leave the window open.

## 6. Save what it prints

At the end you get a box like this:

```
[sixpanel] ──────────────────────────────────────────────────────────
[sixpanel]  SixPanel is running
[sixpanel]    Panel URL : https://203.0.113.10:41397/8ec0896a1f...
[sixpanel]    User      : admin7f3q
[sixpanel]    Password  : (printed here once)
[sixpanel]  Open TCP 41397 in your provider firewall (22/80/443 + this port).
[sixpanel]  The browser shows a certificate warning until a panel domain + SSL is set.
[sixpanel] ──────────────────────────────────────────────────────────
```

> **Save this** — copy the **whole** Panel URL, the **User** and the
> **Password** into your password manager or a note, right now, before you close
> the window. All three are needed to log in.

Two things make that address hard to find. The port number is random, so it is
different on every server. And the address ends in a **secret entry code**.
Without that exact code the panel answers with a blank "not found" page — on
purpose. That is what keeps the login page away from people scanning the
internet.

The **User** is not simply `admin`. It is generated at install, so a robot that
finds your login page has no name to aim at. You can change it later on the
**Security** page.

The password is generated once and shown once. It is stored only as a hash,
which means it cannot be read back afterwards.

**Have your phone ready for the first login.** The panel offers to set up
two-factor login straight away, and it is worth doing while you are already
sitting there. If you have no phone to hand at that moment, the same screen
offers **Not now — continue without two-factor login**, and you can turn it on
later from the **Security** page. See **[First login](https://www.allsweb.com/sixpanel/docs/first-login)**.

**Closed the window too soon?** Nothing is lost. Log back in to the server and
run:

```bash
sudo sixpanel info             # prints the full panel URL and the user name
sudo sixpanel username         # just the user name
sudo sixpanel password reset   # sets and prints a new admin password
```

`sudo sixpanel password reset` asks you to confirm first. It cannot show you
the old password — that one is gone for good.

## 7. Open the three ports at your provider — before you try to log in

SixPanel needs exactly three ports reachable from the internet: your panel
port, **80**, and **443**. Nothing else, ever.

You do this in your hosting provider's dashboard (it is called a cloud
firewall, or a security group), not on the server itself. A closed panel port
is the single most common reason the panel will not open.

Do this **now**, before **[First login](https://www.allsweb.com/sixpanel/docs/first-login)**. The install can
finish perfectly and the panel address still not open, and this is why.

Full steps: **[The three ports](https://www.allsweb.com/sixpanel/docs/firewall)**.

---

## How to check it worked

- The installer ended with the box above and no red `ERROR:` line.
- On the server, `sudo sixpanel info` prints your panel URL, the admin user,
  and a list of services with their state.
- `sudo sixpanel service list` shows nginx, PHP, MariaDB, Redis and the panel
  running.
- Open the panel URL in a browser. You get a certificate warning (expected —
  see **[First login](https://www.allsweb.com/sixpanel/docs/first-login)**) and then a page asking for a
  username and a password.

## If it went wrong

**"unsupported OS" / "Debian 12 is no longer supported"**
The server is not one of the three supported releases. Rebuild it with an
Ubuntu 26.04 LTS, Ubuntu 24.04 LTS or Debian 13 image. There is no way around
this one — see step 1 for why.

**"unsupported architecture" / "only NNNMB RAM"**
The server does not meet the requirements in step 1. Rebuild it, or move to a
bigger server.

**"this release was built for amd64, and this server is arm64"**
The panel ships as compiled bytecode that only runs on the processor type it
was built for. Ask support for the build that matches your server, quoting that
line. Nothing was installed.

**"this does not look like a fresh server"**
The message lists what it found — another control panel, or something already
listening on port 80 or 443. Use a clean server. The `--force` option exists
but it lets two systems fight over the same ports, so do not reach for it.

**"openssl is required to verify the release signature"**
Run `apt -y install openssl` and run the install command again.

**"the download did not match its expected checksum"**
Almost always an interrupted download. Run the install command again. If it
fails a second time, stop and contact support — do not retry a third time.

**"the release manifest is NOT signed by SixPanel's release key"**
Stop. Nothing was installed. Do not retry. Contact support.

**"this release record is out of date"**
The published release information is older than the period it is valid for.
Ask support for a fresh download link rather than working around it.

**The installer stopped part-way through**
The verified files are already on disk, so this is resumable. Run the same
command again — a re-run over an existing install is the supported repair path
and also the update path.

**The panel URL shows `<see …panel.json>` instead of a code**
The panel had not finished its first boot when the banner printed. Wait a
minute, then run `sudo sixpanel info` for the real address.

**Everything installed but the panel will not open**
Nine times out of ten it is the ports in step 7. Check them first, then read
**[When something is broken](https://www.allsweb.com/sixpanel/docs/troubleshooting)**.
