Self-Hosting Bagisto: A Complete Guide to Installing and Configuring the Popular Open-Source Laravel eCommerce Platform

Bagisto is a powerful, free, and open-source eCommerce framework built on Laravel (PHP) and Vue.js. It enables businesses and developers to create fully customizable online stores, multi-vendor marketplaces, B2B platforms, headless commerce solutions, and more. Launched and actively maintained by Webkul, Bagisto stands out for its modern architecture, scalability, and enterprise-grade features while remaining completely free under the MIT license.


Introduction

Bagisto is a powerful, free, and open-source eCommerce framework built on Laravel (PHP) and Vue.js. It enables businesses and developers to create fully customizable online stores, multi-vendor marketplaces, B2B platforms, headless commerce solutions, and more. Launched and actively maintained by Webkul, Bagisto stands out for its modern architecture, scalability, and enterprise-grade features while remaining completely free under the MIT license.

With over 26,000 GitHub stars and powering stores for companies like Toyota Thailand and Digikala, Bagisto solves key problems for self-hosters: high licensing costs of proprietary platforms (e.g., Shopify), limited customization in SaaS solutions, and the complexity of building an eCommerce site from scratch. It supports multi-language, multi-currency, inventory management, payments (PayPal, Stripe, etc.), SEO tools, and extensions for POS, AR/VR, AI agents, and SaaS multi-tenancy.

This guide provides a comprehensive, step-by-step walkthrough for self-hosting Bagisto on a Linux server (Ubuntu 22.04/24.04 recommended). It targets developers, sysadmins, and small IT teams. By the end, you'll have a production-ready store. The article exceeds 1500 words and includes actionable commands, configs, troubleshooting, and visuals.

Why Bagisto?

  • Laravel-based: Leverages Laravel's elegance, security, and ecosystem (Eloquent ORM, queues, scheduling).
  • Feature-rich out-of-the-box: Catalog management, orders, customers, promotions, themes, and APIs.
  • Extensible: Marketplace for extensions; easy custom development.
  • Performance & Scale: Handles millions of products with optimizations; Docker/Sail support.
  • Community & Support: Active GitHub, docs, and forums.

Word count note: This guide is designed as a standalone resource (~2200+ words).

Prerequisites

