HomeVideos

Tu agente de IA trabajando 24/7 en un VPS con Claude Code

Now Playing

Tu agente de IA trabajando 24/7 en un VPS con Claude Code

Transcript

687 segments

0:00

Te voy a enseñar cómo puedes instalar

0:01

Clow Code en tu servidor VPS para que

0:04

puedas lanzar un refactor desde el móvil

0:06

mientras te tomas un café, porque hay un

0:08

problema del que nadie te avisa y es en

0:10

el momento en el que tu portátil se

0:11

suspende, tu agente se muere con él y

0:13

todo ese progreso parado y perdido.

0:16

Pues, ¿qué vamos a hacer hoy? Pues te

0:17

voy a enseñar a montar tu propio agente

0:19

de Cloud en un VPS que está funcionando

0:21

247 aunque cierres el portátil, aunque

0:24

estés durmiendo, aunque estés de viaje y

0:26

muy importante, lo vamos a hacer bien

0:28

con un usuario no root, con SSH bien

0:31

configurado, con firewall, con un token

0:33

de GitHub limitado y con las medidas de

0:35

seguridad que cualquier depbería tener

0:37

en su VPS, porque ya sabes que dejar una

0:39

inteligencia artificial con todo tipo de

0:41

permisos es pedir un disgusto. ¿Y por

0:43

qué un VPS y no tu máquina local? A ver,

0:46

realmente si puedes tener un servidor en

0:48

tu casa, oye, perfecto, pero un VPS lo

0:50

vas a tener con disponibilidad 247 en un

0:53

entorno aislado y estable con el

0:55

networking de un Tata Center. Esto

0:56

quiere decir que vas a tener una muy

0:58

buena conexión a internet y cuando

0:59

instales dependencias, clones

1:01

repositorios o cualquier llamada a

1:03

internet va a ir volando. Yo voy a

1:05

utilizar mi máquina VPS que tengo en

1:07

Hostinger, que luego te voy a explicar

1:09

cómo puedes conseguir la tuya al mejor

1:11

precio. Y en lugar de hacer el acceso

1:13

root a través de SSH, de la terminal y

1:16

tal, le podemos dar a este botoncito de

1:18

terminal, te abre en otra pestaña

1:20

entrando por SSH como root a tu máquina.

1:23

Yo tengo un Ubuntu 2404 LTS, pero bueno,

1:26

tú igual pues tienes otro, no te tienes

1:28

que preocupar porque va a funcionar muy

1:30

parecido. Yo voy a crear ahora

1:32

diferentes usuarios, de hecho voy a

1:33

crear dos. El primero, add user dep

1:37

admin, que esto va a ser un usuario que

1:39

me va a permitir administrar mi servidor

1:43

para no utilizar más root. ¿Qué vamos a

1:45

ponerle de password? A ver, le voy a

1:46

poner admin. No es el mejor password, no

1:49

hagas esto. Pero bueno, en este caso,

1:50

como es un ejemplo, no hace falta que

1:52

pongamos esta información. La

1:53

información es correcta. Ya lo tenemos.

1:55

Y ahora está en el grupo de usuarios,

1:57

pero yo lo voy a modificar para ponerlo

2:00

en el grupo de admin. Así que ahí lo

2:03

tenemos. El dev admin es de este grupo,

2:07

está en dev admin, sudo y users, así que

2:10

ya lo tenemos en sudo en el caso de que

2:12

necesitemos administrar nuestro sistema.

2:15

Esto lo estoy haciendo porque luego voy

2:17

a quitar el acceso de root por SSH. Para

2:20

temas de seguridad podría hacer mucho

2:22

más complicado el nombre de usuario y

2:23

tal, pero solo te estoy enseñando para

2:25

que tengas un ejemplo. Ahora vamos a

2:27

crear otro usuario que va a ser Cloud.

2:30

Le voy a poner password cloud cloud y no

2:34

hace falta tampoco esto. Ya tenemos un

2:37

nuevo usuario, así que tenemos estos dos

2:39

usuarios de FAmin, que va a ser como mi

2:41

usuario humano para mantener el servidor

2:43

y Cloud, que será el usuario que va a

2:45

ejecutar Cloud. Y fíjate en el detalle

2:47

que a de Batman le he dado sudo y a

2:49

Cloud. Porque Cloud va a ejecutar un

2:51

agente de inteligencia artificial y si

2:53

ese agente puede hacer sudo, pues en la

2:55

práctica le estamos dando las llaves del

2:56

servidor entero y no queremos eso. Y

2:59

gracias a la gente de Hostinger que está

3:00

patrocinando este vídeo, tengo

