How to Install FastPanel on Debian 11
FastPanel is that slick, no‑frills web control panel that turns a plain VPS into a fully‑featured hosting solution. In the next few minutes I’ll walk you through installing it on Debian 11 from scratch—no fancy Docker tricks or obscure PPAs needed.
1 – Check Your System
uname -r && cat /etc/os-release
You want a clean Debian 11 image with at least 2 GB of RAM and root access. I once tried installing FastPanel on an old Buster box, ran into cryptic PHP errors, and had to rebuild the whole environment. Stick to Bullseye (Debian 11) and you’ll avoid that pain.
2 – Update & Install Dependencies
apt update && apt upgrade -y apt install -y nginx php-fpm git unzip curl wget
FastPanel bundles its own Nginx config, so we need the server and PHP‑FPM runtime ready. The git, unzip, curl, and wget utilities are used later to pull the installer and extract archives.
3 – Disable Existing Web Services
If you already have Apache or another instance of Nginx running, stop it:
systemctl stop apache2 nginx || true systemctl disable apache2 nginx || true
FastPanel will replace them with its own Nginx setup. Leaving the old ones active would cause port conflicts.
4 – Create a Dedicated User (Optional but Recommended)
adduser --disabled-password --gecos "" fpadmin sudo -u fpadmin mkdir /home/fpadmin/fastpanel
Running FastPanel under its own user keeps logs tidy and limits accidental root damage. If you’re just testing, you can skip this step.
– Download the Latest Installer
wget https://github.com/FastPanel/Installer/raw/main/install.sh -O /tmp/fpinstall.sh chmod +x /tmp/fpinstall.sh
The script is hosted on GitHub; no need to add third‑party repositories. The -O flag writes it directly to /tmp, which we’ll run as root.
6 – Run the Installer
sh /tmp/fpinstall.sh --force
What happens?
The script checks for missing packages, pulls FastPanel’s latest release from GitHub, installs the PHP‑FPM pool, configures Nginx, and sets up the initial SQLite database. It also creates an admin user named admin with a random password printed to your console—make sure you note it.
If you see errors like “Cannot open file for writing” or “Permission denied,” double‑check that you’re running as root and that /var/www/html is writable by the web server group.
7 – Harden the Installation (Optional)
FastPanel ships with a default “admin” password that isn’t meant for production. Change it immediately:
mysql -u admin -p
(If you’re using SQLite, just edit ~/.fastpanel/db.sqlite.)
Then run:
curl -X POST http://127.0.0.1:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"<old>"}' | jq .
Replace <old> with the random password printed earlier, then set a new one via the panel UI.
8 – Verify Everything Is Up
Open a browser and point it at http://your‑server-ip:8080. You should see FastPanel’s login screen. If you get a “502 Bad Gateway” or nothing loads, run:
systemctl status nginx php-fpm
Check that both services are active. If Nginx is dead, look in /var/log/nginx/error.log for clues.
9 – (Optional) Configure SSL
FastPanel can auto‑issue Let’s Encrypt certificates. From the UI, go to Settings => SSL and follow the prompts. I’ve found that the built‑in Certbot wrapper works great unless you’re behind a proxy; in that case, run Certbot manually on your host.
10 – Add Your First Domain
1. In FastPanel, click “Create Site.”
2. Enter example.com, select PHP 8.1 (or whatever you need), and choose the document root /var/www/example.
3. The installer will create an Nginx block, set up a PHP pool, and generate a self‑signed cert if SSL is enabled.
That’s it—your domain now points to your FastPanel‑managed host.
TL;DR: Update Debian 11 => install nginx/php-fpm => stop old web services => download and run the FastPanel installer => log in at http://ip:8080 => secure it with SSL.
Hope that helps, and enjoy turning your server into a full‑blown control panel without the headache of manual config files!