Installation
Installing WardPane on a clean Ubuntu 24.04 LTS server takes a few minutes. You need root access over SSH, and the installer checks the rest itself.
Requirements
| What | Needed |
|---|---|
| System | Ubuntu 24.04 LTS, x86_64 or arm64, freshly installed |
| Memory | 1 GB of RAM is enough for a dozen small sites. On 512 MB, use the GeoLite2 Country database instead of City |
| Ports | 80 and 443 for the sites, 1500 for the panel. They must be free: if nginx or Apache holds them, the installer stops |
| Access | root, or a user with sudo |
| Network | outbound HTTPS to Let’s Encrypt, nodejs.org and wardpane.com |
If your VPS provider has its own firewall (often called security groups), open TCP 80, 443 and 1500 there as well.
One command
Connect to the server over SSH and run:
curl -fsSL https://wardpane.com/install | sudo bash
The script:
- checks that the system is Ubuntu 24.04, that it runs as root and that
curl,tarandsha256sumare present; - asks for your email and shows the links to the Terms of use, the Privacy policy and the Consent to the processing of personal data;
- asks whether you accept the Terms and the Privacy policy, then whether you consent to the processing of personal data. Answering No to either stops the install;
- asks whether to send you news and offers (the default is No);
- sends a six-digit code to your email. Type it in; it is valid for 15 minutes and 5 attempts;
- downloads the release over HTTPS, checks its SHA-256 checksum against the one published on wardpane.com, extracts it and runs the panel’s
install.sh. If the checksum does not match, it stops before running anything.
To pass options to install.sh, add them after bash -s --:
curl -fsSL https://wardpane.com/install | sudo bash -s -- --php --email [email protected]
From the archive
Request the archive on the download page. The link you get by email works for 24 hours and for a single download. Check its SHA-256 checksum as described on that page, copy the archive to the server, then:
tar xzf wardpane-2.0.0.tar.gz
cd wardpane
sudo ./install.sh --email [email protected]
What the installer does
- Checks the OS, architecture, memory, disk, free ports and that the Let’s Encrypt API is reachable.
- Installs Node.js LTS if a suitable version is missing.
- Creates the system user
wardpaneand the folders/opt/wardpane,/var/lib/wardpaneand/var/www. The user who ransudojoins thewww-datagroup and can then upload files over SFTP without root. - Asks for the panel sign-in (see below) and writes
/opt/wardpane/.env. - Installs the systemd service
wardpane. The service runs without root and with systemd hardening; the only extra capability it has is binding ports 80 and 443. - Configures ufw: SSH (the port of your current session and the one from
sshd -T), 80, 443 and 1500. - Starts the service and checks that the panel answers.
At the end it prints the panel address, https://<server-ip>:1500, and the sign-in details.
The first sign-in
When you run the installer from a terminal without --user and --password, it offers two choices:
- [1] Generate (the default, recommended): a random name like
admin-x7k2q9and a 24-character password. Both are printed at the end. Save them. - [2] Choose your own: a name (Enter means
admin; letters, digits and. _ @ -) and a password typed twice without echo, at least 12 characters, without quotes, backslashes or line breaks. Three failed attempts stop the installer.
Without a terminal, or with -y, there are no questions: the name is admin (or --user) and the password is random.
You sign in to the panel with this name and password. You can also allow signing in as root with the server’s root password (--root-login, off by default); see panel security. Signing in as other users of the server with their OS password is planned for 2.2; see users.
Installer options
| Option | What it does |
|---|---|
--email <address> |
Email for the Let’s Encrypt account. Without it no certificates are issued |
--user, --password |
Set the panel sign-in without questions. Prefer typing the password at the prompt: while the install runs, a password given as an option is visible to other users in ps |
--ip <address> |
The public IPv4 address, if detection picks the wrong one |
--staging |
Use the Let’s Encrypt staging environment (test certificates) |
--php, --no-php |
Install PHP, or skip the question |
--root-login, --no-root-login |
Allow or forbid signing in as root with the server’s root password |
--no-ufw |
Do not touch the firewall |
--force |
Continue despite checks that can be overridden |
-y |
No questions: default answers, a random password |
Upgrading from Small Web Panel 1.x
Run the new installer on the server that has 1.x. The installer converts that installation in place. First it backs everything up into /var/backups/wardpane/<time>/. Then it renames the service user swpanel to wardpane and the site users swp_<id> to wp_<id>, keeping uid and gid so that file ownership stays correct, moves /var/lib/smallwebpanel to /var/lib/wardpane and starts WardPane. If WardPane does not come up, the server is rolled back to 1.x automatically.
After the switch, reload the panel page once (Ctrl+F5) and sign in again. Links issued for link-only sites by 1.x keep working. See updating for details.
Next
Open the panel and continue with first steps.