
CloudPanel Command Room: Sites, Servers, SSL, PHP, and Controlled Panic
Welcome to Web Dev → CloudPanel — the Fyrbloc place for CloudPanel setup, hosting questions, PHP sites, Laravel deployments, Flarum forums, SSL, domains, databases, cron jobs, logs, permissions, backups, Nginx, PHP-FPM, uploads, and that special moment when a site breaks because one path is slightly wrong.
CloudPanel is powerful because it makes server management cleaner.
It can still punish confusion with great accuracy.
This section is for builders running sites through CloudPanel and trying to keep everything online without turning the server into a haunted filing cabinet.

What belongs here?
Use Web Dev → CloudPanel for topics like:
- Creating sites
- PHP site setup
- Laravel hosting
- Flarum hosting
- WordPress hosting
- Node apps behind Nginx
- SSL certificates
- Domain/DNS setup
- PHP versions
- PHP-FPM
- Nginx vHosts
- MySQL databases
- Redis
- Cron jobs
- Scheduler setup
- Upload limits
- File permissions
- Backups
- Site migrations
- Logs
- 403/404/500 errors
- White screens
- Root path problems
- Storage folder problems
- Composer deploys
- “It works locally but production is offended” issues
If the problem involves CloudPanel, Linux hosting, PHP site paths, Nginx config, or deployment, post it here.
If the issue is mostly code, use the closest code tag too.
CloudPanel runs the house.
Your app still needs to behave inside it.
CloudPanel help template
Copy this when asking for help:
Site/domain:
CloudPanel site type:
App/script:
PHP version:
Web root:
Install path:
What I am trying to do:
What happened:
What I expected:
Exact error:
What I already tried:
Relevant log:
Screenshot/link:
Example:
Site/domain:
example.com
CloudPanel site type:
PHP site
App/script:
Flarum
PHP version:
8.4
Web root:
/home/example/htdocs/example.com/public
Install path:
/home/example/htdocs/example.com
What I am trying to do:
Point the site to the public folder.
What happened:
Homepage shows 403 Forbidden.
What I expected:
Forum homepage should load.
Exact error:
403 Forbidden
What I already tried:
Checked domain, cleared cache, reloaded PHP-FPM.
Relevant log:
Added below with private info removed.
Screenshot/link:
Added if useful.
That is a clean support post.
Much better than:
CloudPanel broke my site.
CloudPanel may be involved.
But we need evidence before pressing charges.

