Migrando la Infraestructura a otro VPS
Puede que en algún momento necesitemos mover a infraestructura hacia otro proveedor de servicios o simplemente el VPS contratado está a punto de expirar y sea preferible adquirir uno nuevo. Llegado el momento el proceso de migrar es muy fácil.
1. Detener la Infraestructura
Siempre se debe avisar con tiempo cuando realicemos tareas de este tipo para evitar que los usuarios se queden a media en una operación.
cd cashu4cs-deploy/
docker-compose stop
Hasta aquí ya tenemos la infraestructura detenida y nadie podrá usar los servicios.
2. Salvar directorio cashu4cs-deploy
Usaremos el comando tar zcvf para realizar un backup 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 la operación anterior 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.
3. Copiar y descomprimir cashu4cs-deploy.tar.gz en el nuevo VPS
Ejecutamos el siguiente comando:
scp cashu4cs-deploy.tar.gz root@<ip nuevo vps>:/root/
Si terminó la copia correctamente, pasamos a conectarnos al servidor.
ssh root@<ip nuevo vps>
# Luego de conectarnos descomprimimos el archivo
tar zxvf cashu4cs-deploy.tar.gz
# No movemos al directorio
cd cashu4cs-deploy/
Te preguntarás porque 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 archivo lnd.conf específicamente externalip.
Y como obtenemos la IP del nuevo VPS, muy fácil, podemos encontrarla en el panel del proveedor de servicio VPS 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 si podemos pasar al siguiente paso.
4. Iniciar la infraestructura
Ejecutamos lo siguiente:
docker-compose up -d
Ya en este punto se descargan nuevamente las imágenes y se construyen los contenedores con la información que ya tenian por lo que tendriamos en minutos la infraestructura operativa nuevamente. Si no falla el proceso, podemos comprobar 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