3x-ui3x-ui

Backup & Restore

Back up and restore your 3x-ui database and certificates, manually or via the Telegram bot.

Your entire configuration — inbounds, clients, settings — lives in the panel's database. Back it up regularly so you can recover or migrate.

What to back up

  • The database — SQLite at /etc/x-ui/x-ui.db by default (or your PostgreSQL database if you use that backend).
  • Certificates — anything under /root/cert/ (or wherever you store TLS certs).

Manual backup

You can download a backup from the panel's overview, or copy the database file directly from the server:

copy the SQLite database
cp /etc/x-ui/x-ui.db /root/x-ui-backup-$(date +%F).db

To restore, stop the panel, put the database back in place, and start it again.

Restore a backup onto the same major version it came from when possible. Across major upgrades, let the panel run its migrations rather than forcing an old schema.

Automated bot backups (Telegram & Discord)

If you've configured the Telegram bot or Discord bot, enable tgBotBackup or discordBotBackup to attach a backup to the periodic report (on the tgRunTime / discordRunTime schedule, default daily). The bot sends both the database and the Xray config.json directly to your admin chat or channel, ensuring an off-server copy. Admins can also request a backup on demand from the Telegram bot's menu or using !backup in Discord.

SQLite dump / restore

The x-ui migrate-db command converts the SQLite database to and from a plain SQL text dump (handy for inspection or transferring between machines):

x-ui migrate-db --dump /root/x-ui.sql       # SQLite -> SQL text
x-ui migrate-db --restore /root/x-ui.sql     # SQL text -> SQLite

To move to PostgreSQL instead, see Database.

Whatever method you use, store backups off the server and test a restore occasionally — an untested backup isn't a backup.

On this page