No description
Find a file
2026-10-04 15:45:45 +02:00
steps fix: add execute permission to 02-peers.sh 2026-10-04 15:45:45 +02:00
migration.sh fix migration flow: preserve go-legacy during install, fix fail() placement 2026-10-04 15:07:46 +02:00
readme.md feat: unified migration CLI, remove legacy scripts, update readme 2026-09-30 22:46:37 +02:00
rollback.sh fix: move info() to top, log before deleting backup dir 2026-09-30 21:21:56 +02:00

operator-migration

🇺🇸 English · 🇪🇸 Español


English

Zero-downtime migration from the legacy WireGuard + Go API stack to operator-docker. Existing VPN clients reconnect automatically — no new configuration required on their end.

How it works

The server's WireGuard identity (private key → public key) is preserved. All peers are migrated to the new API. Clients reconnect without any config change.

Before                          After
  wireguard (linuxserver)         wireguard (same identity)
  wireguard-api (Go)              operator-api (FastAPI)
  nginx-certbot                   marzban + hysteria2 + mysql

Prerequisites

  • Legacy stack running (docker ps shows wireguard)
  • Domain with DNS pointing to this server
  • SSH key authorized by Simplified Privacy
  • Port 80/TCP open externally (required by Let's Encrypt)

Migration

Run as your Linux user (not root):

bash migration.sh

What it does:

  1. Requests sudo once — no further prompts
  2. Verifies SSH access and clones operator-docker
  3. Creates a full backup — WireGuard keys, peers, Nginx, SSL certs
  4. Shuts down the legacy stack
  5. Runs the operator-docker installer
  6. Injects the legacy WireGuard identity into the new stack
  7. Migrates all peers via the new API
  8. Destroys the private key from disk

Rollback

If something goes wrong — or you want to revert — run:

bash rollback.sh

What it does:

  1. Stops operator-docker completely
  2. Removes SSL certificates issued for the new subdomains
  3. Restores the Nginx configuration from backup
  4. Restores SSL certificates from backup
  5. Starts the legacy Go stack
  6. Deletes the migration backup

Notes

  • The private key is destroyed from disk after successful migration.
  • If port 80 is blocked, SSL issuance will fail. Contact your VPS provider or use DNS challenge manually.
  • IPv6 is detected and enabled automatically.

Español

Migración sin tiempo de inactividad desde el stack legacy WireGuard + Go API hacia operator-docker. Los clientes VPN existentes se reconectan automáticamente — no requieren ningún cambio de configuración.

Cómo funciona

La identidad WireGuard del servidor (clave privada → clave pública) se preserva. Todos los peers se migran a la nueva API. Los clientes se reconectan sin cambios.

Antes                           Después
  wireguard (linuxserver)         wireguard (misma identidad)
  wireguard-api (Go)              operator-api (FastAPI)
  nginx-certbot                   marzban + hysteria2 + mysql

Requisitos

  • Stack legacy corriendo (docker ps muestra wireguard)
  • Dominio con DNS apuntando a este servidor
  • SSH key autorizada por Simplified Privacy
  • Puerto 80/TCP abierto externamente (requerido por Let's Encrypt)

Migración

Ejecutar como usuario Linux (no root):

bash migration.sh

Pasos:

  1. Solicita sudo una vez — sin interrupciones posteriores
  2. Verifica acceso SSH y clona operator-docker
  3. Crea un backup completo — claves WireGuard, peers, Nginx, certificados SSL
  4. Apaga el stack legacy
  5. Ejecuta el instalador de operator-docker
  6. Inyecta la identidad WireGuard legacy en el nuevo stack
  7. Migra todos los peers vía la nueva API
  8. Destruye la clave privada del disco

Rollback

Si algo falla — o si se quiere revertir — ejecutar:

bash rollback.sh

Pasos:

  1. Detiene operator-docker completamente
  2. Elimina los certificados SSL emitidos para los nuevos subdominios
  3. Restaura la configuración de Nginx desde el backup
  4. Restaura los certificados SSL desde el backup
  5. Inicia el stack Go legacy
  6. Elimina el backup de migración

Notas

  • La clave privada se destruye del disco tras la migración exitosa.
  • Si el puerto 80 está bloqueado, la emisión de certificados fallará. Contacta a tu proveedor VPS o usa DNS challenge manualmente.
  • IPv6 se detecta y habilita automáticamente.