# Poner en línea un sitio o una aplicación

Su VPS Pro sirve sus sitios y sus aplicaciones en su nombre de dominio, por HTTP y HTTPS. Los visitantes llegan a los puertos **80** y **443** de su servidor, bajo el nombre de su servidor; el cifrado HTTPS va de extremo a extremo, hasta su servidor, donde reside su certificado.

## 1. Apuntar su dominio a su servidor

Allí donde se gestiona la zona DNS de su dominio, cree dos registros para el nombre de su servidor, con las direcciones que aparecen en su tarjeta, apartado **VPS** de su área de cliente:

| Tipo   | Nombre                               | Valor                               |
| ------ | ------------------------------------ | ----------------------------------- |
| `A`    | `app` (o `@` para el propio dominio) | la **Dirección IPv4** de su tarjeta |
| `AAAA` | `app` (o `@`)                        | la **Dirección IPv6** de su tarjeta |

Un nombre bajo `vps.simafri.cloud` ya funciona: no hay nada que crear.

Cuando la zona DNS de su dominio la gestiona Simafri, nuestro equipo crea estos registros por usted: escríbanos. Antes de cambiar un sitio que ya está en línea, pídanos también que reduzcamos la duración de vida (TTL) del registro: el cambio se propaga entonces en pocos minutos.

Para comprobarlo desde su ordenador:

```
dig +short A app.mi-empresa.com

dig +short AAAA app.mi-empresa.com
```

## 2. Instalar su servidor web

Su servidor web escucha en el puerto **80** para HTTP y en el puerto **443** para HTTPS. Dos opciones habituales:

* **Caddy**, que obtiene y renueva por sí solo su certificado HTTPS;
* **Nginx** o **Apache**, con **Certbot** para el certificado.

### Con Caddy

```
apt install caddy
```

Después, en `/etc/caddy/Caddyfile`, para un sitio estático:

```
app.mi-empresa.com {

    root * /var/www/app

    file_server

}
```

o para una aplicación que escucha en el puerto 3000:

```
app.mi-empresa.com {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy`, y su sitio responde en HTTPS: Caddy ha obtenido el certificado y lo renovará por sí mismo.

### Con Nginx y Certbot

```
apt install nginx certbot python3-certbot-nginx
```

Cree el sitio en `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.mi-empresa.com;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Actívelo y, después, solicite el certificado:

```
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/

nginx -t && systemctl reload nginx

certbot --nginx -d app.mi-empresa.com
```

Certbot instala el certificado Let's Encrypt, añade la escucha en el puerto 443 y programa su renovación automática. `certbot renew --dry-run` comprueba que la renovación está lista.

## 3. Mantener su aplicación en marcha

Una aplicación Node.js, Python, Go o Java que funciona de forma continua se confía a **systemd**: arranca con el servidor y se reinicia sola si se detiene. Ejemplo, en `/etc/systemd/system/app.service`:

```
[Unit]

Description=Mi aplicación

After=network.target



[Service]

WorkingDirectory=/srv/app

ExecStart=/usr/bin/node server.js

Restart=always

Environment=NODE_ENV=production

User=www-data



[Install]

WantedBy=multi-user.target
```

```
systemctl daemon-reload

systemctl enable --now app

journalctl -u app -f    # seguir sus registros
```

PM2 para Node.js, Gunicorn o Uvicorn para Python, o Docker Compose cumplen la misma función si los prefiere.

## 4. Su base de datos

PostgreSQL, MySQL, MariaDB, Redis o MongoDB se instalan en su servidor con el gestor de paquetes, o desde el repositorio oficial del editor para obtener la última versión:

```
apt install postgresql
```

Mantenga su base de datos a la escucha en `localhost`: su aplicación accede a ella en el propio servidor. Para administrarla desde su ordenador, utilice un túnel SSH:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.mi-empresa.com
```

Su herramienta (DBeaver, pgAdmin, TablePlus) se conecta entonces a `localhost:5432`.

## Servir varios dominios

Su servidor responde bajo su nombre, fijado en el pedido. Para servir otro dominio u otro subdominio en el mismo VPS Pro, escriba al soporte indicando los nombres que desea añadir: nuestro equipo los conecta a su servidor y, después, usted crea sus registros DNS como en el paso 1 y añade su bloque a su servidor web.

## Preguntas frecuentes

### Mi sitio muestra un error de certificado.

Compruebe por orden: sus registros `A` y `AAAA` designan las direcciones de su tarjeta (`dig`), su servidor web escucha en los puertos 80 y 443 (`ss -tlnp`), y el certificado cubre ese nombre (`certbot certificates`). El certificado se obtiene una vez que el nombre designa su servidor: vuelva a ejecutar Certbot, o recargue Caddy, tras la propagación DNS.

### Mi sitio no responde en absoluto.

En el servidor, `curl -I http://localhost` muestra si su servidor web responde. `systemctl status nginx` (o `caddy`, o su servicio) y sus registros indican por qué se ha detenido. Describa lo que observa al soporte: la Asistencia integral hace el diagnóstico con usted.

### ¿Puedo instalar WordPress, Laravel o Symfony?

Sí: instale PHP-FPM, su base de datos y su servidor web y, después, su aplicación, como en cualquier servidor Linux. La Asistencia integral le indica los ajustes adecuados para su proyecto, paso a paso.
