Migrando la Infraestructura a otro VPS
9. Migrando la Infraestructura a otro VPS
En este capítulo describimos el proceso para migrar la infraestructura completa a un nuevo VPS. El proceso es sencillo: detenemos los servicios, comprimimos el directorio de datos, lo copiamos al nuevo servidor y lo levantamos de nuevo.
Puede que en algún momento necesitemos mover la infraestructura hacia otro proveedor de servicios, o simplemente el VPS contratado está a punto de expirar y sea preferible adquirir uno nuevo.
9.1 Detener la Infraestructura
Siempre debemos avisar con tiempo cuando realicemos tareas de este tipo, para evitar que los usuarios se queden a medias en una operación.
cd cashu4cs-deploy/
docker-compose stop
Hasta aquí ya tenemos la infraestructura detenida y nadie podrá usar los servicios.
9.2 Respaldar el directorio cashu4cs-deploy
Usaremos el comando tar zcvf para crear un respaldo comprimido.
tar zcvf cashu4cs-deploy.tar.gz cashu4cs-deploy/
cashu4cs-deploy/
cashu4cs-deploy/get_public_ip.sh
cashu4cs-deploy/.git/
cashu4cs-deploy/.git/logs/
cashu4cs-deploy/.git/logs/HEAD
cashu4cs-deploy/.git/logs/refs/
cashu4cs-deploy/.git/logs/refs/remotes/
cashu4cs-deploy/.git/logs/refs/remotes/origin/
cashu4cs-deploy/.git/logs/refs/remotes/origin/HEAD
cashu4cs-deploy/.git/logs/refs/heads/
cashu4cs-deploy/.git/logs/refs/heads/main
....
....
....
cashu4cs-deploy/app-data/lnbits/db/
cashu4cs-deploy/app-data/cashu/
cashu4cs-deploy/app-data/cashu/.env
cashu4cs-deploy/app-data/cashu/certs/
cashu4cs-deploy/app-data/cashu/certs/client_cert.pem
cashu4cs-deploy/app-data/cashu/certs/ca_private.pem
cashu4cs-deploy/app-data/cashu/certs/generate_certificates.sh
cashu4cs-deploy/app-data/cashu/certs/server_private.pem
cashu4cs-deploy/app-data/cashu/certs/server_cert.pem
cashu4cs-deploy/app-data/cashu/certs/client_private.pem
cashu4cs-deploy/app-data/cashu/certs/ca_cert.pem
cashu4cs-deploy/recreate.sh
Si terminó correctamente, listamos el contenido del directorio.
ls .
cashu4cs-deploy cashu4cs-deploy.tar.gz
Ese archivo comprimido es toda nuestra infraestructura, la cual podremos copiar en el nuevo VPS.
9.3 Copiar y descomprimir cashu4cs-deploy.tar.gz en el nuevo VPS
Ejecutamos el siguiente comando:
scp cashu4cs-deploy.tar.gz root@<IP del nuevo VPS>:/root/
Si terminó la copia correctamente, pasamos a conectarnos al servidor.
ssh root@<IP del nuevo VPS>
# Luego de conectarnos descomprimimos el archivo
tar zxvf cashu4cs-deploy.tar.gz
# Nos movemos al directorio
cd cashu4cs-deploy/
Es posible que nos preguntemos por qué no iniciamos todo desde el paso anterior, y es que aquí hay un detalle: el nuevo VPS tiene una IP distinta, por lo que hay que actualizar los registros DNS de nuestro dominio y el parámetro externalip en el archivo lnd.conf.
¿Y cómo obtenemos la IP del nuevo VPS? Podemos encontrarla en el panel del proveedor o usando el siguiente script:
./get_public_ip.sh
12.45.128.56
En el ejemplo, la IP obtenida es 12.45.128.56; esa es la que debemos actualizar en el parámetro externalip y en los registros DNS. Ahora sí podemos pasar al siguiente paso.
9.4 Iniciar la infraestructura
Ejecutamos lo siguiente:
docker-compose up -d
En este punto se descargan nuevamente las imágenes y se construyen los contenedores con la información que ya tenían, por lo que tendríamos la infraestructura operativa en minutos. Si no falla el proceso, podemos comprobarlo con el siguiente comando:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0ec55b00d9c lnbits/lnbits:v1.5.3 "sh -c 'uv run lnbit…" 30 seconds ago Up 30 seconds 5000/tcp app_lnbits
86eada0916e5 jc21/nginx-proxy-manager:latest "/init" 30 seconds ago Up 30 seconds 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 81/tcp nginx_proxy_manager
fb888e103a82 ghcr.io/orangeshyguy21/orchard-mintdb-sqlite:1.5 "docker-entrypoint.s…" 30 seconds ago Up 30 seconds 3321/tcp app_orchard
5ff40c0146ab lightninglabs/lightning-terminal:v0.16.1-alpha "litd --configfile=/…" 30 seconds ago Up 30 seconds 8443/tcp, 9735/tcp, 10009/tcp lightning_terminal
aa7146e0961d cashubtc/nutshell:0.20.0 "poetry run mint" 30 seconds ago Up 30seconds app_cashu
a538285ac7bd lightninglabs/lnd:v0.20.1-beta "lnd --configfile=/r…" 30 seconds ago Up 30 seconds 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp, 0.0.0.0:9735->9735/tcp, [::]:9735->9735/tcp, 0.0.0.0:10009->10009/tcp, [::]:10009->10009/tcp nodo_lnd
da4838d5f798 postgres:14.18-bookworm "docker-entrypoint.s…" 30 seconds ago Up 30 seconds 5432/tcp postgres_lnbits
e20eecdc0df8 redis:8.4.0 "docker-entrypoint.s…" 30 seconds ago Up 30 seconds 6379/tcp redis
7de5f6d082cf dockurr/tor "tor" 30 seconds ago Up 30 seconds (healthy) 9050-9051/tcp proxy_tor