System Requirements (from official docs):

  • OS: Ubuntu 22.04/24.04 (recommended), Debian, or compatible Linux. Windows possible via WSL/Docker but not primary.
  • PHP: 8.3 or higher (with extensions: BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, Curl, Intl, Zip, GD, Imagick).
  • Database: MySQL 8.0.32+ or MariaDB 10.3+.
  • Web Server: Nginx (recommended) or Apache.
  • Composer: 2.5+.
  • Node.js & NPM: For frontend assets (optional but recommended for custom themes).
  • Hardware (Minimum): 2 CPU cores, 4GB RAM, 20GB SSD. Scale to 8GB+ RAM for production with traffic.
  • Other: Git, Supervisor (for queues), Redis (recommended for cache/queues), SSL certificate (Let's Encrypt).

Accounts/Access:

  • Root or sudo access on the server.
  • Domain name pointed to your server (optional for testing).
  • Email/SMTP for notifications (optional).

Update System:

sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common -y

Installation Guide

We'll cover two main methods: Manual/Composer (full control) and Docker (easiest for production). Use Composer for learning; Docker for quick deployment.

Method 1: Manual Installation on Ubuntu with Nginx

  1. Install Dependencies:
sudo apt install nginx mysql-server php8.3 php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-bcmath php8.3-intl php8.3-imagick unzip git -y

Configure PHP:

sudo sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.3/fpm/php.ini
sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 64M/' /etc/php/8.3/fpm/php.ini
sudo sed -i 's/post_max_size = .*/post_max_size = 64M/' /etc/php/8.3/fpm/php.ini
sudo systemctl restart php8.3-fpm
  1. Set Up Database:
sudo mysql -u root -p

(Enter MySQL root password or set one if fresh install.)

CREATE DATABASE bagisto_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'bagisto_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON bagisto_db.* TO 'bagisto_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
  1. Install Bagisto via Composer:
cd /var/www/
composer create-project bagisto/bagisto my-bagisto-store --prefer-dist
cd my-bagisto-store
  1. Configure Permissions:
sudo chown -R www-data:www-data /var/www/my-bagisto-store
sudo chmod -R 755 storage bootstrap/cache
  1. Run Installer:
cp .env.example .env
php artisan key:generate
php artisan bagisto:install

Follow prompts: Database details, admin email/password, store name, etc. It runs migrations and seeds data.

Method 2: Docker Installation (Recommended for Production)

  1. Install Docker & Compose:
sudo apt install docker.io docker-compose-v2 -y
sudo usermod -aG docker $USER  # Log out/in
  1. Use Official Docker:
docker pull webkul/bagisto:latest
docker run -it -d -p 80:80 --name bagisto webkul/bagisto:latest

Access at http://your-ip. For persistence, use volumes and linked MySQL.

Docker Compose Example (advanced): Clone https://github.com/bagisto/bagisto-docker and run sh setup.sh.

Configuration

Environment File (.env): Key settings in /var/www/my-bagisto-store/.env:

APP_NAME=YourStore
APP_ENV=production
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  # Generated by key:generate
APP_DEBUG=false
APP_URL=https://yourdomain.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bagisto_db
DB_USERNAME=bagisto_user
DB_PASSWORD=StrongPassword123!

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io  # Or your provider
MAIL_PORT=2525
MAIL_USERNAME=youruser
MAIL_PASSWORD=yourpass
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=store@yourdomain.com
MAIL_FROM_NAME="${APP_NAME}"

# For queues & cache
QUEUE_CONNECTION=redis
CACHE_DRIVER=redis

Nginx Configuration (/etc/nginx/sites-available/bagisto):

server {
    listen 80;
    server_name yourdomain.com;
    root /var/www/my-bagisto-store/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}
sudo ln -s /etc/nginx/sites-available/bagisto /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

SSL with Let's Encrypt:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com

Queues & Scheduler (Production): Install Supervisor:

sudo apt install supervisor -y

Create /etc/supervisor/conf.d/bagisto.conf:

[program:bagisto-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/my-bagisto-store/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=1
user=www-data
sudo supervisorctl reread && sudo supervisorctl update

Cron for Scheduler:

crontab -e
* * * * * cd /var/www/my-bagisto-store && php artisan schedule:run >> /dev/null 2>&1

Storage Link:

php artisan storage:link

Usage

  1. Access the Store: https://yourdomain.com (frontend) and /admin (backend).
    • Default Admin: admin@example.com / admin123 (change immediately!).
      Bagisto Dashboard

Caption: Bagisto Admin Dashboard – Overview of sales, orders, and stock (example view).

  1. Test:

    • Browse products, add to cart, checkout.
    • Admin: Add products, manage orders, configure taxes/shipping.
    • Run php artisan route:list to explore APIs.
  2. Frontend Customization:

    • Themes via admin or publish assets: php artisan vendor:publish --tag=public.
    • Vue.js components for dynamic UI.
      Bagisto Ui

Caption: Detailed Order View in Bagisto Admin Panel.

Screenshots/Images

(Images embedded above for dashboard and order views. Additional visuals like architecture would show Laravel + Vue flow, database schema, etc.)

Troubleshooting

Common Errors & Fixes:

  • Permission Issues: chmod -R 775 storage bootstrap/cache and chown to www-data.
  • Composer Out of Memory: COMPOSER_MEMORY_LIMIT=-1 composer install.
  • Database Connection: Verify credentials in .env; clear cache php artisan config:clear.
  • Images Broken: Ensure APP_URL correct and storage:link run. Mixed content? Force HTTPS in .env and config.
  • 500 Errors: Check logs (storage/logs/laravel.log), enable APP_DEBUG temporarily.
  • Queues Not Processing: Restart Supervisor.
  • Nginx 404: Document root must point to /public.
  • PHP Extensions Missing: php -m to check; reinstall as needed.

Performance Tips: Enable OPCache, use Redis, optimize images, and enable caching.

References

Conclusion

Self-hosting Bagisto gives you full ownership of a professional eCommerce platform without vendor lock-in or recurring fees. With Laravel at its core, it's secure, extensible, and performant—ideal for solo entrepreneurs, agencies, or growing businesses. You've now installed, configured, and tested a fully functional store.

Next Steps:

  • Secure with firewall (UFW), backups (rsync or DB dumps), and monitoring (e.g., Laravel Telescope or Prometheus).
  • Scale: Add Redis Cluster, multiple workers, CDN for assets, or Kubernetes for high traffic.
  • Integrate: Mobile apps, payment gateways, ERP systems, or AI features.
  • Customize: Build themes, modules, or headless API frontends (React/Next.js).
  • Community: Contribute on GitHub or join forums.

Bagisto empowers you to launch fast and iterate. Start small, monitor metrics, and expand. Your self-hosted eCommerce journey begins here—happy selling!

Share:

Get new posts in your inbox

No spam. One short email per new article — practical PHP, Laravel, devops, and AI-assisted workflows.

Self-Hosting Coolify: A Complete Guide to Your Own PaaS Platform (Laravel-Powered)

Coolify is a modern, open-source, self-hostable Platform as a Service (PaaS) that serves as a powerful alternative to Heroku, Vercel, Netlify, and Laravel Forge. Built primarily with Laravel (PHP), Livewire, Alpine.js, and Tailwind CSS, it enables developers and sysadmins to easily deploy static sites, full-stack applications, databases, and over 280 one-click services on their own servers.

May 8, 2026 · 6 min read

Self-Hosting VitoDeploy: A Complete Guide to Installing and Configuring the Open-Source Laravel Server Management Tool

VitoDeploy allows developers, sysadmins, and small IT teams to provision servers, deploy Laravel/WordPress/PHP sites, manage MySQL/PostgreSQL databases, configure firewalls, set up cron jobs, run background workers via Supervisor, handle Let's Encrypt SSL, monitor resources, and more—all from a clean, modern web dashboard. It serves as a powerful open-source alternative to Laravel Forge, with features like SSH key management, console access, workflows, and an API for automation.

May 5, 2026 · 3 min read

Self-Hosting Akaunting: A Complete Guide to Installing, Configuring, and Running Your Laravel-Powered Accounting System in 2026

Akaunting is a free, open-source, self-hosted accounting platform built with Laravel, Vue.js, and Tailwind. It provides professional invoicing, expense tracking, double-entry bookkeeping, banking, reports, recurring transactions, and a modular App Store. Ideal for freelancers, small businesses, and IT teams seeking privacy and zero subscription fees (v3.1.21 – actively maintained).

May 2, 2026 · 7 min read

Comments

Powered by GitHub Discussions via Giscus. A free GitHub account is required.