3:02

descuentazo para ti, porque puedes

3:04

conseguir este servidor, el KVM2, que es

3:07

el que estoy utilizando en este vídeo

3:09

con el que estoy desplegando Clow Code,

3:12

pues lo puedes conseguir al precio más

3:14

bajo. Fíjate que le puedes aplicar mi

3:16

código de descuento Midu para

3:18

conseguirlo al mejor precio posible con

3:20

un descuento del 10% y tiene servidor,

3:23

vamos, de sobra. Siguiente paso, copiar

3:26

las claves SSH a los usuarios y poder

3:29

entrar desde mi máquina local sin

3:31

necesidad de tener ningún tipo de

3:33

password. De hecho, me lo va a pedir una

3:35

vez y ya está. Vamos a ejecutar CSH

3:37

copyid defadmin@la

3:41

del VPS, que esto lo puedes ver en el

3:43

panel de administración. Lo veis aquí.

3:45

Así que esto es donde queremos entrar.

3:48

Nos va a indicar cuál es la huella, le

3:50

vamos a decir que sí, que queremos

3:52

conectarnos y nos va a pedir el

3:53

password. El password es admin, es el

3:56

que le he puesto yo. Todo ha ido

3:58

correctamente. Así que ya desde la

4:00

máquina local, o sea, estoy desde mi

4:03

sistema, puedo ejecutar esto de aquí y

4:06

podemos entrar en la máquina. Ya estoy

4:08

como de Fadmin. Estoy en la máquina

4:11

Ubuntu. No he tenido que poner el

4:12

password porque hemos entrado por la

4:14

clave SSH. Perfecto. Esto mismo lo vamos

4:17

a hacer también con SSH, copy ID cloud.

4:21

Y aquí pues tenemos que copiar de nuevo

4:23

esta IP y hacemos exactamente lo mismo.

4:27

Ahora y el password que es cloud.

4:29

Perfecto. SSH Cloud y ponemos, bueno, de

4:33

hecho nos podemos copiar todo esto para

4:35

ver si funciona, si se conecta y

4:37

perfecto, ya hemos podido entrar como

4:39

cloud. Y esto es muy importante porque

4:40

así vamos a poder entrar con los dos

4:42

usuarios desde mi máquina local

4:44

fácilmente porque después como vamos a

4:46

quitar el acceso de root pues nos va a

4:49

facilitar mucho la vida. Vamos a volver

4:51

a la terminal donde estábamos como root,

4:53

o sea, estoy en la máquina Ubuntu y

4:56

vamos a cambiarle el password. ¿Por qué?

4:59

Porque la contraseña inicial siempre hay

5:01

que cambiarla, siempre, aunque luego

5:02

vamos a desactivar el login de root por

5:04

SSH. No queremos dejar nunca

5:06

credenciales temporales vivas. Así que

5:08

vamos a poner aquí otro password, ¿vale?

5:11

Voy a inventarme uno cualquiera, pero no

5:13

dejes el que te viene por defecto desde

5:15

el inicio. Ahora vamos a desactivar el

5:18

login de root y las contraseñas por SSH.

5:21

Vamos con Nano mismo. Si te gusta más

5:23

BIM, pues BIM, eh, lo que tú prefieras.

5:25

Y entramos aquí en la configuración del

5:28

SSH. Fíjate aquí que hay un montón de

5:31

líneas y tal. Lo importante, vamos a

5:34

poner aquí abajo, fíjate que está todo

5:36

como desactivado. No sé si estará la

5:39

configuración activada o si mira, ya

5:41

está aquí. ¿Ves que pone permit root

5:43

login? Le vamos a decir que no, que no

5:45

se pueda iniciar sesión como root. Y

5:48

luego password authentication. Esto es

5:51

para evitar que se pueda iniciar por SSH

5:54

utilizando el password porque ya lo

5:55

tenemos con nuestra máquina local con la

5:57

clave SSH y ya no necesitamos password,

5:59

así evitamos más ataques. PUP Key

6:02

Authentication, que este sí que le vamos

6:05

a decir yes. Así que guardamos los

6:08

cambios y ya tenemos esto. Y ahora vamos

6:11

a reiniciar el servicio de SSH. ¿Vale?

6:15

¿Qué significa esto? pues que con esto

6:18

nadie va a poder entrar como root y

6:20

nadie va a poder entrar utilizando

6:22

contraseñas solo con la clave SSH que

6:24

hemos hecho antes. Entonces seguimos

6:26

teniendo el usuario de Fminas de

6:28

mantenimiento, tenemos el usuario de

6:30

Cloud, pero ahora ya no podemos entrar

