Installation Guide
This is the complete, step-by-step installation guide for FeedbackPulse SaaS. Follow every step carefully.
Pre-Installation Checklistโ
Before you begin, make sure you have:
- A server meeting all requirements
- A domain name pointing to your server's IP address
- SSH access to your server (or FTP for file upload)
- A MySQL/MariaDB database and credentials
- An SMTP email account (Gmail, Mailgun, Amazon SES, etc.)
- Your Envato purchase code (from CodeCanyon order)
Step 1: Upload Files to Your Serverโ
Option A: Using SSH (Recommended)โ
# Connect to your server
ssh user@your-server-ip
# Navigate to web directory
cd /var/www
# Upload and extract the ZIP file
# (Upload the zip via SCP, SFTP, or wget from a temporary link)
unzip feedbackpulse-saas.zip -d feedbackpulse-saas
cd feedbackpulse-saas
Option B: Using FTP/SFTPโ
- Connect to your server using FileZilla, WinSCP, or similar
- Navigate to your web directory (usually
/var/www/or/home/user/public_html/) - Upload the entire extracted
feedbackpulse-saasfolder - Make sure the
public/subdirectory is accessible
Option C: Using cPanel File Managerโ
- Log in to cPanel
- Open File Manager โ navigate to
public_html(or a subdirectory) - Upload the ZIP file
- Extract it in place
- Important: You'll need to set the document root to the
public/folder (see Apache Configuration)
Step 2: Set File Permissionsโ
cd /var/www/feedbackpulse-saas
# Set ownership (replace www-data with your web server user)
# Apache: www-data | Nginx: www-data or nginx
sudo chown -R www-data:www-data .
# Set directory permissions
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;
# Make storage and cache writable
sudo chmod -R 775 storage bootstrap/cache
Step 3: Configure Your Web Serverโ
Your web server must point to the public/ directory inside the project โ NOT the project root. This is a critical security requirement.
Choose your web server:
- Apache Configuration
- Nginx Configuration
- Shared Hosting (cPanel, Plesk, DirectAdmin) โ if you're on shared hosting, follow this guide instead!
Quick version:
Apache:
DocumentRoot /var/www/feedbackpulse-saas/public
Nginx:
root /var/www/feedbackpulse-saas/public;
After configuring, restart your web server:
# Apache
sudo systemctl restart apache2
# Nginx
sudo systemctl restart nginx
Step 4: Storage Symlink (Automatic)โ
The web installer automatically attempts to create the storage symlink during the final step. You do not need to run any commands.
- VPS/Dedicated: The symlink is created automatically. No action needed.
- Shared hosting: If symlinks are disabled on your host, FeedbackPulse uses a built-in PHP fallback to serve uploaded files (logos, images). Everything works โ no action needed.
The installer completion page will tell you whether the symlink was created or if the fallback is active.
Step 5: Run the Web Installerโ
Open your browser and navigate to:
https://yourdomain.com/install
The installer will guide you through 5 steps. See Web Installer Walkthrough for detailed screenshots and explanations.
Quick summary:
Step 1: License Verificationโ
- Enter your Envato/CodeCanyon purchase code
- This validates your license with the Envato API
- If you're not using Envato, there may be a skip option
Step 2: Requirements Checkโ
- The installer automatically checks:
- Vendor dependencies (
vendor/autoload.phpexists) - PHP version (8.2+)
- Required PHP extensions
- Directory permissions (storage, bootstrap/cache)
- Hosting environment (detects shared hosting, shows compatibility info)
- Vendor dependencies (
- Fix any failed items before proceeding
Step 3: Database Setupโ
- Enter your database credentials:
- Host:
127.0.0.1(orlocalhost) - Port:
3306 - Database name:
feedbackpulse(create this first!) - Username: your database username
- Password: your database password
- Host:
- The installer will run all migrations and seed default data
Create the database first:
CREATE DATABASE feedbackpulse CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Step 4: Admin Accountโ
- Create your superadmin account:
- Name: Your name
- Email: [email protected]
- Password: A strong password (min 8 characters)
- This is the account you'll use to manage the entire platform
Step 5: Email Configurationโ
- Enter your SMTP details:
- Host: e.g.,
smtp.gmail.com - Port:
587(TLS) or465(SSL) - Username: your SMTP username
- Password: your SMTP password or app password
- Encryption: TLS (recommended)
- From Address:
[email protected]
- Host: e.g.,
- You can skip this and configure later in Admin Settings
Completionโ
- Switches session and cache drivers to
databasefor production - Generates a
CRON_TOKENfor the web-based cron endpoint - Creates a
storage/installed.lockfile (prevents re-running) - Shows a success page with cron job setup instructions (both CLI and URL options) and next steps
Step 6: Set Up the Cron Jobโ
FeedbackPulse needs a cron job to run scheduled tasks. This is essential for:
- Sending email digests (daily/weekly)
- Processing trial expirations
- Enforcing data retention policies
- Sending usage alerts
- Running AI anomaly detection
- Sending scheduled reports
Option 1 โ CLI command (VPS / Dedicated):
crontab -e
Add this line:
* * * * * cd /var/www/feedbackpulse-saas && php artisan schedule:run >> /dev/null 2>&1
Option 2 โ URL/wget (Shared Hosting):
If your hosting panel only supports URL-based cron, use the web cron endpoint (the CRON_TOKEN is auto-generated during installation and shown on the completion page):
wget -q -O /dev/null "https://yourdomain.com/cron/run?token=YOUR_CRON_TOKEN"
Tip: The installer completion page shows both options with your actual server path and token pre-filled. Copy them from there!
For more details, see Cron Jobs & Queue Workers.
Step 7: Configure SSL (HTTPS)โ
HTTPS is strongly recommended for security, especially since FeedbackPulse handles authentication and payment data.
Using Let's Encrypt (Free)โ
# Install Certbot
sudo apt install certbot python3-certbot-nginx # for Nginx
# OR
sudo apt install certbot python3-certbot-apache # for Apache
# Get certificate
sudo certbot --nginx -d yourdomain.com # for Nginx
# OR
sudo certbot --apache -d yourdomain.com # for Apache
Certbot will automatically configure your web server for HTTPS and set up auto-renewal.
For more details, see SSL Certificates.
Step 8: Verify the Installationโ
Run through this checklist:
| Check | How | Expected Result |
|---|---|---|
| Landing page loads | Visit https://yourdomain.com | See the landing page |
| Login works | Visit https://yourdomain.com/login | Log in with superadmin credentials |
| Admin panel | Visit https://yourdomain.com/admin/dashboard | See the admin dashboard |
| Storage link | Visit https://yourdomain.com/storage/ | No 404 error |
| Health check | Visit https://yourdomain.com/up | See "OK" text |
| Cron running | Check Admin โ Settings | No cron warnings |
| Email works | Admin โ Settings โ Email โ Send Test | Receive test email |
Post-Installation Stepsโ
After installation is complete:
- Review subscription plans โ
Admin โ Plans(edit pricing, limits, features) - Configure payment gateways โ
Admin โ Settings โ Payments(Stripe/PayPal API keys) - Customize the landing page โ
Admin โ Landing Page - Test email delivery โ
Admin โ Settings โ Email โ Send Test Email - Set up wildcard DNS (optional) โ for tenant subdomains. See Wildcard DNS Setup.
- Create your first tenant โ Register at
/registerin an incognito window
Installation Troubleshootingโ
| Issue | Solution |
|---|---|
| Blank white page | Check storage/logs/laravel.log for errors. Usually a permissions issue. |
| 500 Server Error | Enable debug mode temporarily: set APP_DEBUG=true in .env, then check the error. |
| "Class not found" | Ensure the vendor/ directory is present and intact. Re-upload it from the downloaded package if needed. |
| Database connection refused | Verify credentials, ensure MySQL is running, check if localhost vs 127.0.0.1 matters. |
| Installer not loading | Make sure the web root points to public/ directory. |
| CSS/JS not loading | Clear browser cache. If images are missing, the storage fallback handles it automatically on shared hosting. On VPS, visit /update as superadmin to re-create the symlink. |
| Permission denied | Run the chown and chmod commands from Step 2 again. |
For more, see Troubleshooting.
Next Stepsโ
- Web Installer Walkthrough โ detailed installer screenshots
- Apache Configuration โ Apache virtual host setup
- Nginx Configuration โ Nginx server block setup
- Configuration โ fine-tune your
.env