Skip to main content

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โ€‹

# 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โ€‹

  1. Connect to your server using FileZilla, WinSCP, or similar
  2. Navigate to your web directory (usually /var/www/ or /home/user/public_html/)
  3. Upload the entire extracted feedbackpulse-saas folder
  4. Make sure the public/ subdirectory is accessible

Option C: Using cPanel File Managerโ€‹

  1. Log in to cPanel
  2. Open File Manager โ†’ navigate to public_html (or a subdirectory)
  3. Upload the ZIP file
  4. Extract it in place
  5. 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:

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

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.php exists)
    • PHP version (8.2+)
    • Required PHP extensions
    • Directory permissions (storage, bootstrap/cache)
    • Hosting environment (detects shared hosting, shows compatibility info)
  • Fix any failed items before proceeding

Step 3: Database Setupโ€‹

  • Enter your database credentials:
    • Host: 127.0.0.1 (or localhost)
    • Port: 3306
    • Database name: feedbackpulse (create this first!)
    • Username: your database username
    • Password: your database password
  • 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) or 465 (SSL)
    • Username: your SMTP username
    • Password: your SMTP password or app password
    • Encryption: TLS (recommended)
    • From Address: [email protected]
  • You can skip this and configure later in Admin Settings

Completionโ€‹

  • Switches session and cache drivers to database for production
  • Generates a CRON_TOKEN for the web-based cron endpoint
  • Creates a storage/installed.lock file (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:

CheckHowExpected Result
Landing page loadsVisit https://yourdomain.comSee the landing page
Login worksVisit https://yourdomain.com/loginLog in with superadmin credentials
Admin panelVisit https://yourdomain.com/admin/dashboardSee the admin dashboard
Storage linkVisit https://yourdomain.com/storage/No 404 error
Health checkVisit https://yourdomain.com/upSee "OK" text
Cron runningCheck Admin โ†’ SettingsNo cron warnings
Email worksAdmin โ†’ Settings โ†’ Email โ†’ Send TestReceive test email

Post-Installation Stepsโ€‹

After installation is complete:

  1. Review subscription plans โ€” Admin โ†’ Plans (edit pricing, limits, features)
  2. Configure payment gateways โ€” Admin โ†’ Settings โ†’ Payments (Stripe/PayPal API keys)
  3. Customize the landing page โ€” Admin โ†’ Landing Page
  4. Test email delivery โ€” Admin โ†’ Settings โ†’ Email โ†’ Send Test Email
  5. Set up wildcard DNS (optional) โ€” for tenant subdomains. See Wildcard DNS Setup.
  6. Create your first tenant โ€” Register at /register in an incognito window

Installation Troubleshootingโ€‹

IssueSolution
Blank white pageCheck storage/logs/laravel.log for errors. Usually a permissions issue.
500 Server ErrorEnable 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 refusedVerify credentials, ensure MySQL is running, check if localhost vs 127.0.0.1 matters.
Installer not loadingMake sure the web root points to public/ directory.
CSS/JS not loadingClear 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 deniedRun the chown and chmod commands from Step 2 again.

For more, see Troubleshooting.


Next Stepsโ€‹