mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-29 14:37:13 +00:00
9b91f0f42e
Fold the standalone 3x-ui-docs project (Next.js 16 + Fumadocs, deployed to docs.sanaei.dev) into docs/ so the panel and its documentation share a single source of truth, the way sing-box keeps its docs in-tree. The old repo becomes redundant and can be retired. - Import the full site under docs/ (app, components, content, lib, public, scripts, config). The self-contained pnpm project sits alongside the existing engineering notes with no filename collisions. - Re-point "Edit on GitHub" links from MHSanaei/3x-ui-docs to this repo's docs/content/docs path (docs/lib/shared.ts, docs/app/.../page.tsx). - Add docs-ci.yml and docs-deploy.yml under .github/workflows/, scoped to docs/** and run with working-directory: docs, since GitHub only runs workflows from the repo-root .github/. deploy-static.yml's GitHub Pages publish (CNAME docs.sanaei.dev) carries over unchanged. Follow-up (outside this commit): attach the docs.sanaei.dev custom domain to this repository's Pages (or set the Vercel project's root directory to docs), confirm the site is live from the monorepo, then delete MHSanaei/3x-ui-docs.
58 lines
2.0 KiB
Plaintext
58 lines
2.0 KiB
Plaintext
---
|
|
title: Backup & Restore
|
|
description: Back up and restore your 3x-ui database and certificates, manually or via the Telegram bot.
|
|
icon: DatabaseBackup
|
|
---
|
|
|
|
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:
|
|
|
|
```bash title="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.
|
|
|
|
<Callout type="warn">
|
|
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.
|
|
</Callout>
|
|
|
|
## Telegram backup
|
|
|
|
If you've configured the [Telegram bot](/docs/operations/telegram-bot), enable
|
|
**`tgBotBackup`** to attach a backup to the periodic report (on the `tgRunTime`
|
|
schedule, default daily). The bot sends both the **database** and the **Xray
|
|
`config.json`** to your admin chat, so you always have an off-server copy. Admins
|
|
can also request a backup on demand from the bot's menu.
|
|
|
|
## 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):
|
|
|
|
```bash
|
|
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](/docs/reference/database).
|
|
|
|
<Callout type="info">
|
|
Whatever method you use, store backups **off the server** and test a restore
|
|
occasionally — an untested backup isn't a backup.
|
|
</Callout>
|