Everyone

Document Root Structure

How files are organized on disk for hosting accounts and subdomains in Opterius Panel.

Last updated 1775606400

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.

Next Steps