6:31

como root utilizando contraseña. Vamos a

6:34

aprovechar que estamos aquí para activar

6:36

temas de firewall. Vamos a utilizar UFW,

6:39

¿vale? UFW que significa uncomplicated

6:43

firewall. Me encanta el nombre que tiene

6:45

este firewall. Entonces, vamos a poner

6:47

que por defecto vamos a bloquear todo lo

6:51

que venga, ¿vale? O sea, todas las

6:53

llamadas que vengan al servidor y por

6:55

defecto vamos a permitir todas las que

6:58

salen, ¿vale? Entonces, ya así evitamos

7:01

que alguien intente hacernos peticiones

7:03

desde fuera a nuestro servidor, pero

7:05

dejamos que salgan todas las peticiones.

7:07

Sí que tenemos que permitir, vamos a

7:09

permitir el SSH, por supuesto, porque si

7:11

no tenemos un problema y luego vamos a

7:14

activar esto. Entonces, dice, "¿Esto

7:16

puede romper conexiones sh?" Le voy a

7:18

decir que sí. Y vamos a mirar el

7:20

estatus. Vemos lo que está permitiendo,

7:22

que son llamadas hacia fuera con el

7:24

22/TCP,

7:26

¿vale? O sea, solo estamos dejando

7:28

entrar el tráfico por SSH.

7:30

Y atención porque esto no va a romper

7:32

Clou Code. Mucha gente aquí se asusta

7:34

pensando, "Pero si bloqueo todo lo que

7:36

entra, ¿cómo va a llegar el móvil al

7:38

VPS?" Pero es que no llega. Clow Code

7:40

Remote, como lo vamos a ver, funciona al

7:43

revés. El VPS hace una conexión saliente

7:45

a los servidores de Anthropic y desde

7:47

ahí enruta a tu móvil. ¿Vale? Por eso lo

7:49

vamos a poder tener con un firewall

7:51

durísimo y aún así controlar todo desde

7:53

el teléfono. Así que en principio no te

7:55

preocupes y si hace falta luego tocamos

7:57

lo que necesitemos. Ahora otro punto que

8:00

vamos a hacer, el fail to ban, vamos a

8:02

hacer un update de todas las

8:03

dependencias para tener las últimas

8:05

dependencias de Ubuntu por si hay algún

8:08

tipo de vulnerabilidades y tal. Siempre

8:09

es importante tener esto. Y vamos a

8:11

instalar la herramienta de fail to ban.

8:14

Esto lo vamos a hacer más que nada

8:16

porque vamos a banear automáticamente

8:19

cualquier IP que intente conectarse a

8:22

nuestro servidor por SSH y falle varias

8:24

veces. Es como un portero de discoteca

8:27

que como vea que intentas muchas veces

8:30

entrar, te va a echar para siempre.

8:31

Vamos a tener que activar este servicio.

8:34

Lo vamos a activar ya. Fail to y ya lo

8:37

tenemos. A ver, lo podríamos configurar

8:39

mucho más, pero es que se me iría este

8:40

tutorial mucho. Te recomiendo que si te

8:42

interesa le eches un vistazo a Felto to

8:44

porque se pueden configurar cosas muy

8:46

tremendas. Vale, vamos con más cositas.

8:48

Instalar herramientas necesarias. Vamos

8:50

a tener que mantener viva la sesión de

8:53

cloud. Para eso vamos a instalar TMUux,

8:56

¿vale? Y GH. GH es GitHub, es el click

8:59

en la línea de comandos de GitHub. Vamos

9:01

a instalar estas dos que las vamos a

9:02

necesitar. Ahora las estoy instalando

9:04

como root, pero no pasa absolutamente

9:05

nada porque al final son herramientas

9:07

que vamos a querer tener disponibles. O

9:09

sea, que no te preocupes. Todo lo que

9:10

sea instalar paquetes, tocar servicios o

9:12

cambiar configuración del sistema, lo

9:14

podemos hacer con root o como defm. Como

9:16

ya estoy aquí en root, pues estoy

9:18

aprovechando y ya está. Vamos a crear

9:19

ahora la carpeta de trabajo donde vamos

9:22

a tener cloud, así que creamos en

9:24

home/cloud/pyectos.

9:28

Voy a ponerlo en castellano, ¿vale? La

9:30

carpeta cloud ya existía, ¿vale? Cloud y

9:33

aquí le hemos creado proyectos. Y ahora

9:36

que hemos creado esa carpeta, vamos a

9:37

cambiar el propietario y el grupo,

9:39

¿vale? Que va a ser de Cloud Cloud home

9:42

cloud/pryectos.

