FastPanel Placeholder Page Instead of Your Website: Causes and Fixes
The website is added to FastPanel, the files are uploaded, the domain points to the server, but instead of the website you see a page with the FastPanel logo. It's one of the most common problems for people setting up a server with this panel for the first time.
Below are specific situations: when the placeholder appears only over HTTPS, only on www, right after creating the website or only through Cloudflare. If your case doesn't match any of them or not everyone sees the placeholder, the checklist at the end of the article will help.
Where the placeholder comes from
In FastPanel, websites sit behind the Nginx web server. When a request comes in, it looks at which domain is in the address and searches for a website with that name. If it finds one, it shows it. If not, the request goes to the default website — and in FastPanel that's the placeholder.
So the placeholder almost always means one thing: Nginx couldn't find your website for this request. The cause may be the protocol, the domain name, the IP address or settings that haven't been applied yet.
Placeholder only over HTTPS
Symptom: the website opens at http://, but https:// shows the placeholder. Often the browser warns about an insecure connection first, and the certificate shows the name parking and the organization FASTPANEL.
Cause: no SSL certificate has been issued for the website. FastPanel doesn't set up HTTPS for a website until it has a certificate, so HTTPS requests go to the placeholder with the panel's self-signed certificate. You can check which certificate the server returns with this command:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | grep subject
Fix: issue a Let's Encrypt certificate for the website in the panel's SSL certificates section. If it isn't issued, sort out the error with the article "Let's Encrypt Certificate Not Issued".
Placeholder through Cloudflare
Symptom: the domain is on Cloudflare with proxying enabled, and the website shows the placeholder, even though everything works when you access the server directly over HTTP.
Cause: Cloudflare connects to the server over HTTPS — for example, if the SSL mode is set to Full or the "Always Use HTTPS" rule is on. But the server has no certificate for the website, and the request goes to the placeholder, just like in the previous section.
Fix: issue a certificate on the server. If Let's Encrypt fails the check through the Cloudflare proxy, switch the DNS record to "DNS only" while issuing the certificate. After that, turn proxying back on and set the Cloudflare SSL mode to "Full (strict)".
⚠️ Important: Flexible mode looks like a quick fix, but if the server redirects from HTTP to HTTPS, the website gets stuck in an endless redirect loop. It's better to set up the certificate on the server right away.
Placeholder only on www
Symptom: example.com opens fine, but www.example.com shows the placeholder (or the other way around).
Cause: for Nginx, www.example.com and example.com are two different names. If the second one isn't in the website settings, requests with it are treated as someone else's.
Fix: in the website settings in FastPanel, add the missing address to the list of aliases. Then reissue the SSL certificate so it covers both addresses. And to give the website one main address, set up a redirect from one version to the other.
Placeholder right after creating the website
Symptom: you've created the website and uploaded your files, but the website address still opens the page with the FastPanel logo.
Cause: there are two options. The first is a default index.html left in the website folder, which the panel may have created along with the website. If your website runs through index.php, the server may show index.html instead — for example, Apache looks for index.html first by default. The second is that the new Nginx settings weren't applied because of a configuration error.
Fix: first open an address like https://example.com/index.php in the browser. If it shows your website, the cause is the extra index.html — delete it from the website folder using the panel's file manager, FTP or SSH.
If this address shows the placeholder too, check the Nginx configuration. This command shows whether it has errors, in which file and on which line:
sudo nginx -t
If the configuration has an error, Nginx doesn't accept the new settings and keeps running with the old ones, which don't include your website yet. The error may not even be in your website but in any other configuration file. Fix the line it points to and apply the settings:
sudo systemctl reload nginx
Instead of this command, you can save the website settings in the panel again — it will reload Nginx itself.
Placeholder when opening the IP address
Symptom: you open the server's IP address in the browser instead of the domain and see the placeholder.
Cause: this is normal. One server can host many websites, and from the IP address alone Nginx doesn't know which one to show.
Fix: if the domain doesn't point to the server yet but you need to check the website now, add the domain to the hosts file on your computer or send a request with the right domain using curl:
curl -I --resolve example.com:80:203.0.113.10 http://example.com
Replace 203.0.113.10 with your server's IP address — this address is reserved for examples in documentation. If the response has code 200 and your website's headers, everything is set up correctly on the server and all that's left is to update DNS.
If not everyone sees the placeholder or the cause is unclear
Sometimes the website opens for you but the client sees the placeholder, or it works on a computer but not on a phone. Then check, in order:
- DNS points to the right server. After an IP address change, some users may keep reaching the old server for a few hours. Check the address with dns.google.
- There's no stray AAAA record. Devices with IPv6 (often mobile internet) use the IPv6 address. If the AAAA record is left over from an old server or the website in the panel isn't bound to the IPv6 address, these users will see the placeholder. Delete the stray record or bind the website to the IPv6 address in its settings.
- The domain has no typos. Check the website name and aliases in the panel — an extra letter or dot happens more often than you'd think.
- There's an SSL certificate. Browsers increasingly open websites over HTTPS on their own, so without a certificate the placeholder may appear for some users only.
- Cloudflare is set up correctly. The SSL mode is Full (strict), and the server has a valid certificate.
- There's no default index.html in the website folder.
- The Nginx configuration has no errors. The sudo nginx -t command should end with syntax is ok and test is successful.
- It's not the cache. Open the website in incognito mode or on another device — the browser may have remembered an old response.
To check what the server itself returns, without DNS or cache getting in the way, use the same curl command with --resolve — for HTTPS, specify port 443:
curl -I --resolve example.com:443:203.0.113.10 https://example.com
If the server returns your website but users see the placeholder, the problem is DNS or cache. If the server returns the placeholder too, the problem is in the website settings in the panel.
Summary
The FastPanel placeholder appears when Nginx can't find a website for the request. Most often there's no SSL certificate, www isn't added, Cloudflare is set up wrong or there's an extra index.html in the website folder. If not everyone sees the placeholder, check DNS and the AAAA record, and use curl with --resolve to find out what the server itself returns.
🛠️ If your website on FastPanel still won't open, message me — I'll sort out the server settings.
Published