Overview
Piximy Panel lets you run your FiveM server from a browser or phone, and works on QB-Core, Qbox and Meteo. The pack has two parts that work together:
| Part | Where it goes | What it does |
|---|---|---|
piximy-connect | Your game server's resources folder | Sends live players, logs and damage to the panel, and carries out the panel's actions in game |
piximy-panel | Your VPS, next to the game server | The website you log in to |
Requirements
- A Linux VPS running your FiveM server (Ubuntu 22.04 or 24.04 recommended)
- Node.js 18 or newer (
node -v) oxmysqlon the game server- QB-Core, Qbox or Meteo with ox_inventory, qb-inventory, ps-inventory, lj-inventory or Meteo's inventory
- Your game database login
- Optional: a domain name for HTTPS
Install piximy-connect
- Download your purchase from the Cfx.re Portal under your purchased assets. Your server must use a license key from the same Cfx.re account you bought with.
- Put the
piximy-connectfolder in yourresourcesfolder. Upload every file, including the hidden.fxapfile. - Open
piximy-connect/config.lua. The defaults work for most servers. ChangeConfig.CoreResourceorConfig.InventoryResourceonly if you renamed them. - Leave
server.cfgfor now. The panel setup prints the two lines to add.
On start the server console shows a line like [Piximy Connect] framework: qbox (core: qbx_core) | inventory: ox_inventory (ox). It creates its own database tables, so there is no SQL to run.
Install the panel
- Unzip
piximy-panel.zipfrom your download and upload the folder to your VPS, for example/home/fivem/piximy-panel. - Install its packages and run setup:
cd /home/fivem/piximy-panel
npm install
node setup.js
Setup asks for your server name, time zone, server folder, database login and an owner login. It tests the database and detects QB, Qbox or Meteo.
- Add the two lines setup prints to
server.cfg, afteroxmysqland your core:
set piximy_secret "the-secret-setup-printed"
ensure piximy-connect
- Restart the game server, then run
npm startin the panel folder. - Open
http://YOUR-VPS-IP:40150/control-panel/and log in as the owner.
Keep it running
sudo tee /etc/systemd/system/piximy-panel.service >/dev/null <<EOF
[Unit]
Description=Piximy Panel
After=network.target mariadb.service
[Service]
WorkingDirectory=/home/fivem/piximy-panel
ExecStart=/usr/bin/node server.js
Restart=always
User=fivem
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now piximy-panel
Change the folder and User= to match your VPS. Check it with systemctl status piximy-panel.
Domain and HTTPS
Log in at https://panel.yourserver.com/control-panel/ with nginx and a free Let's Encrypt certificate.
- At your domain provider, add an A record: name
panel, value = your VPS IP. - Install nginx and certbot:
sudo apt install -y nginx certbot python3-certbot-nginx - Create
/etc/nginx/sites-available/piximy-panel:
server {
listen 80;
server_name panel.yourserver.com;
location /control-panel/ { proxy_pass http://127.0.0.1:40150; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; client_max_body_size 300m; }
location /api/ { proxy_pass http://127.0.0.1:40150; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; client_max_body_size 300m; }
location /socket.io/ { proxy_pass http://127.0.0.1:40150; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
location = / { return 302 /control-panel/; }
}
- Turn it on and get HTTPS:
sudo ln -s /etc/nginx/sites-available/piximy-panel /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d panel.yourserver.com
- Add
PX_LISTEN_HOST=127.0.0.1to the panel's.envand restart it, so the panel is only reachable through your domain.
Using Cloudflare? Set the record to DNS only while certbot runs, then turn the proxy back on with SSL mode Full (strict).
Game host servers
Game hosts like Zap-Hosting run FiveM only, not Node.js. Rent a small Linux VPS for the panel and connect it to your game database:
- Ask your host to allow remote database access, and use those details in
node setup.js. - In
piximy-connect/config.lua, setConfig.PanelUrl = 'https://panel.yourserver.com'. - Setup needs a server folder: point it at an empty folder with a
resourcesfolder inside.
On a separate machine the panel can't reach your server files, so Config Editor, Script Settings, Maps & MLOs, the jobs file editor and the Meteo settings pages won't work. Everything else does.
Sections
The panel only shows sections your server can use, and prints which are off when it starts.
| Section | Needs |
|---|---|
| Dashboard, live players and map, profiles, inventories, logs, damage logs, bans, announcements, restarts, console, jobs, commands | Any server |
| Live stash and trunk editing, inventory logs | ox-based inventory |
| Database browser, config editor, backups, staff accounts, Section Access | Any server · owner only |
| Weather | weathersync |
| Economy, Payouts, Money flow, Heist police, Crime Tablet, Leaderboards, City Hall, Mechanic, Motels, Houses, Loading screen | Meteo |
| Piximy add-ons | That add-on installed |
Force a section on or off in .env, then restart the panel:
PX_MODULES_ON=weather
PX_MODULES_OFF=leaderboards,motels
Panel settings (.env)
Setup writes .env for you. Never share .env or staff.json: they hold your passwords.
| Setting | Default | What it does |
|---|---|---|
PX_SERVER_NAME | My Roleplay Server | Name shown across the panel |
PX_WEBSITE_URL | empty | Your website, used for links |
PX_TIMEZONE | UTC | Time zone for times and daily stats |
PX_FRAMEWORK | auto | auto, qb, qbox or meteo |
PORT / PX_LISTEN_HOST | 40150 / 0.0.0.0 | Panel port; use 127.0.0.1 behind nginx |
DB_HOST DB_PORT DB_NAME DB_USER DB_PASSWORD | — | Your game database |
PIXIMY_INTERNAL_SECRET | made by setup | Must match piximy_secret in server.cfg |
PX_SERVER_DATA | /home/fivem/server-data | Folder with resources and server.cfg |
PX_CORE_RESOURCE | qbx_core | Your core's name, e.g. qb-core |
PX_METEO_PREFIX | meteo- | Meteo only: change if you renamed Meteo resources |
PX_RESET_SPAWN | City Hall | Where Reset spawn sends a character: x,y,z,heading |
PX_MODULES_ON / PX_MODULES_OFF | empty | Force sections on or off |
Game settings (config.lua)
| Setting | Default | What it does |
|---|---|---|
Config.PanelUrl | http://127.0.0.1:40150 | Panel address as seen from the game server |
Config.Framework | auto | auto, qb, qbox or meteo |
Config.CoreResource | nil | Only if you renamed your core |
Config.InventoryResource | nil | Only if you renamed your inventory |
Config.ReviveEvent | hospital:client:Revive | Event the Revive button triggers |
Config.DamageLogs / DamageLogDays | true / 30 | Damage logs on or off, days kept |
Config.PlayerSyncSeconds | 10 | How often the live player list updates |
Config.PlayerIdKey | false | Key to show nearby player IDs, e.g. 'U' |
The secret is not in config.lua. It goes in server.cfg as set piximy_secret "…".
For developers
Write a line to the panel's Logs page from your own scripts (server side):
exports['piximy-connect']:Log('player', 'bought_house', source, { house = 'Vinewood 12', price = 250000 })
Add your own panel action:
exports['piximy-connect']:RegisterCommandHandler('give_vip', function(data, cmd)
local id = tonumber(data.id)
if not id or not GetPlayerName(id) then return false, 'Player is not online' end
-- your code
return true
end)
Tables created by piximy-connect: piximy_logs, piximy_ops_commands, piximy_damage_logs, piximy_connect_info.
Updating
- Back up your database (Owner Control → Backups, or
mysqldump). - Replace the panel files but keep
.env,staff.json,data/andstorage/. - Run
npm install, then restart the panel. - Replace
piximy-connectbut keep yourconfig.lua, then restart the game server.
Troubleshooting
| Problem | Fix |
|---|---|
| Panel says "not set up yet" | Run node setup.js in the panel folder |
| Module errors when starting | Run npm install; check node -v is 18 or newer |
| Can't open the panel | Open port 40150 in your firewall, or set up the domain |
| Player list and map stay empty | piximy_secret must match PIXIMY_INTERNAL_SECRET; check Config.PanelUrl |
| "panel sync failed (HTTP 401)" | The secrets don't match; copy it again and restart both |
| "Is piximy-connect running?" | Look for [Piximy Connect] framework: in the console; ensure piximy-connect must come after oxmysql and your core |
| "no QB-Core, Qbox or Meteo core found" | Set Config.CoreResource to your core's folder name |
| "You lack the required entitlement" | Your license key must come from the Cfx.re account that bought the pack |
| A section is missing | Check the panel's start line; force it with PX_MODULES_ON |
Still stuck? Get support.