This guide covers a full Vidoo Store install on PHP 8.2+ with MySQL or MariaDB, then licensing, the admin panel, and the settings you're most likely to configure first.
Tip
Vidoo Store is a Laravel application, not a plain-PHP script - if you've only used Logos or Uploader before, the install step looks different (Composer and a build step instead of a visual /install/ wizard).
Overview
Vidoo Store is a self-hosted Laravel + Filament script for running a paid file, firmware, driver, or software download marketplace. Visitors browse folders and files, buy single files or quota-based download packages, and you manage the whole storefront from an admin panel.
- Public storefront: folders, files, articles/blog, FAQ, and a checkout flow.
- Admin panel (default path
/admin): files, orders, users, coupons, announcements, articles, and every setting. - Dark mode admin theme, on by default, with a per-install toggle.
- Built-in static page caching, image optimization, and CDN support.
Requirements
- PHP 8.2 or newer
- MySQL 8+ or MariaDB 10.4+
- Composer 2
- Node.js 18+ and npm, for the one-time asset build (
npm run build) - Apache or Nginx with PHP-FPM
- Standard Laravel PHP extensions:
pdo_mysql,mbstring,fileinfo,openssl,dom,xml,gd
The gd extension is used for automatic WebP/AVIF image conversion - the site still works without it, just without that one optimization.
Install
1. Get the files onto your server
Upload the project (or clone it via Git) to your server, at the domain root or a subfolder.
2. Install dependencies and build assets
From the project root:
| Command | What it does |
|---|---|
composer install --no-dev --optimize-autoloader | Installs PHP dependencies for production. |
npm install && npm run build | Builds the compiled CSS/JS assets. |
cp .env.example .env | Creates your environment file. |
php artisan key:generate | Generates the app encryption key. |
3. Configure your environment
Edit .env: set APP_URL to your public https:// address, and fill in your database connection (DB_DATABASE, DB_USERNAME, DB_PASSWORD).
4. Run migrations
Run php artisan migrate --seed. This creates every table and seeds the default roles, permissions, and an initial admin account (check the seeder output for the generated admin credentials).
5. Point your web server at /public
Your web server's document root must be the project's public/ folder, same as any Laravel app - not the project root.
6. Set up the scheduler
Add this single cron entry so background jobs (download-token expiry, package resets, cache cleanup, backups) run on schedule:
* * * * * cd /path-to-your-site && php artisan schedule:run >> /dev/null 2>&1
Warning
Skipping the cron entry doesn't break the site, but download tokens, expired packages, old logs, and scheduled backups will silently stop being cleaned up or run.
Licensing
Your license key is emailed to you automatically right after purchase. To activate it:
- Log in at
/admin/login. - Open System → Software License.
- Paste in your license key and save.
The license checks automatically once a day. It binds to the first domain it's checked from - if you need to move it to a different domain later, contact support.
Your license to run the version you have stays valid indefinitely. Free updates and support are included for 1 year from your purchase date; after that, your current version keeps working, but new updates and support require a renewal.
Skipping license activation starts a 3-day trial automatically, so you can finish setting the site up before activating.
Admin panel
Open https://your-domain.com/admin. Dark mode is on by default (you can change that under Settings → Dashboard Template).
- Files & Folders: upload, organize, and price your downloads.
- Orders, Transactions & Invoices: every purchase, with generated PDF invoices.
- Users: manage customer accounts, roles, and permissions.
- Announcements & Articles: sitewide banners and a built-in blog.
- System: cron task history, module toggles, and your software license.
Optional two-factor authentication is available per admin account under Account → Security.
Packages & coupons
Beyond single-file purchases, you can sell download packages - a quota of downloads over a time window (for example, "50 downloads over 30 days"). Packages expire and reset automatically on their own schedule; nothing manual is needed once configured.
Coupons support both percentage and fixed-amount discounts, with optional usage limits and expiry dates, managed under Coupons in the admin sidebar.
Payments
Vidoo Store has its own payment gateway settings for charging your customers - separate from however you paid for the script itself. Configure your gateway under Settings → Payment Gateways.
Customers can also pay from an in-site wallet balance, which supports peer-to-peer transfers between accounts.
Email / SMTP
Order confirmations, invoices, and account emails send through the SMTP settings under Settings → Email (SMTP). Any standard SMTP provider works, including Google Workspace's SMTP relay - use an app password rather than your normal account password.
Caching & performance
Under Settings → Cache:
- Static page caching: caches guest page views and automatically invalidates when a file, folder, article, or page is edited.
- Automatic WebP/AVIF conversion: newly uploaded images get modern-format siblings, served with a fallback for older browsers.
- Cloudflare integration: add your Cloudflare API token and zone ID to enable one-click cache purging from the admin panel.
- CDN support: point asset/storage URLs at a CDN base URL.
None of these require any setup to keep the site working - they're opt-in performance features you can turn on as traffic grows.
Security
- Two-factor authentication with trusted-device support, per admin account.
- Login lockout after repeated failed attempts, plus a full login-attempt log.
- IP blacklisting from the admin panel.
- CSRF protection on every form, standard for Laravel.
Backup and move
Scheduled backups (MySQL dump, uploaded to Google Drive) run automatically once configured under Settings → Backup. To move to a new server:
- Copy the project folder, including
storage/and your.envfile. - Import your latest database dump on the new host.
- Update
APP_URLin.envif the domain changed. - Re-check your license under System → Software License if you're also changing domains.
Troubleshooting
| Problem | What to check |
|---|---|
| Blank page / 500 error after install | Check storage/logs/laravel.log. Usually a missing .env value or an unwritable storage//bootstrap/cache/ folder. |
| Assets (CSS/JS) missing or unstyled | npm run build wasn't run, or your web root isn't pointed at public/. |
| License shows "unlicensed" | Confirm the key was entered exactly as emailed, with no extra spaces, under System → Software License. |
| License shows a domain mismatch | The license already bound to a different domain. Contact support to re-bind it. |
| Scheduled tasks never run | The cron entry from the Install section isn't set up on the server. Check System → Cron Tasks for last-run times. |
| Emails never arrive | Test your SMTP settings using the "Send test email" button under Settings → Email (SMTP). |
| Uploaded images aren't converting to WebP | The gd PHP extension isn't installed, or WebP conversion is off under Settings → Cache. |
Need help?
Read this page from install through licensing first. If something still fails, note the exact error message, your PHP version, and what you were doing when it happened.
Contact us on the support page.