# Como publico a minha aplicação Next.js?

https://www.seturack.com/pt/base-de-conhecimentos/artigo/how-do-i-deploy-my-nextjs-app

1. No painel, abra **Os meus servidores** e clique no seu servidor.
2. No separador **Resumo**, aguarde até a linha **Aplicação** indicar «Next.js está pronto».
3. Abra a ligação em **Endereço do painel** e inicie sessão com as linhas **E-mail** e **Palavra-passe**. O servidor e um primeiro projeto já estão prontos.

## Ligar o repositório

1. Na página **Projects**, abra **My first project** e **production** e prima **New resource**.
2. Para um repositório público, escolha **Public Git Repository**, introduza o endereço e prima **Check repository**.
3. Para um repositório privado, prima primeiro **Generate ED25519** na página **Private Keys**, em **Keys & Tokens**, e adicione a chave pública às **Deploy keys** do repositório no GitHub. Depois escolha **Private Git Repository (with Deploy Key)** e introduza `git@github.com:user/project.git`.
4. Deixe o **Build pack** em **Railpack** e prima **Continue**. O Coolify indica o Railpack como beta, por isso, se der problemas, escolha o seu próprio Dockerfile.
5. Introduza as suas variáveis na página **Environment Variables** e prima **Deploy**. Um endereço HTTPS de teste encontra-se na página **Domains**.

## Publicar com git push

1. Na página **Webhooks** da aplicação, copie o **Webhook URL** da secção do GitHub, introduza em **Webhook secret** um valor aleatório com pelo menos 16 caracteres e guarde.
2. No GitHub, abra as **Settings** do repositório, vá a **Webhooks** e prima **Add webhook**. Use esse endereço como **Payload URL**, `application/json` como **Content type**, o mesmo valor como **Secret** e o push como único evento.

A partir daí, cada `git push` para o branch escolhido compila e publica uma nova versão. Depois de alterar uma variável que comece por `NEXT_PUBLIC_`, prima **Redeploy**. Se uma compilação ficar sem memória, [aumente o servidor a partir do painel](https://www.seturack.com/pt/base-de-conhecimentos/artigo/how-to-scale-server-up-or-down).

## O seu domínio

Aponte o registo A para o IP do servidor. Na página **Domains**, use **Add domain**, escolha `https`, introduza o domínio, guarde e prima **Redeploy**. O Coolify obtém o certificado.

## Fechar as portas 8000, 6001 e 6002

Quando o painel abrir no endereço HTTPS, estas portas deixam de ser necessárias. O Docker ignora o ufw nas portas que publica, por isso o ufw não as fecha. [Ligue-se por SSH](https://www.seturack.com/pt/base-de-conhecimentos/artigo/how-to-connect-with-ssh) e siga o método oficial do Coolify:

`cd /data/coolify/source`

`printf 'services:\n coolify:\n ports: !override\n - "127.0.0.1:8000:8080"\n - "127.0.0.1:6001:6001"\n - "127.0.0.1:6002:6002"\n' > docker-compose.custom.yml`

`curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash`

O último comando atualiza a instalação e passa para uma versão mais recente, se existir. Para anular, apague o ficheiro e execute o mesmo comando.

## Convém saber

O Coolify liga-se por SSH como root com a sua própria chave. Desativar o início de sessão root ou remover a linha `coolify` de `/root/.ssh/authorized_keys` impede as publicações.

**Ainda sem servidor?** [Encomende um servidor com Next.js instalado](https://www.seturack.com/pt/nextjs-vps): escolhe o tamanho e paga apenas o que escolher.
