Creating a new website (domain) in ISPmanager 6 is done through a single wizard. You can choose Nginx, Apache, or a Nginx + Apache bundle as the web server.
Creating a New Website
Panel → WWW → Domains → Create. The wizard walks through all the main steps in a single form.
Main Parameters
| Field | Description | Example |
|---|---|---|
| Domain | Site name | example.com |
| User | File owner | user1 |
| Document root | Relative to home | example.com/www |
| Web server | Nginx / Apache / Nginx+Apache | Nginx |
| PHP | PHP version | PHP 8.2 (FPM) |
Choosing a Web Server
- Nginx — faster for static content, uses less memory, recommended for most cases
- Apache — supports .htaccess, needed for some CMS
- Nginx + Apache — Nginx as the frontend, Apache handles PHP. The most flexible option
File Structure After Creation
/var/www/user1/
└── data/
└── www/
└── example.com/
└── www/ ← site root (public_html)
└── index.html
Configuring SSL During Creation
In the site creation form, check the «Secure connection» box → Let's Encrypt → Get for free. The SSL certificate will be issued automatically.
Adding a Subdomain
WWW → Domains → select domain → Subdomains → Create. Specify the subdomain name and the document root.
File permissions for the site
ISPmanager creates directories and assigns ownership automatically when a site is created through the wizard. But when files are uploaded via FTP as root or copied directly with scp, permissions sometimes drift from what the web server expects, and the site starts returning access errors even though the directory structure looks correct.
# Check the current owner of the site files
ls -la /var/www/user1/data/www/example.com/www/
# Restore ownership if the files were uploaded by the wrong user
chown -R user1:user1 /var/www/user1/data/www/example.com/www/
Separately check permissions on the files and directories themselves: directories typically need 750, files need 640, and scripts that must be executed by the server are a separate case depending on the PHP mode (FPM or mod_php).
Common errors when creating a site
| Message | What it means |
|---|---|
Domain already exists | The domain is already added to the panel — either earlier or by another user on the same server |
Unable to bind: address already in use | Port 80/443 is already taken by another web server not managed through ISPmanager |
| The site is created but shows a "Welcome" page instead of content | The document root has no site files yet — the default index.html is shown instead of the real content |
403 Forbidden right after creation | Incorrect permissions on the site directory — the web server runs as a separate user and can't read the files |
Nginx, Apache, and the bundle: compared for a new site
| Criterion | Nginx only | Apache only | Nginx + Apache |
|---|---|---|---|
| .htaccess support | No | Yes | Yes |
| Static file serving speed | High | Medium | High (via Nginx) |
| Memory usage | Low | Higher | Higher than plain Nginx |
| Compatibility with legacy CMS | Requires adapting rules | Maximum | High |
When the site creation wizard is not the right fit
- You need a non-standard directory layout (for example, a separate
publicfolder for a Laravel/Symfony framework) — after creation, you'll still need to change the document root manually in the domain settings - The site is migrating from another server with an existing database and specific paths — it's faster to transfer the configuration by hand than to fit a new site into an old structure through the wizard
- You need several domains with fully independent users and limits under one plan — that's a reselling-level task, not creating a single site
- The site needs to be provisioned fully automatically by a script with no human involved — the web interface wizard isn't suited for that; you need to call the same operations through the panel's REST API
Verifying the result
After creating a site, confirm it actually resolves and serves content, not just that it's listed in the panel's domain list.
# Check that the domain resolves to the server's IP
dig +short example.com
# Check the HTTP response
curl -I http://example.com/
If dig returns an empty response or someone else's IP, the problem is at the DNS level, not in ISPmanager's settings — the site may be configured correctly but unreachable by domain until the records propagate. DNS updates don't spread instantly, and until the old record's TTL expires, some visitors may still see the old server. See also managing DNS zones in ISPmanager 6 and getting an SSL certificate.