Marzban panel vps ááťááşáá˝áŹá¸áááş user áááťáąáŹááş áĄáąáŹááş gdrive ááąáŤáş daily auto backup ááŻááşáááşá¸
áᎠguide á VPS áá˛á /opt/marzban áá˛áˇ /var/lib/marzban áááŻ
áá
áşááąáˇáá
áşá፠(Asia/Yangon á á ááŹááŽ) backup ááŻááşááźáŽá¸
Google Drive áá˛á marzban (áááááážá
áşáááşáᏠfolder name ááąá¸áááŻááş) áá˛ááᯠáááşááąá¸áážáŹááŤá
Backup ááąáŹááşá¸áá˝áąáááŻáááşá¸ á áááşááťáąáŹáşáá˝áŹá¸áááş auto delete ááŻááşááąá¸áážáŹááŤá
áááá VPS áááŻá
áááşáááťáááşááąáŹáˇ Auto Daily Backup ááŻááşááŹá¸ááŹááąáŹááşá¸ááŤáááşá
VPS áĄááąáŹááşá¸áááťááşáᲠmanual áĄááąáá˛áˇ Backup / Restore ááŻááşáááşá¸ (Manual)
- VPS áĄááąáŹááşá¸áážáŹ Marzban ááᯠáá down/stop ááŻááşááŤá
-
SFTP áá˛áˇ áĄáąáŹááşá folder áááŻááᯠdownload áá°á፠â
/opt/marzban/var/lib/marzban
- cloudflare áážáŹ record ááŻááşááŹá¸áá˛áˇ domain áážáŹ vps áĄááąáŹááşá¸ ip áĄá áŹá¸ áĄáá áş ip ááźááˇáş áĄáááşááťáááşá¸ááŤá VPS áĄáá áşáážáŹ Marzban panel ááᯠinstall ááŻááşááźáŽá¸ ESSL áá˛áˇ domain áááˇáşááŤá .env ááŹááž ááźááşá ááŹááááŻá፠(template / setting áá˝áąáááŻáááşá¸ áááşáˇááąáŹáşáááᯠset ááŻááşááŤ)
- Download áá°ááŹá¸áá˛áˇ folder áááŻááᯠVPS áĄáá áşáá˛ááᯠáááşá¸ááźáąáŹááşá¸áĄáážááşáĄáááŻááşá¸SFTP áá˛áˇ upload ááźááşáááşááŤá
- ááźáŽá¸áááş Marzban ááᯠrestart ááŻááşááŤá vps áĄááąáŹááşá¸áááŻáśá áś áĄáááŻááşá¸ áĄáŹá¸ááŻáśá¸ááźááşáĄááŻááşááŻááşááŹááŤááááˇáşáááşá
áážááşááťááş (áĄááąá¸ááźáŽá¸):
Subscription link ááᯠáĄááŻáśá¸ááźáŻááąáá°áá˝áąá link áááźáąáŹááşá¸áá˛áááşááŻáśá¸áááŻáˇáááąáážáŹááŤ
(Shadowsocks ss:// link ááᯠOutline áá˛áˇááŻáśá¸ááąáá°ááťáŹá¸ Key áááźáąáŹááşá¸áᲠáááşáĄááŻáśá¸ááźáŻáááŻáˇááĄáąáŹááş) â
Backup áá°áááˇáş VPS áĄááąáŹááşá¸áá˛áˇ Marzban panel áá˛áážáŹ
Main Server (Shadowsocks) host setting áá˛áˇ IP address ááąááŹáážáŹ
Cloudflare áážáŹ record ááŻááşááŹá¸áá˛áˇ domain ááᯠáááˇáşááąá¸ááŹá¸áááŤáááşá
(Node server ááťáŹá¸ áááŤáááşááŤ)
1) Auto Back ááŻááşáááˇáş vps áážáŹ Source folder áá˝áąáážá/ááážá á á áş
ls -la /opt/marzban /var/lib/marzban
Backup áááŻááşáááş áááŻáĄááşááąáŹ host setting inbound tamplates áĄáŹá¸ááŻáśá¸ááᯠáááŻáĄááşáááᯠáĄáááş ááźááşáááşááŹá¸ááŤ
áĄááąáŤáşá command áážáŹ No such file or directory áá˝ááşáááş
VPS áá˛áážáŹ folder path á áááźáŹá¸ááŹáááşááźá
áşáááŻááşáááŻáˇ script áá˛á path áááŻááźááşááááşá
2) rclone + Google Drive remote ááťáááş
2.1 rclone install
sudo apt update sudo apt install -y rclone
2.2 rclone config (Interactive)
rclone config (Headless VPS) â Google Drive Remote Setup (Step-by-step)
ááŽáĄáááˇáşáá˝áąá VPS (browser ááážááá˛áˇ headless machine) áážáŹ gdrive remote áá
áşááŻááŻááşááźáŽá¸
Windows / Phone (browser ááŤáá˛áˇ device) áááą config_token áááŻáá°ááźáŽá¸ paste ááŻááşááŹááŤá
1) rclone config áááŻá
rclone config
áááááŻáśá¸ ááŽááąá¸áá˝ááşá¸ááŹáááş â New remote ááŻááşáááş:
No remotes found, make a new one? n) New remote s) Set configuration password q) Quit config n/s/q> n
n áááŻááşááźáŽá¸ Enter ááąáŤááşááąá¸ááŤ
2) Remote name ááąá¸
Enter name for new remote. name> gdrive
Remote name á ááąáŹááşáážáŹ command ááŻáśá¸áááˇáşáĄá፠gdrive: áááŻáˇááąáŤáşáááşá
(colon : áááŤáááş local folder áááŻáˇáááşáááş)
3) Storage type áá˝áąá¸ (Google Drive)
Storage> drive
drive áááŻáˇááąá¸ááźáŽá¸ Enter (áááŻáˇ) list áá˛á drive number áááŻáá˝áąá¸
4) client_id / client_secret (ááážááááş blank)
Enter a value. Press Enter to leave empty. client_id> (enter) Enter a value. Press Enter to leave empty. client_secret> (enter)
ááŻáśáážááşáĄááŻáśá¸ááźáŻáááş blank ááťááşááŹá¸áááŻáˇáááŤáááşá Google API custom app áááŻááşááŹá¸áááş ááááˇáşááŤáá˛áˇá
5) Scope áá˝áąá¸
scope> 1
áĄááťáŹá¸áĄáŹá¸ááźááˇáş 1 (Full access) áááŻáá˝áąá¸á፠â (delete/cleanup ááŻááşáááŻáˇáááŻ)
6) service_account_file (áááŻáśá¸áááş blank)
Enter a value. Press Enter to leave empty. service_account_file> (enter)
Service Account (SA) ááŻáśá¸áááşáááŻááž JSON path áááˇáşáááŹááŤá ááŻáśáážááş Google account authorize ááŻááşáááşááᯠEnter áá˛áážáááşááźáŽá¸ blank ááťááş ááŤá
7) Advanced config (ááááŻáááş No)
Edit advanced config? y) Yes n) No (default) y/n> n
n áááŻááşááźáŽá¸ Enter
8) Use auto config? (VPS headless ááᯠNo)
Use auto config? * Say Y if not sure * Say N if you are working on a remote or headless machine y) Yes (default) n) No y/n> n
VPS (browser ááážá) ááźá
áşáááŻáˇ n áááŻááşááźáŽá¸ Enter
pc áážáŹáááŻáááş reclone application ááąáŤááşá¸ááŹá¸áááŻáˇ áááŻáĄááşááŤáááş
Windows áážáŹ rclone ááąáŤááşá¸ááźáŽá¸ VPS ááᯠauthorize token ááŻááşáááş
áĄáąáŹááşá link áá˝áąáá˛á áá
áşááŻááŻáááą Windows 64-bit (amd64) zip ááᯠááąáŤááşá¸ááźáŽá¸ unzip ááŻááşááŤá
ááźáŽá¸áááş PowerShell áááą .\rclone.exe authorize ... áá˛áˇ token JSON ááŻááşááźáŽá¸ VPS áážáŹ paste ááŻááşáááŻááşááŤáááşá
â Download Links (Official)
How to run (Windows PowerShell)
- ZIP ááᯠunzip ááŻááşááźáŽá¸
rclone.exeáážááá˛áˇ folder áá˛áááşá፠- áĄá˛áᎠfolder áá˛áážáŹ Shift+right click áážáááşááźáŽá¸ Open PowerShell window hear áááŻáá˝ááˇáşááŤ
- áĄáąáŹááşá command ááᯠrun ááŻááşá፠(current folder áá˛á exe áááŻáˇ
.\ááŤááááş)
.\rclone.exe authorize "drive" "eyJzY29wZSI6ImRyaXZlIn0"
Browser áá˝ááˇáşááŹááźáŽá¸ Google account authorize ááŻááşááąá¸áááŤáááş ááźáŽá¸áááş powershell terminal áá˛áážáŹ
token JSON áá
áşáᯠoutput áá˝ááşááŹáááşá áĄá˛áᎠJSON áááŻááŻáśá¸á áĄááźááˇáşáĄá
áŻáś copy ááŻááşááźáŽá¸ VPS áá˛á
rclone config áážáŹ token paste ááŻááşááŤá
Install/Usage docs (optional)
9) config_token (Windows á token JSON ááᯠpaste)
ááŽááąááŹá áĄááąá¸ááźáŽá¸ááŻáśá¸ááŤá rclone á browser ááŤáá˛áˇ device ááąáŤáşáážáŹ token ááŻááşááźáŽá¸ áĄá˛áᎠJSON áĄááźááˇáşáĄá áŻáśááᯠVPS áá˛áážáŹ paste ááŻááşáááŻááşá¸ááŹááŤá
rclone á ááŽáááŻáá˝ážááşáááş:
Option config_token.
Execute the following on the machine with the web browser:
rclone authorize "drive" "eyJzY29wZSI6ImRyaXZlIn0"
Then paste the result.
Enter a value.
config_token>
Windows PowerShell (browser ááŤáá˛áˇ PC) áážáŹ run:
.\rclone.exe authorize "drive" "eyJzY29wZSI6ImRyaXZlIn0"
Google login/Allow ááŻááşááźáŽá¸áááş PowerShell áá˛áážáŹ token JSON áá˝ááşááŹáááşá
áĄá˛áᎠJSON ááᯠáĄá
áááą áĄááŻáśá¸áá ( { áááą } áá )
copy ááŻááşááźáŽá¸ VPS áá˛áˇ config_token> ááąáŹááşáážáŹ paste ááŻááşááŤá
â
Paste ááŻááşááááˇáşááŻáśá
áś (áĽáááŹ):
eyJ0b2tlb....ifQ== (áĄááźááˇáşáĄá
áŻáś)
áĄááŻáśá¸áážáŹ <---End paste áááŻáˇááźááŹáááş paste ááźáŽá¸áá˝áŹá¸ááźáŽáááŻáá˛áˇáĄáááášááŤááşááŤá
10) Shared Drive (Team Drive) ááŻáśá¸áááŻáśá¸
Configure this as a Shared Drive (Team Drive)? y) Yes n) No (default) y/n> n
Shared Drive áááŻáśá¸áááş n áááŻááş Enter
11) Remote áááŻááááşá¸
Keep this "gdrive" remote? y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> y
y áááŻááş Enter (save)
12) Quit config
Current remotes: Name Type ==== ==== gdrive drive e) Edit existing remote n) New remote d) Delete remote r) Rename remote c) Copy remote s) Set configuration password q) Quit config e/n/d/r/c/s/q> q
q áááŻááş Enter
Troubleshooting Quick Fix
- Paste ááĄáąáŹááşááźááş: token JSON áááŻ
{ ... }áĄááźááˇáşáĄá áŻáś copy/paste ááŻááşá፠- Wrong remote name:
rclone listremotesáá˛áˇááŹáááşá á áşááźáŽá¸NAME:áá˛áˇááąáŤáşá፠- Shared Drive ááŻáśá¸áááŻáśá¸: áááŻáśá¸áááş áĄááźá˛
n
Phone (Termux) áá˛áˇ rclone Google Drive Authorize â VPS áážáŹ token paste ááŻááşáááşá¸
áᎠguide á ááŻááşá¸ (Android) + Termux áááŻááŻáśá¸ááźáŽá¸ Google Drive ááᯠauthorize ááŻááşááŹ
token JSON ááŻááşááźáŽá¸á áĄá˛áᎠtoken ááᯠVPS áá˛á rclone config áážáŹ
paste ááŻááşááźáŽá¸ remote (gdrive) ááťáááşááŹáĄáá˝ááşááŤá
1) Termux áá˛áážáŹ rclone áá˝ááşá¸
pkg update -y && pkg upgrade -y pkg install -y rclone termux-api rclone version
OK ááźá áşáááş rclone version info áá˝ááşááŹáááşá
2) Termux áá˛áážáŹ Google Drive authorize ááŻááş (token ááŻááş)
áĄáąáŹááşá command ááᯠTermux áá˛áážáŹ run ááŻááşááŤ:
rclone authorize "drive" "eyJzY29wZSI6ImRyaXZlIn0"
Run ááŻááşááźáŽá¸áááş Termux áá˛áážáŹ ááŽáááŻááąáŤáşááŹáááşááŤáááş:
http://127.0.0.1:xxxxx/auth?state=..... 2026/01/14 11:31:37 NOTICE: Log in and authorize rclone for access 2026/01/14 11:31:37 NOTICE: Waiting for code.
áĄáąáŹááşááĄáááˇáşáá˝áąáĄáááŻááşá¸ááŻááşáááş:
- Termux áážáŹááźáá˛áˇ
http://127.0.0.1:XXXXX/auth?state=...link ááᯠcopy ááŻááşá፠- ááŻááşá¸ browser (Chrome) áážáŹ paste ááŻááşááźáŽá¸áá˝ááˇáşááŤ
- Google account áá˛áˇ login áááşááźáŽá¸ Allow ááŻááşááŤ
- Authorize ááźáŽá¸ááŹáá˛áˇ Termux áá˛áážáŹ token JSON output áá˝ááşááŹáááş
â ď¸ áĄááąá¸ááźáŽá¸: token JSON ááᯠáĄá
áááą áĄááŻáśá¸áá ( { áááą } áá )
áĄááźááˇáşáĄá
áŻáś copy ááŻááşáááŤáááşá
áĄáᯠtoken ááᯠvps terminal áážáŹ paste ááŻááşááąá¸áááŻááşááŤ
Troubleshooting (áááźá áşáááş)
- Link ááá˝ááˇáşá: browser áážáŹ
http://127.0.0.1:PORT/...ááᯠpaste ááŻááşááźáŽá¸áá˝ááˇáşá፠- Token ááá˝ááş: browser áážáŹ Allow áááŻááşáááąá¸ááŹááźá áşáááŻááş â Allow ááźáŽá¸ááž Termux áááŻáˇááźááşááźááˇáşááŤ
- Paste ááĄáąáŹááşááźááş: token JSON áááŻ
{...}áĄááźááˇáşáĄá áŻáś copy/paste ááŻááşá፠- Remote ááá˝áąáˇ:
rclone listremotesáá˛áˇ remote name á á áşááźáŽá¸NAME:áá˛áˇááąáŤáşááŤ
2.3 Drive ááťáááşááźáŽá¸ááźáŽááŹá¸ á ááşá¸
rclone lsd gdrive:
OK áááŻáááş Google Drive áá˛á folder list áá˝áą ááźááŹáááşá
3) Google Drive áᲠtarget folder ááąáŹááş
rclone mkdir "gdrive:marzban"
áááŻáááŻááťááşáá˛áˇ folder name áĄáááŻááşá¸ marzban áá˛ááᯠupload ááŻááşááťááşááŹáááŻáˇ áᎠfolder áážááááŻáˇáááŻááŤáááşá
4) Backup script ááąá¸ááąá¸ááŹá¸áááŤáááş
Script location: /usr/local/bin/marzban_gdrive_backup.sh
sudo nano /usr/local/bin/marzban_gdrive_backup.sh
áĄáąáŹááşá script ááᯠáĄááźááˇáşáĄá áŻáś paste ááŻááşááŤ:
#!/usr/bin/env bash set -euo pipefail # ========================= # Marzban Backup -> Google Drive # Drive Structure: # gdrive:marzban// / # Local Structure: # /opt/backups/marzban/ / / # Retention: # Remote: delete files older than 72h (3 days) (HOST scope only) # Local : delete files older than 3 days # ========================= TS="$(date '+%Y-%m-%d_%H-%M-%S')" DATE_DIR="$(date '+%Y-%m-%d')" HOST="$(hostname -s)" # Source folders SRC1="/opt/marzban" SRC2="/var/lib/marzban" # Local backup base WORKBASE="/opt/backups/marzban" WORKDIR="${WORKBASE}/${HOST}/${DATE_DIR}" # rclone remote + folder REMOTE="gdrive" REMOTE_BASE="marzban" REMOTE_HOST_BASE="${REMOTE_BASE}/${HOST}" REMOTE_DIR="${REMOTE_HOST_BASE}/${DATE_DIR}" # Create local workdir mkdir -p "$WORKDIR" # Validate sources for d in "$SRC1" "$SRC2"; do if [ ! -d "$d" ]; then echo "ERROR: missing folder: $d" exit 1 fi done # Archive file name ARCHIVE="${WORKDIR}/${HOST}_marzban_${TS}.tar.gz" # Create tarball (absolute paths preserved) # NOTE: tar paths are relative to / tar -czf "$ARCHIVE" -C / \ "opt/marzban" \ "var/lib/marzban" # Create checksum (for integrity verification) sha256sum "$ARCHIVE" > "${ARCHIVE}.sha256" # Ensure Drive folder exists rclone mkdir "${REMOTE}:${REMOTE_DIR}" # Upload archive + checksum rclone copy "$ARCHIVE" "${REMOTE}:${REMOTE_DIR}" --transfers 2 --checkers 4 rclone copy "${ARCHIVE}.sha256" "${REMOTE}:${REMOTE_DIR}" # â Remote retention (HOST scope only) # This prevents VPS A from deleting VPS B backups. rclone delete "${REMOTE}:${REMOTE_HOST_BASE}" --min-age 72h --drive-use-trash=false rclone rmdirs "${REMOTE}:${REMOTE_HOST_BASE}" --leave-root # Local retention: keep only 3 days find "$WORKBASE" -type f -mtime +3 -name "*_marzban_*" -delete find "$WORKBASE" -type d -empty -delete echo "OK: backup uploaded: ${ARCHIVE}"
Save / Exit (nano)
Save: Ctrl + O â Enter
Exit: Ctrl + X
Permission ááąá¸:
sudo chmod 700 /usr/local/bin/marzban_gdrive_backup.sh
4.1 manual áá áşá፠run á ááşá¸
sudo /usr/local/bin/marzban_gdrive_backup.sh
4.2 Drive áᲠbackup file ááąáŹááşááŹááŹá¸á á áşááŤ
rclone lsl "gdrive:marzban" | tail -n 20
OK ááźá
áşáááş .tar.gz áá˛áˇ .sha256 áááŻááşáá˝áą Drive áá˛áážáŹ ááźááşááááşá
.sha256 á backup áááŻááşáááŻáĄááąáŹááşá¸áááŻááşá¸ááźá
áşáááŻáˇááᯠá
á
áşáááŻáˇ checksum verification áááŻááşááŤá
5) Asia/Yangon timezone ááŹá¸ááąá¸ááŤáááş
sudo timedatectl set-timezone Asia/Yangon timedatectl | grep "Time zone"
6) systemd service + timer (Daily 02:00) áĄááŻááşááŻááşáááŻáˇ script áááˇáşááŤáááş
6.1 Service file
sudo nano /etc/systemd/system/marzban-gdrive-backup.service
ááŽáĄáááŻááşá¸ paste:
[Unit] Description=Backup Marzban folders to Google Drive Wants=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/marzban_gdrive_backup.sh
Save / Exit (nano)
Save: Ctrl + O â Enter
Exit: Ctrl + X
6.2 Timer file
sudo nano /etc/systemd/system/marzban-gdrive-backup.timer
ááŽáĄáááŻááşá¸ paste:
[Unit] Description=Run Marzban backup daily at 02:00 [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true RandomizedDelaySec=300 [Install] WantedBy=timers.target
Save / Exit (nano)
Save: Ctrl + O â Enter
Exit: Ctrl + X
6.3 Enable + Start
sudo systemctl daemon-reload sudo systemctl enable --now marzban-gdrive-backup.timer
6.4 Next run / status á á áş
sudo systemctl list-timers --all | grep marzban systemctl status marzban-gdrive-backup.timer --no-pager
Active (waiting) áá˛áˇ Trigger: ... 02:xx áááŻáˇááźáááş timer OK ááŤá
RandomizedDelaySec=300 ááźáąáŹááˇáş 02:00 ááááááťááťáááŻááşáᲠ02:00 ~ 02:05 áĄáá˝ááşá¸ random ááŻááşáááŻááşááŤáááşá
ááááááťááť 02:00:00 áááŻááťááşáááş ááŽáááŻááşá¸ááᯠáááşáááŻááşááŤá
7) Log á á áş (manual run áá˛áˇ log ááąáŤáşáĄáąáŹááş á ááşá¸)
sudo systemctl start marzban-gdrive-backup.service journalctl -u marzban-gdrive-backup.service -n 80 --no-pager
Log áá˛áážáŹ OK: backup uploaded... áááŻáˇáá˝ááşáááş áĄááŻááş OK ááŤá
8) Restore
Restore áááŻááşáááş service/docker áážáŹ marzban ááᯠáááááşááŹá¸áááş áááŻááŻáśááźáŻáśááŤáááşá
vps áĄáá áşáážáŹ marzban panel script, essl domain script, template ááŻáśá¸ááŹá¸áááş template script áá˝áą áĄáááşááŻáśá¸ run ááŹá¸áááŻáˇáááŻááŤáááşá ááźáŽá¸áááş vps áĄááąáŹááşá¸áááą google drive ááąáŤáş Auto backup ááŻááşááŹá¸áá˛áˇ .tar.gz áááŻááşááᯠunzip ááŻááşááźáŽá¸ áááşáááŻááşáᏠfolder áĄáááŻááş vps áĄáá áşááąáŤáşáážáŹ upload ááŻááşáááŻááşááŻáśááŤáá˛á marzban restart ááźááˇáş terminal áážáŹ run ááąá¸áááŻááşáááşáááŤááźáŽ
Troubleshooting
- rclone config ááá˝áąáˇ â remote name áážááşááŹá¸ á
á
áş:
rclone config file,rclone listremotes - permission error â script áááŻ
sudoáá˛áˇ run ááŻááşááŤ:sudo /usr/local/bin/... - folders missing â
/opt/marzban//var/lib/marzbanpaths ááᯠVPS áĄáááŻááşááźááşá፠- Drive upload fail â
rclone lsd gdrive:áá˛áˇ auth expire ááźá áşááąááŹá¸ á á áşááŤ
rclone ááźááşááźááşááźááşáááş
sudo apt update sudo apt purge -y rclone sudo apt autoremove --purge -y sudo rm -rf /root/.config/rclone /root/.rclone.conf