Getting Started
Installation
How to install andrun panel with nginx proxy manager
Requirements
Installed on top of a fresh operating system to ensure proper functionality.
| Minimum | Recommended | |
|---|---|---|
| CPU | 2 core, 64-bit | 4 cores |
| RAM | 2 GB | 4 GB or more |
| Disk | 20 GB HDD | 40 GB SSD |
| OS | Debian 11 or 12 or Ubuntu 22.04, 24.04 LTS | Latest Debian or Latest Ubuntu LTS |
Step 1: Install
bash <(curl -Ls https://raw.githubusercontent.com/XMPlusDev/XMPlusRelease/scripts/init.sh)
Step 2: Configure Nginx Proxy Manager
- In your browser http://your-server-ip:81
- Create account for the first login
real_ip_header X-Forwarded-For;
real_ip_recursive on;
# Laravel Reverb WebSocket Server
location /app {
proxy_pass http://api:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
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_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# WebSocket timeouts
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_connect_timeout 5s;
# Disable buffering for WebSockets
proxy_buffering off;
proxy_request_buffering off;
}
# Laravel Reverb health check and broadcasting endpoints
location ~ ^/(health|apps|events) {
proxy_pass http://api:8080;
proxy_http_version 1.1;
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-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Deny access to sensitive files
location ~ /\.(?!well-known) {
deny all;
return 404;
}
location ~ /\.env {
deny all;
return 404;
}
# Main application - proxy to Laravel Octane
location / {
try_files $uri $uri/ @octane;
# Static files caching
location ~* \.(?:jpg|jpeg|gif|png|ico|svg|webp|css|js|woff|woff2|ttf|eot|otf)$ {
expires 1y;
access_log off;
add_header Cache-Control "public, immutable";
try_files $uri @octane;
}
}
# Proxy all requests to Laravel Octane
location @octane {
proxy_pass http://api:9000;
proxy_http_version 1.1;
# Headers for Octane
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_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# Connection settings for Octane
proxy_set_header Connection "";
proxy_buffering off;
proxy_request_buffering off;
# Timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# Block access to storage and bootstrap/cache
location ~* ^/(storage|bootstrap/cache) {
deny all;
return 404;
}
location /index.php {
try_files /not_exists @octane;
}
error_page 404 /index.php;
location ~ /\.ht {
deny all;
return 404;
}
location / {
proxy_pass http://ui:3005;
proxy_http_version 1.1;
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_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Connection "";
proxy_buffering off;
proxy_request_buffering off;
}
Accesss website in your browser https://www.tld.com
To access phpmyadmin http://your-server-ip:8081.
Use database login details set inyour .env file.
Disable port 8081 if not using phpmyadmin at any point in time to prevent unauthorize spoofing access.
Updating panel API and UI. use xmpanel command
cd /home/XMPlusPanel
xmpanel update
xmpanel restart
