Skip to content
Cnone-Tech Documentation

Storage

Cnone-Tech DocsVeldriq

Veldriq

Uploads, generated PDFs, evidence photos, and Field PWA assets live on disk. The supported V1 default is the local disk on the same server as PHP. You do not need Amazon S3 to go live.

MySQL rows point at files. A dump without matching storage/app loses evidence and generated PDFs. Never point the domain at backend/storage itself — that would expose logs and .env.

  • Default disk: FILESYSTEM_DISK=local in backend/.env
  • Files: backend/storage/app (private + public subtree), logs backend/storage/logs
  • Public window: backend/public/storage → backend/storage/app/public
  • Optional S3 overlay: Platform Admin → Settings → Storage / files (/admin/settings/storage)
Kind Examples How it is delivered How to verify
Public assets Workspace branding logo under storage/app/public Browser URL through public/storage after storage:link Open a real branding image while signed in as an admin. It should not 404
Private tenant files Field evidence photos, TenantFile records Authenticated application routes, not a public /storage/… URL Sign in and open the evidence preview. A 404 on a guessed public URL is not proof that evidence is missing

The Web Installer runs the symlink as part of storage setup. php artisan veldriq:install also runs storage:link unless you pass --no-storage-link.

Terminal window
cd /path/to/backend
php artisan storage:link

Expected: backend/public/storage exists and points at storage/app/public. The PHP / web user must write backend/storage/ and backend/bootstrap/cache/. Never chmod -R 777.

Limits come from PHP and the host, not from a Veldriq slider. Raise upload_max_filesize and post_max_size in cPanel MultiPHP INI Editor or in the VPS php.ini. On nginx, also raise client_max_body_size if large photos fail with 413. The Storage / files screen has Max upload size (KB) for private TenantFile uploads — that cannot exceed PHP’s limit. A queue worker does not increase those limits.

Platform Admin → Settings → Storage / files can set Private files disk to S3 / S3-compatible. The driver exists. It is not a validated production target in this release.

Keep FILESYSTEM_DISK=local and Private files disk on Local (shared hosting friendly) unless you complete your own soak. Changing the disk after you already uploaded files does not move those files. Branding logos stay on the public disk regardless.

  • 404 on a branding logo → missing symlink; run storage:link from backend/
  • Evidence preview fails while signed in → permissions, disk, or PHP size limits
  • HTTP 500 on upload → web user cannot write storage/
  • 413 on large photos → PHP or nginx size limits

Related: Files · Branding · Troubleshooting storage.