9:45

Perfecto. Esa será la zona de trabajo de

9:47

nuestra gente de Cloud. Ahora Cloud

9:49

podrá clonar repos, crear ramas,

9:51

ejecutar test, abrir PRs desde esa

9:54

carpeta, pero no tiene permisos para

9:56

tocar el resto del sistema, que es

9:58

bastante importante. Ahora vamos a

10:00

volver a mi terminal local donde estaba

10:03

aquí como cloud y a partir de aquí todo

10:06

lo que tenga que ver con cloud lo

10:08

hacemos con cloud, sin sudo. Esto es

10:11

crítico. Todo lo que tiene que ver con

10:12

Cloud lo hacemos con Cloud. Por lo

10:14

tanto, lo primero es que tenemos que

10:16

instalar Cloud. Por ejemplo, aquí,

10:18

fíjate que cómo instalamos Cloud, pues

10:20

nos dice que tenemos este comando de

10:22

aquí. Pues este comando es el que

10:24

ejecutaremos en nuestra terminal porque

10:26

somos el usuario de Cloud, queremos

10:27

tener acceso a la aplicación de Cloud.

10:29

Esto sí, lo instalamos con el usuario de

10:31

Cloud. Ya me dice que en la instalación

10:34

existe, pero no está en el PH. Vamos a

10:36

probar a ver si está. Vale, como podéis

10:38

ver, no encuentra el comando, no pasa

10:40

absolutamente nada. Lo que tendríamos

10:42

que hacer es ejecutar esta línea de

10:44

aquí. La ejecutamos. Y ahora sí que

10:47

debería funcionar perfectamente la

10:48

versión 2.1.150.

10:51

Ahora, siempre que vees que tenés la

10:53

versión, lo siguiente que yo haría sería

10:55

un Cloud Doctor. ¿Por qué? Porque así

10:57

vamos a estar viendo, oye, si está

10:59

funcionando correctamente, si están

11:00

activadas las actualizaciones, cuál es

11:02

el pat desde el que se está instalando,

11:04

o sea, para asegurarnos que todo está

11:06

correctamente, para chequear que todo

11:07

está bien, porque si os sale algún

11:09

warning, que normalmente es alguna

11:10

tontería del paz, para que lo revises.

11:12

Vale, le damos a enter otra vez. Y

11:14

ahora, ¿qué nos falta? Pues iniciar

11:17

sesión. Le damos a cloud y aquí pues

11:19

tenemos que configurar. Voy a decirle

11:21

dark mode y tenemos que seleccionar cómo

11:23

iniciamos sesión. Voy a decirle cloud

11:26

account with subscription. Fíjate que

11:28

dice opening browser to syn in. Claro,

11:31

en este caso normalmente te abre

11:33

automáticamente el navegador y tal, pero

11:35

aquí no puede porque estamos en una

11:37

máquina. Estamos en una máquina remota,

11:39

así que tenemos que copiarnos esto, ir a

11:42

esta pestaña de aquí y ahora tenemos que

11:44

autorizar manualmente esto. ¿Vale? Ahora

11:47

dice pega esto en Cloud Code. Vamos a

11:49

copiar este código. Volvemos aquí y dice

11:52

paste code here if prompted. Vale, pues

11:55

lo vamos a pegar. Fíjate, se ha pegado.

11:57

Le damos al enter y ahí ha ido

11:59

correctamente. Le damos otra vez al

12:01

enter, que Cloud pueda hacer errores,

12:03

¿vale? Le damos al enter, le vamos a

12:05

decir que confiamos en esta carpeta

12:08

aquí, en este caso. Ahora, fíjate que ya

12:10

tenemos cloud, o sea, puedo decirle hola

12:12

y esto ya pues funciona perfectamente. Y

12:14

esto se está ejecutando en mi servidor.

12:17

Una cosa muy interesante de ejecutar

12:19

Clow Code en tu servidor VPS es que

12:21

seguramente notarás que va un poquito

12:23

más rápido y es por la latencia

12:24

realmente. O sea, normalmente los

12:26

servidores VPS están mejor conectados

12:28

que tu casa, así que verás que a veces

12:31

puedes notar incluso un mejor

12:32

rendimiento. Y aprovecho para recordarte

12:34

que Hostinger está patrocinando este

12:36

pedazo de tutorial que cuando termine te

12:38

va a explotar la cabeza y que tenemos

12:40

los servidores VPS, los mejores del

12:43

mercado, al mejor precio porque además

12:45

tienes el cupón Midu que te da un 10% de

12:48

descuento. Así que aprovecha, ya sabes,

12:51

