# Як розгорнути застосунок Next.js?

https://www.seturack.com/uk/baza-znan/stattia/how-do-i-deploy-my-nextjs-app

1. У панелі відкрийте **Мої сервери** і натисніть на свій сервер.
2. На вкладці **Огляд** дочекайтеся, поки в рядку **Застосунок** з’явиться «Next.js готовий».
3. Відкрийте посилання **Адреса панелі** й увійдіть з даними з рядків **Електронна пошта** та **Пароль**. Сервер і перший проєкт уже готові.

## Підключення репозиторію

1. На сторінці **Projects** відкрийте **My first project** і **production**, а потім натисніть **New resource**.
2. Для публічного репозиторію виберіть **Public Git Repository**, введіть адресу й натисніть **Check repository**.
3. Для приватного репозиторію спершу натисніть **Generate ED25519** на сторінці **Private Keys** у розділі **Keys & Tokens** і додайте відкритий ключ до **Deploy keys** репозиторію на GitHub. Потім виберіть **Private Git Repository (with Deploy Key)** і введіть `git@github.com:user/project.git`.
4. Залиште в **Build pack** значення **Railpack** і натисніть **Continue**. Coolify позначає Railpack як бета-версію, тож якщо виникнуть проблеми, виберіть власний Dockerfile.
5. Введіть свої змінні на сторінці **Environment Variables** і натисніть **Deploy**. Тестова адреса з HTTPS є на сторінці **Домени**.

## Розгортання через git push

1. На сторінці **Webhooks** застосунку скопіюйте **Webhook URL** із розділу GitHub, уведіть у **Webhook secret** випадкове значення завдовжки щонайменше 16 символів і збережіть.
2. У GitHub відкрийте **Settings** репозиторію, перейдіть до **Webhooks** і натисніть **Add webhook**. Цю адресу вкажіть як **Payload URL**, `application/json` — як **Content type**, те саме значення — як **Secret**, а єдиною подією виберіть push.

Відтоді кожен `git push` до вибраної гілки збирає й публікує нову версію. Після зміни змінної, що починається з `NEXT_PUBLIC_`, натисніть **Redeploy**. Якщо під час збирання бракує пам’яті, [збільште сервер у своїй панелі](https://www.seturack.com/uk/baza-znan/stattia/how-to-scale-server-up-or-down).

## Ваш домен

Спрямуйте запис A на IP-адресу сервера. На сторінці **Домени** натисніть **Add domain**, виберіть `https`, уведіть домен, збережіть і натисніть **Redeploy**. Сертифікат Coolify отримає сам.

## Закриття портів 8000, 6001 і 6002

Коли панель відкривається на своїй адресі з HTTPS, ці порти не потрібні. Docker оминає ufw на портах, які публікує, тож ufw їх не закриє. [Підключіться через SSH](https://www.seturack.com/uk/baza-znan/stattia/how-to-connect-with-ssh) і скористайтеся офіційним способом 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`

Остання команда оновлює встановлення й переходить на новішу версію, якщо така є. Щоб скасувати зміну, видаліть файл і виконайте ту саму команду.

## Корисно знати

Coolify підключається через SSH як root зі своїм ключем. Якщо вимкнути вхід для root або видалити рядок `coolify` з файлу `/root/.ssh/authorized_keys`, розгортання припиняться.

**Ще немає сервера?** [Замовте сервер із попередньо встановленим Next.js](https://www.seturack.com/uk/nextjs-vps): ви самі обираєте розмір і платите лише за обране.
