Understanding where Opterius puts files on disk helps you deploy applications, debug path issues, and work confidently over SSH or FTP.
Main Domain Layout
Every hosting account has this structure on disk:
/home/{username}/
{domain.com}/
public_html/ ← web root — Nginx serves files from here
logs/ ← Nginx access.log and error.log
tmp/ ← temporary files (PHP session storage, etc.)
For an account with username acme and main domain acmecorp.com:
/home/acme/
acmecorp.com/
public_html/
index.html
wp-config.php
...
logs/
access.log
error.log
tmp/
Subdomain Layout
Subdomains are nested under the parent domain's public_html/:
/home/acme/
acmecorp.com/
public_html/
shop/ ← document root for shop.acmecorp.com
blog/ ← document root for blog.acmecorp.com
The subdomain shop.acmecorp.com is served from /home/acme/acmecorp.com/public_html/shop/. There's no separate log directory for subdomains — they share the parent domain's logs.
[!NOTE] This differs from cPanel, which stores each addon domain in
/home/username/addon-domain.com/public_html/. In Opterius there are no addon domains — see Understanding Accounts.
Why This Structure
- One Linux user per account — all of one client's files are under
/home/{username}/, making permissions, backups, and migrations clean - Domain name in the path — makes it obvious which domain files belong to when browsing
/home/as root - Subdomains nested in public_html — deploying a subdomain is identical to deploying a subfolder; it works with any framework
Nginx and PHP Configuration
Nginx has a vhost config at:
/etc/nginx/sites-available/{domain.com}.conf
The root directive in this file points to /home/{username}/{domain.com}/public_html/.
PHP-FPM has a pool config at:
/etc/php/{version}/fpm/pool.d/{domain.com}.conf
Each domain gets its own pool, running as the account's Linux user. The pool's Unix socket is at /run/php/php{version}-fpm-{domain.com}.sock.
Comparing to cPanel
| cPanel | Opterius | |
|---|---|---|
| Main domain root | /home/user/public_html/ |
/home/user/domain.com/public_html/ |
| Addon domain root | /home/user/addondomain.com/public_html/ |
(no addon domains) |
| Subdomain root | /home/user/subdomain/ |
/home/user/domain.com/public_html/subdomain/ |
| Logs | /home/user/access-logs/ |
/home/user/domain.com/logs/ |
File Permissions
| Path | Permissions | Owner |
|---|---|---|
/home/{user}/ |
0750 |
{user}:{user} |
/home/{user}/{domain}/ |
0750 |
{user}:{user} |
/home/{user}/{domain}/public_html/ |
0755 |
{user}:{user} |
Files inside public_html/ |
0644 |
{user}:{user} |
www-data (Nginx) gets execute permission on the home directory via ACL (setfacl), so it can traverse the path to serve files, but other system users cannot read the directory.