puedes ir a hostinger.com/midvps

12:55

y ahí directamente ves sus servidores y

12:57

acuérdate de aplicar el cupón de Midu. Y

12:59

vamos a configurar nuestra cuenta de

13:02

GitHub. Lo hacemos con GH, que es la

13:04

línea de comandos de GitHub. Hacemos out

13:06

login con githaub.com. Indicamos https.

13:10

Ahora me va a decir que necesitamos las

13:12

credenciales de GitHub. Vamos a hacer

13:14

inicio de sesión desde el navegador.

13:16

Aquí me dirá que tenemos que iniciar

13:18

gijha.com en el navegador. Le damos a

13:20

enter. Nos da error. No pasa nada porque

13:23

podemos abrir el navegador manualmente

13:27

y podemos poner el código aquí. Le vamos

13:31

a decir que continuamos. Autorizamos

13:32

este dispositivo, nos pide todos los

13:36

permisos. Autorizamos a GitHub. Nos pide

13:39

un código más del autenticador.

13:43

Verificamos. Volvemos. Hemos iniciado

13:46

sesión. Ahora yo quiero que en realidad

13:48

funcione por SSH. Puedo hacer GH out

13:52

setup git. Ejecutamos esto y ahora sí

13:55

que si vamos a la carpeta proyectos

13:58

podría clonar cualquier repositorio sin

14:01

ningún tipo de problema y voy a intentar

14:03

clonarme un repositorio que es privado

14:05

de mi cuenta de usuario para ver si

14:08

realmente funciona. Vale, le decimos que

14:10

sí y nos dice que tenemos el permiso

14:12

denegado. No pasa absolutamente nada. Lo

14:14

que necesitamos es añadir esta clave SSH

14:18

de este servidor en nuestra cuenta de

14:20

GitHub. Lo primero, vamos a generar la

14:23

clave de SSH con mi cuenta de correo.

14:26

Aquí tendríamos el identificador SSH de

14:28

esta máquina. Ahora mostramos el

14:30

contenido de la llave privada. Esta

14:32

llave no la tenéis que compartir. Yo la

14:34

voy a eliminar después, pero para que

14:35

sepáis que esto no lo podéis compartir.

14:38

Todo, todo os lo copiáis, os vais a

14:41

vuestra cuenta de GitHub, os vais a

14:43

Settings, por aquí buscáis SSH y GPG

14:47

Kys. Voy a añadir una K nueva y aquí le

14:50

ponemos el nombre. Voy a poner cloud

14:52

code VPS authentication key. Lo copiamos

14:56

aquí, añadimos la llave y una vez que la

15:00

tenemos, si volvemos aquí y volvemos a

15:02

intentar clonar, podemos ver que ahora

15:04

sí funciona perfectamente. Ahora nos

15:07

está clonando el proyecto y esto es muy

15:09

importante porque ahora lo que va a

15:10

poder hacer Cloud es también clonar los

15:13

proyectos que necesite sin ningún tipo

15:15

de problema, además de hacer pull

15:17

request y lo que haga falta. De hecho,

15:19

vamos a poner la prueba. Voy a ejecutar

15:20

Cloud y le voy a decir que clona el

15:23

repositorio de Midu.link. A ver si me

15:26

clona el repositorio correcto, que

15:28

parece ser que sí que lo está clonando.

15:30

En este caso me está utilizando

15:31

directamente GH. Y le voy a decir, mira

15:35

a ver si hay posibilidades de mejora en

15:38

el código. Vale, que me revise si

15:41

podemos mejorar algo en este proyecto de

15:43

midu.link. Voy a explorar la estructura

15:45

del proyecto para entender que hay.

15:47

Parece ser que sí que está funcionando

15:48

correctamente. Me está mirando el

15:50

layout. Mientras termina, como me va a

15:52

hacer alguna sugerencia, implementala y

15:56

haz una pull request en el proyecto para

16:00

aplicar el cambio. Vale, cuando termine

16:03

le daré enter. Vale, fíjate que me ha

16:05

dicho unas cuantas. Le voy a decir que

16:07

el guardi implementala, que es muy

16:08

general, implementa la más importante

16:11

para que sea una y hace una pull request

16:13

en el proyecto para aplicar el cambio.

16:15

Así veremos si está funcionando

16:16

totalmente en el VPS, en mi servidor, la

16:19

conexión. Le voy a decir que sí, que

16:21

entre al proyecto. La mejora más

16:24

importante es el buscador. Vale, ahora

16:26

fíjate que me ha dicho que no puede

16:27

hacer un for. Claro, porque es que es el

16:29

mismo, el mismo el que está haciendo el

