Self-Hosted Installation (Docker / VPS)
If you prefer full control over your marketplace database, security, and operations data, you can self-host TribeOps on your own Virtual Private Server (VPS) or cloud infrastructure using Docker. This SOP details the exact installation steps.
System Requirements
- OS: Ubuntu 22.04 LTS (recommended) or any OS with Docker support.
- Resources: 1 vCPU, 2GB RAM minimum.
- Docker & Docker Compose installed.
- Domain Name with configured CNAME pointing to your server IP.
Step 1: Set Up Project Files
SSH into your VPS server. Create a directory and unpack the project zip archive (or run a git clone):
mkdir -p /var/www/marketbridge
cd /var/www/marketbridge
# copy project files here
Step 2: Configure Environment Variables
Copy the environment template and generate a unique application key:
cp .env.example .env
# Open .env in your text editor (e.g. nano .env) and configure:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://marketbridge.yourdomain.com
# Database Connection (use sqlite for simplicity or pgsql/mysql)
DB_CONNECTION=sqlite
DB_DATABASE=/var/www/marketbridge/database/database.sqlite
💡 Pro Tip: If using SQLite, touch the file before building: touch database/database.sqlite and set permissions to 775 so the Docker container can read and write to it.
Step 3: Launch Containers
Run Docker Compose to build the application and spin up the web and worker services in detached mode:
docker compose up -d --build
This launches Nginx, PHP-FPM, a queue worker container, and runs database migrations automatically.
Step 4: Nginx Reverse Proxy with SSL
Configure a reverse proxy on your host machine to forward incoming requests (port 80/443) with SSL to the Docker container port (typically 8080). Here is a standard Nginx config block:
server {
listen 80;
server_name marketbridge.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name marketbridge.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/marketbridge.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/marketbridge.yourdomain.com/privkey.pem;
# Important for SSE bulk operations streaming:
proxy_read_timeout 600s;
proxy_send_timeout 600s;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding on;
}
}
Run Certbot to request a free SSL certificate: sudo certbot --nginx -d marketbridge.yourdomain.com.
Step 5: Background Jobs & Cron
TribeOps handles data cleaning, import recoveries, and CRM checks via a background scheduler. Ensure your host system calls the Laravel scheduler every minute by adding a cron entry:
# Run crontab -e and append:
* * * * * cd /var/www/marketbridge && docker compose exec -T app php artisan schedule:run >> /dev/null 2>&1