Important CloudPanel details to include
1. Web root
This matters a lot.
For some apps, the web root is the main folder.
For others, it must point to /public.
Examples:
Laravel:
usually /public
Flarum:
usually /public
Many PHP scripts:
depends on the script
WordPress:
usually the main WordPress folder
If the web root is wrong, you may get:
403 Forbidden
404 Not Found
Assets missing
Admin broken
Routes not working
Private files exposed
The web root is not a tiny detail.
It is the front door.
Do not accidentally point the front door at the broom cupboard.
2. Install path
Useful to include:
/home/siteuser/htdocs/domain.com
or:
/home/siteuser/htdocs/domain.com/public
Many commands must be run from the correct folder.
Check with:
pwd
ls -lah
If you run commands in the wrong folder, nothing useful happens.
Or worse, something useful happens to the wrong project.
That is advanced sadness.
3. Site user
CloudPanel sites usually have their own Linux user.
Commands often need to run as that user.
Example:
sudo -u siteuser php artisan cache:clear
or:
sudo -u siteuser php flarum cache:clear
Replace siteuser with the real CloudPanel site user.
Do not blindly paste siteuser.
The server will not understand your hopes.
Common CloudPanel problems
403 Forbidden
Possible causes:
Wrong web root
Missing index.php
Bad file permissions
Nginx config issue
App installed in wrong folder
Public folder not set correctly
Quick checks:
pwd
ls -lah
ls -lah public
Check ownership:
ls -lah /home/siteuser/htdocs/
Typical permission sanity:
chown -R siteuser:siteuser /home/siteuser/htdocs/domain.com
find /home/siteuser/htdocs/domain.com -type d -exec chmod 755 {} \;
find /home/siteuser/htdocs/domain.com -type f -exec chmod 644 {} \;
For writable app folders, you may need:
chmod -R 775 storage bootstrap/cache
or for Flarum:
chmod -R 775 storage public/assets
Use the correct paths.
Permission commands are useful.
Permission commands are also chainsaws.
Hold carefully.
500 Internal Server Error
A 500 error means the server/app failed.
The browser is being vague.
Check logs.
For Laravel:
tail -n 100 storage/logs/laravel.log
For Flarum:
tail -n 100 storage/logs/*.log
For PHP-FPM:
systemctl status php8.4-fpm
journalctl -xe
For Nginx/site errors, check CloudPanel logs or server logs.
Useful info to post:
Exact URL
App/script
PHP version
Recent changes
Last 50-100 log lines
Do not paste secrets.
Logs can contain private details.
Logs are helpful little traitors.

SSL and domain issues
If SSL is not working, include:
Domain:
www/apex:
DNS provider:
A record:
Cloudflare used:
CloudPanel SSL error:
Does HTTP work:
Does HTTPS work:
Check DNS:
dig example.com
dig www.example.com
Common SSL problems:
DNS not pointing to server
www record missing
Cloudflare proxy interfering
Wrong site selected
Rate limit
Old DNS cache
IPv6 mismatch
Firewall issue
If you changed DNS five minutes ago, wait.
DNS enjoys taking its time like it is carrying royal furniture.
PHP version problems
CloudPanel makes PHP version switching easier, but your app still needs the right PHP version.
Check CLI PHP:
php -v
Also confirm the web PHP version in CloudPanel.
Sometimes CLI and web PHP do not match.
That can cause confusion like:
Composer works in terminal but site fails.
or:
Site uses PHP 8.4 but CLI uses something else.
Include both if relevant:
CLI PHP version:
Web PHP version:
For Flarum/Laravel/PHP apps, version matters.
PHP is not just PHP.
It has eras.
Like dinosaurs, but with stricter type errors.
Upload limit problems
If uploads fail, check both PHP and Nginx limits.
PHP settings:
upload_max_filesize
post_max_size
memory_limit
max_execution_time
max_input_time
Nginx setting:
client_max_body_size
Useful checks:
php -i | grep upload_max_filesize
php -i | grep post_max_size
php -i | grep memory_limit
CloudPanel vHost may also need larger limits.
If asking for help, include:
Upload file size:
File type:
Error shown:
PHP upload limit:
post_max_size:
Nginx client_max_body_size:
App/script:
Uploads fail when PHP, Nginx, permissions, and app settings disagree.
They form a small committee.
The committee is annoying.

Cron and scheduler setup
Cron jobs are common for Laravel, Flarum, WordPress tasks, queues, scripts, and scheduled jobs.
Laravel scheduler example:
* * * * * cd /home/siteuser/htdocs/domain.com && php artisan schedule:run >> /dev/null 2>&1
Flarum scheduler example:
* * * * * cd /home/siteuser/htdocs/domain.com && php flarum schedule:run >> /dev/null 2>&1
If cron is not working, include:
Cron command:
App path:
Site user:
Expected task:
Last run time:
Any logs:
Common cron mistakes:
Wrong folder
Wrong PHP version
Wrong user
Missing full path
Permissions issue
Command works manually but not in cron
Output hidden
Cron is quiet by default.
Too quiet.
Like it knows something.
Composer on CloudPanel
Many PHP apps use Composer.
Useful commands:
composer install
composer update
composer show
composer diagnose
composer validate
Run Composer as the correct site user where possible:
sudo -u siteuser composer install
or inside the project:
cd /home/siteuser/htdocs/domain.com
sudo -u siteuser composer install --no-dev --optimize-autoloader
If Composer fails, include:
Command run:
Full error:
PHP version:
composer.json if relevant:
App/framework:
What changed recently:
Composer errors look scary.
But they usually explain the problem somewhere inside the wall of red text.
The trick is finding the sentence that matters before your soul leaves.
Laravel on CloudPanel
Useful Laravel commands:
php artisan about
php artisan migrate --force
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan optimize:clear
php artisan storage:link
Deployment checklist:
Web root points to /public
.env exists
APP_KEY set
APP_URL correct
Database connected
Storage writable
bootstrap/cache writable
Migrations run
Assets built
Queue worker configured if used
Scheduler cron configured if used
APP_DEBUG=false on production
If Laravel shows a 500 error after deployment, check:
tail -n 100 storage/logs/laravel.log
Laravel usually tells you what is wrong.
Sometimes politely.
Sometimes with a stack trace shaped like a punishment.

Flarum on CloudPanel
Useful Flarum commands:
php flarum info
php flarum migrate
php flarum cache:clear
php flarum assets:publish
Common Flarum CloudPanel checks:
Web root points to /public
config.php exists
Database connected
storage writable
public/assets writable
Correct PHP version
Composer packages installed
Scheduler running
Mail configured
Debug off in production
Useful permission example:
cd /home/siteuser/htdocs/domain.com
chown -R siteuser:siteuser .
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 640 config.php
chmod -R 775 storage public/assets
Replace siteuser and path.
Do not copy-paste the wrong domain.
The server will not stop you.
It trusts you more than it should.
Database issues
CloudPanel can create databases and users, but your app config must match.
Check:
Database name
Database username
Database password
Database host
Database port
User permissions
Common app config:
DB_HOST=localhost
DB_DATABASE=your_database
DB_USERNAME=hidden
DB_PASSWORD=hidden
Common errors:
Access denied for user
Unknown database
Connection refused
Table not found
Migration failed
If posting database errors, redact passwords.
Safe:
DB_DATABASE=my_app
DB_USERNAME=hidden
DB_PASSWORD=hidden
Unsafe:
Here is my full database login.
No.
Databases deserve privacy.
Even messy ones.
Backups before risky changes
Before major changes, back up:
Files
Database
.env/config files
composer.json
composer.lock
Uploaded assets
Custom Nginx/vHost changes
Risky changes include:
Major app updates
PHP version changes
Composer updates
Permission changes
Database migrations
Moving web root
Nginx/vHost edits
Deleting files
Restoring backups
A backup is only useful if it can restore the site.
A backup you have never checked is not confidence.
It is a lucky charm with a filename.

Good CloudPanel post titles
Use clear titles like:
CloudPanel 403 after setting Flarum web root to public
Laravel site shows 500 after Composer install on CloudPanel
SSL not issuing for www domain in CloudPanel
Cron job works manually but not from CloudPanel
PHP upload limit still low after changing settings
CloudPanel site loads homepage but assets return 404
Avoid:
CloudPanel help
Site broken
Server issue
Question
Those titles are too vague.
They need to put on work boots.
Good replies in CloudPanel threads
Helpful replies:
Check whether the web root points to /public. Flarum and Laravel usually need that.
A 403 often means wrong web root or missing index.php.
Run the command as the site user so ownership does not get messy.
Check both PHP upload limits and Nginx client_max_body_size.
If SSL fails, confirm DNS points to the server before issuing the certificate.
Less helpful replies:
Use different hosting.
CloudPanel is bad.
Just reinstall.
No idea.
No.
Help with the actual issue.
Do not throw the server into the sea because one path is wrong.
CloudPanel safety rules
Never post:
Root passwords
SSH private keys
Database passwords
SMTP passwords
API keys
CloudPanel login details
Full .env files
Private backups
Customer data
Payment data
Private server IPs if not needed
Safe example:
DB_PASSWORD=hidden
MAIL_PASSWORD=removed
API_KEY=redacted
If you accidentally post a secret:
Delete/edit it immediately
Rotate the secret
Check access logs
Tell a moderator if needed
Deleting the post is not enough.
The internet has a memory.
A terrible one.

CloudPanel help checklist
Before posting, check:
Did I include the domain?
Did I include the app/script?
Did I include PHP version?
Did I include the web root?
Did I include the install path?
Did I include the exact error?
Did I check logs?
Did I say what changed recently?
Did I remove private information?
Did I include screenshots if useful?
That is enough.
CloudPanel problems are much easier to solve when the basics are visible.
Without them, everyone starts guessing.
Guessing is not server management.
It is gambling with extra steps.
Quick CloudPanel starter prompt
Use this:
CloudPanel issue:
Domain:
Site type:
App/script:
PHP version:
Web root:
Install path:
What I expected:
What happened:
Error/log:
What I tried:
Private info removed:
Yes
Example:
CloudPanel issue:
Assets return 404.
Domain:
example.com
Site type:
PHP site
App/script:
Flarum
PHP version:
8.4
Web root:
/home/example/htdocs/example.com/public
Install path:
/home/example/htdocs/example.com
What I expected:
Forum loads with CSS and JS.
What happened:
Page loads without styling.
Error/log:
Assets return 404 in browser console.
What I tried:
Cleared Flarum cache and published assets.
Private info removed:
Yes
Clean.
Useful.
Debuggable.
The server may still complain, but at least it will complain with structure.
Final note
CloudPanel is a strong tool for hosting modern PHP and web projects, but the details matter:
Correct web root
Correct site user
Correct PHP version
Correct permissions
Correct DNS
Correct SSL
Correct cron
Correct logs
Most CloudPanel issues are not random.
They are usually one wrong path, one missing permission, one cached config, one DNS delay, or one command run as the wrong user.
Bring the details.
Check the logs.
Hide the secrets.
Do not panic-reinstall the server because one footer disappeared.
Build. Host. Check Logs. Fix Paths. Ship.