16:31

for. No tiene sentido que hagan un for

16:32

porque tiene el usuario mío, ¿vale?

16:34

Aunque esto es interesante, le podríamos

16:35

llegar a hacer un usuario para no

16:37

utilizar nuestro propio usuario, hacerle

16:39

un usuario a nuestro propio Clow Code

16:41

para que hiciese forks y siempre tuviera

16:43

que hacer pull request. No sería mala

16:45

idea por temas de seguridad. Vale, ahora

16:48

le voy a decir que sí, que puede hacer

16:49

la edición en nuestra sesión. Está

16:52

añadiendo como estilos para el buscador,

16:54

está mejorando la UX y ahora está

16:57

haciendo la pull request. ¿Ves? Ahora,

16:59

para crear la P request tendríamos que

17:00

visitar esta URL. Lo interesante es que

17:02

la PL request lo puede hacer desde la

17:04

línea de comandos porque estamos

17:05

utilizando el programita de GH.

17:07

Entonces, esto directamente le va a

17:09

permitir crear la PR también desde aquí.

17:12

O sea, no va a tener que ir a la página

17:13

web ni nada, sino que todo lo va a hacer

17:16

aquí. ¿Ves? Ya tiene la PR creada. Vamos

17:18

a verla. Este es el cambio que he hecho

17:20

yo mismo. Me ha hecho una PR. Fíjate que

17:23

viene aquí como que ha sido Cloud Code

17:25

el que lo ha hecho. Podemos ver todos

17:27

los cambios. Perfecto. Bueno, pues ya

17:29

vemos que esta parte funciona. Pues

17:31

ahora vamos con el tema del control

17:33

remoto. Volvemos a la terminal, vamos a

17:36

hacer un exit. Aquí limpiamos la

17:38

pantalla y vamos a inicializar cloud en

17:41

control remoto. Para eso, como el

17:42

usuario cloud, ejecutamos cloud remote

17:45

control. Y ahora, fíjate que nos sale

17:47

esto. Estamos conectados. Capacidad cero

17:50

de 32 sesiones. Si le das al enter, vas

17:52

a tener el código QR que puedes escanear

17:54

con la cámara, pero yo ya tengo la

17:56

aplicación de Code abierta. Me puedo ir

17:58

a código, fíjate aquí, nueva sesión. Y

18:02

cuando le dé a nueva sesión, ya

18:04

automáticamente si yo ejecuto hola, por

18:07

ejemplo, fíjate que aquí en la

18:08

aplicación me sale que estoy conectado a

18:10

mi VPS, le voy a decir hola y

18:13

automáticamente deberíamos ver como la

18:16

terminal tenemos esta nueva sesión aquí,

18:18

capacidad una de 32. Hola. le podría

18:22

decir qué proyectos

18:24

tengo disponibles. Vale, esto es

18:27

importante porque cuando yo le voy a

18:30

preguntar aquí en en esta aplicación, lo

18:33

que va a permitir es ejecutar comandos

18:36

en mi servidor VPS. Fíjate que ya he

18:39

ejecutado el comando LS, me ha dicho la

18:42

salida y puedo volver aquí y me dice,

18:44

tienes dos proyectos disponibles y tal.

18:46

Como además vamos a abrir otra terminal

18:48

nueva. Le voy a decir aquí, clona el

18:52

proyecto de la velada y dime cuántos

18:57

boxeadores hay. Vale, esto es

19:00

interesante. Estamos totalmente

19:02

controlando el servidor VPS desde

19:05

nuestro móvil con control remoto. Me

19:08

está pidiendo permisos. Le voy a decir

19:09

que siempre permita. Todo lo que está

19:11

ejecutando en la terminal lo está

19:14

haciendo en esta máquina, en el VPS, no

19:16

lo está haciendo en mi máquina local.

19:18

Vale, fíjate que ya tenemos ahí. Ahora

19:21

le va a decir que sí, que clone el

19:23

proyecto. O sea, está controlando

19:25

totalmente la máquina VPS desde mi

19:28

móvil, lo cual es tremendo. Mira, un

19:31

archivo leído. Y aquí tendríamos la

19:33

respuesta del repositorio, la velada

19:35

landing. Tenemos un problema, sin

19:37

embargo, porque ahora está funcionando

19:38

esto muy bien. Parece que estamos

19:40

controlando. Le voy a decir, clona el

19:43

proyecto de Advent GS y mígralo a Astro.

19:47

Claro, esto es un proyecto que está

19:49

hecho con Nextis y es una tarea que

19:52

tardaría muchísimo tiempo en terminar.

19:56

