# Publicar um site ou uma aplicação

O seu VPS Ultra tem o seu próprio endereço IPv4 e o seu endereço IPv6: os seus domínios apontam diretamente para eles, e o seu servidor recebe o tráfego em todas as portas que abrir. Serve tantos sites e domínios quantos quiser.

## 1. Apontar o seu domínio para o seu servidor

No local onde se gere a zona DNS do seu domínio, crie dois registos com os endereços apresentados no cartão do seu servidor, secção **VPS** da sua área de cliente:

| Tipo   | Nome                                  | Valor                             |
| ------ | ------------------------------------- | --------------------------------- |
| `A`    | `@`, `www` ou o subdomínio pretendido | o **Endereço IPv4** do seu cartão |
| `AAAA` | o mesmo nome                          | o **Endereço IPv6** do seu cartão |

Quando a zona DNS do seu domínio é gerida pela Simafri, a nossa equipa cria estes registos por si: escreva-nos. Antes de mudar um site que já está online, peça-nos também para baixar o tempo de vida (TTL) do registo.

Para verificar a partir do seu computador:

```
dig +short A app.minha-empresa.pt

dig +short AAAA app.minha-empresa.pt
```

## 2. Instalar o seu servidor web e o seu certificado

Duas escolhas habituais em Linux:

* **Caddy**, que obtém e renova sozinho os seus certificados HTTPS:

  ```
  apt install caddy
  ```

  depois, em `/etc/caddy/Caddyfile`:

  ```
  app.minha-empresa.pt {

      reverse_proxy 127.0.0.1:3000

  }
  ```

  e `systemctl reload caddy`;

* **Nginx** ou **Apache**, com **Certbot** para o certificado Let's Encrypt:

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

  certbot --nginx -d app.minha-empresa.pt -d www.app.minha-empresa.pt
  ```

  O Certbot instala o certificado, acrescenta a escuta na porta 443 e programa a respetiva renovação automática.

Com Windows Server, o **IIS** serve os seus sites, e um cliente ACME como o win-acme instala e renova aí os seus certificados Let's Encrypt.

## 3. Manter a sua aplicação em funcionamento

Uma aplicação Node.js, Python, Go ou Java que funciona em contínuo confia-se ao **systemd**: arranca com o servidor e volta a arrancar sozinha se parar. Exemplo, em `/etc/systemd/system/app.service`:

```
[Unit]

Description=A minha aplicação

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    # acompanhar os registos
```

O Docker e o Docker Compose também se instalam como em qualquer servidor Linux.

## 4. A sua base de dados

PostgreSQL, MySQL, MariaDB, Redis ou MongoDB instalam-se com o gestor de pacotes, ou a partir do repositório oficial do editor. A memória garantida do seu VPS Ultra presta-se bem a uma base de dados exigente: ajuste a respetiva memória de trabalho (`shared_buffers` para PostgreSQL, `innodb_buffer_pool_size` para MySQL) em função da memória do seu tamanho.

Mantenha a sua base de dados à escuta em `localhost`, e administre-a a partir do seu computador através de um túnel SSH:

```
ssh -L 5432:localhost:5432 root@app.minha-empresa.pt
```

A sua ferramenta (DBeaver, pgAdmin, TablePlus) liga-se então a `localhost:5432`.

## Perguntas frequentes

### O meu site apresenta um erro de certificado.

Verifique por esta ordem: os seus registos `A` e `AAAA` designam os endereços do seu cartão (`dig`), o seu servidor web escuta nas portas 80 e 443 (`ss -tlnp`), a sua firewall deixa-as passar (`ufw status`), e o certificado cobre de facto esse nome (`certbot certificates`).

### Posso alojar vários sites no meu VPS Ultra?

Sim, tantos quantos quiser: aponte cada domínio para os seus endereços e acrescente o bloco correspondente ao seu servidor web.