Ahora ha aparecido ahí, parece que va a

19:58

iniciar, pero ¿qué ocurre si yo por lo

20:00

que sea cierro esto? Lo que va a pasar

20:03

es que si yo cierro esto, se acabó. Las

20:06

sesiones que tengo abiertas ahora se

20:08

paralizan. aunque parece ahí que esté

20:10

pensando y está ejecutando y tal, lo

20:13

cierto es que se va a paralizar, se va a

20:15

quedar como en pausado hasta que no

20:17

detecte que de nuevo voy a activar el

20:19

control remoto, pues ya no funciona. Y

20:21

esto lo queremos evitar. ¿Por qué?

20:23

Porque yo lo que quiero, obviamente, es

20:26

poder trabajar sin depender de que esté

20:29

conectado a la máquina. Si yo ahora

20:30

cierro esto y resulta que deja de

20:32

funcionar, pues para qué hemos creado

20:34

todo esto. Vale, vamos a abrir una nueva

20:36

pestaña y me voy a conectar como

20:39

administrador. Vamos a ver. Vale, ya

20:42

estamos como administrador y aquí vamos

20:44

a crear un servicio utilizando TMU. TMU

20:47

es un programa que te permite dividir

20:49

pantallas en paneles independientes,

20:51

gestionar varias ventanas y lo más

20:53

importante, mantener programas y

20:56

comandos ejecutándose en segundo plano

20:59

independientemente de que estés

21:00

utilizando o no la terminal. se la está

21:02

cerrando, la desconectas, te desconectas

21:04

del servidor o lo que sea, sigue

21:05

funcionando. Entonces, tenemos que crear

21:08

un servicio. Vamos a utilizar sudo nano,

21:11

puedes utilizar beam si lo prefieres. Y

21:13

aquí vamos a crear este servicio,

21:15

cloudremote.

21:17

Le tenemos que poner el password para

21:19

que active el sudo, que era admin,

21:21

nuestro password. Y aquí voy a copiar

21:24

todo esto, pero no te preocupes que te

21:25

lo voy a explicar, sobre todo lo más

21:27

importante. Tenemos nuestro servicio con

21:29

una descripción en el servicio. Lo

21:32

importante lo va a ejecutar el usuario

21:35

cloud en el directorio de trabajo Home

21:38

Cloud Proyectos. Aquí en el exec Start,

21:42

fíjate que tenemos barrauser/bin/temux.

21:46

Este es el programa que queremos para

21:48

crear esta ventana de terminal. Creamos

21:50

una nueva sesión. Le decimos que lo

21:52

ponga en modo detach para que no nos

21:54

meta en esa sesión, sino que lo haga de

21:56

forma separada. Le damos un nombre a

21:58

esta sesión que va a ser Cloud y

22:00

tendríamos que ejecutar este comando de

22:02

aquí. Si lo dejamos exactamente así, nos

22:06

puede dar problemas por no encontrarlo

22:08

en el paz, porque claro, como es un

22:10

servicio y tal, pues para asegurarnos lo

22:12

que podemos hacer es aquí vamos otra vez

22:15

a la terminal donde éramos cloud y yo ya

22:17

he ejecutado un witch cloud para que me

22:19

diga cuál es el path correcto para

22:22

ejecutarlo. Así que me lo he copiado.

22:24

Vuelvo aquí y aquí en lugar de cloud

22:27

vamos a ejecutarlo desde

22:30

barrahome/cloude.

22:32

Cloud, ¿vale? Para que esté correcto. Y

22:34

ejecutamos el comando de remote control.

22:36

Voy a hacer esto más pequeño para que se

22:38

vea entero. Ahora, cuando se pare este

22:40

servicio, lo que queremos es matar la

22:42

sesión que tenía el nombre de cloud. Y

22:44

ya está. Creo que todo lo demás se

22:46

entiende perfectamente. Vamos a guardar

22:48

estos cambios de aquí. Ya tendríamos el

22:50

servicio preparado, ahora lo que tenemos

22:52

que hacer es activarlo. Primero vamos a

22:54

ejecutar el Demon Reload para que se

22:57

vuelva a recargar el Demon. Ahora le

22:59

decimos que queremos inicializar ya este

23:02

nuevo servicio Cloud Remote. Le vamos a

23:04

dar. Y para asegurarnos que está

23:06

funcionando correctamente, vamos a poner

23:08

aquí un estatus para ver si nos ha dado

23:10

algún tipo de problema. Vale, está bien.

23:12

Fíjate que pone active running, o sea,

23:15

ya está funcionando perfectamente. El

23:17

estatus es el que estábamos esperando.

23:19

Ahora, si el VPS se reinicia por

23:21

cualquier motivo, lo interesante es que

23:23

como tenemos un servicio que se

23:24

inicializa solo, pues no nos tenemos que

23:26

preocupar porque se volverá a levantar.

23:29

Y lo que es mejor es que ahora si vamos

23:31

a nuestra aplicación, fíjate, si ahora

23:34

vuelvo y le vuelvo a dar aquí y buscamos

23:37

un nuevo proyecto y le digo hola. Esto

23:39

sí que está funcionando correctamente.

23:42

¿Ves que funciona correctamente? Para

23:44

ver el estado, fíjate que cuando tú

23:47

abres esto, si le das aquí un clic,

23:49

puedes ver que tiene como un puntito

23:52

verde, casi no se ve, pero ahí tiene un

23:54

puntito verde. Significa que sí que está

23:55

conectado el VPS. Y además en el control

23:57

remoto le puedes dar aquí y puedes ver

23:59

todas las sesiones que tiene abiertas y

24:01

además pues por lo que sea las puedes ir

24:02

cerrando. Puedes decirle, "Vale, pues

24:04

esta finalizar sesión, finalizar sesión,

24:06

¿vale? Las puedes ir cerrando para que

24:08

así estas sesiones no se quedan abiertas

24:10

y puedes abrir cualquier otra. Le

24:12

podrías decir actualiza las dependencias

24:16

de Midu.link

24:18

que es uno de los proyectos que tengo

24:20

ahí y crea una pool request. Entonces le

24:25

damos. Lo que va a hacer es controlar el

24:26

VPS sin necesidad de que yo tenga el

24:29

portátil ni nada, trabajando 100% desde

24:31

mi móvil con el acceso a los proyectos

24:33

que yo tengo. Como puedes ver, ya está

24:35

funcionando aquí. Yo puedo salir tanto

24:38

de esta conexión como de esta conexión.

24:41

Ahora mismo no estoy en ningún momento

24:43

conectado. Le voy a decir que lo

24:45

permitimos. Y fíjate que esto se sigue

24:48

ejecutando sin ningún problema. Sigue

24:50

funcionando. Le voy a decir que lo

24:51

permita todo. Ahora mismo todo está

24:53

funcionando correctamente. No estoy

24:55

conectado de ninguna forma. No tengo

24:57

ahora ningún tipo de conexión abierta y

25:00

aún así está funcionando mi conexión a

25:03

la VPS porque tenemos en segundo plano

25:06

ejecutándose nuestro Cloud Remote

25:08

Control. Así que esto pues podríamos

25:10

estar permitiéndole todo. Y fíjate que

25:13

ya tenemos Cloud funcionando en un

25:15

servidor VPS para controlar nuestros

25:18

proyectos de depender de estar en

25:20

nuestra máquina que esté encendida ni

25:22

nada de esto. Y nada, amigos, con esto

25:23

has visto cómo puedes instalar Clow Code

25:26

en tu servidor VPS y además así

25:29

controlarlo en remoto desde tu móvil

25:32

I247. Lo tienes ahí siempre disponible y

25:35

se pueden hacer verdaderas maravillas

25:37

con esto porque podrías controlar tu

25:38

Clow Code y que itere un proyecto que ya

25:41

tengas desplegado, hacer, vamos, lo que

25:43

quieras. Lo he hecho con el servidor de

25:45

Hostinger. Muchas gracias a la gente de

25:46

Hostinger por patrocinarme y permitirme

25:48

hacer estos pedazos de vídeos. Te

25:50

recuerdo que tienes una ofertaza para

25:52

conseguir también tu servidor VPS

25:55

Hostinger, que te dejo aquí el enlace y

25:57

el cupón para que no te lo pierdas y lo

25:59

tengas al mejor precio posible. Y si te

26:01

ha gustado este tutorial y todo lo que

26:03

te he enseñado, ya sabes, deja un buen

26:05

like, un comentario que siempre ayuda y

26:08

a seguir aprendiendo. Hasta luego. Ciao

Interactive Summary

Este video es una guía completa sobre cómo configurar Cloud Code en un servidor VPS para tener disponibilidad 24/7. El autor explica cómo asegurar el servidor configurando usuarios sin privilegios root, implementando SSH, configurando un firewall (UFW) y utilizando fail2ban. Además, se detalla cómo configurar un servicio de segundo plano con TMUX para mantener la sesión de Cloud Code activa y accesible de forma remota desde el móvil, permitiendo gestionar proyectos y realizar operaciones como pull requests de manera autónoma sin depender de una máquina local.

Suggested questions

3 ready-made prompts