bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Розгортання CapRover на

calendar_month Jul 26, 2026 schedule 23 хв. читання visibility 17 переглядів
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Розгортання CapRover на VPS: self-hosted PaaS для легкого деплою застосунків

TL;DR

У цьому детальному посібнику ми крок за кроком налаштуємо CapRover — потужну self-hosted PaaS (Platform as a Service) — на вашому VPS. CapRover дозволяє автоматизувати розгортання, масштабування та керування веб-застосунками, базами даних і мікросервісами, надаючи функціональність, схожу з Heroku або Netlify, але під вашим повним контролем. Ви навчитеся готувати сервер, встановлювати Docker і CapRover, конфігурувати домени, деплоїти застосунки та налаштовувати резервне копіювання, отримуючи повну свободу та економію.

  • Ви розгорнете повноцінну PaaS на своєму VPS, керовану через зручний веб-інтерфейс або CLI.
  • Навчитеся автоматизувати деплой застосунків з Git-репозиторіїв з підтримкою CI/CD.
  • Отримаєте безкоштовні SSL-сертифікати для всіх ваших застосунків завдяки інтеграції з Let's Encrypt.
  • Опануєте базові принципи обслуговування сервера, бекапів та усунення несправностей.
  • Заощадите на хмарних PaaS-сервісах, зберігаючи повний контроль над інфраструктурою та даними.

Що ми налаштовуємо і навіщо

У сучасному світі розробки застосунків швидкість і простота розгортання відіграють ключову роль. CapRover — це безкоштовна та відкрита PaaS (Platform as a Service) платформа, яка перетворює ваш VPS або виділений сервер на потужне середовище для хостингу застосунків. Уявіть собі Heroku або Netlify, але повністю під вашим контролем і без щомісячних платежів за кожен деплоймент.

CapRover дозволяє розробникам легко розгортати будь-які веб-застосунки (Node.js, Python, Ruby, PHP, Go, Java та інші), статичні сайти, бази даних та контейнеризовані сервіси. Він надає всі необхідні інструменти: автоматичний SSL (через Let's Encrypt), CI/CD (безперервна інтеграція та доставка), масштабування, моніторинг та керування доменними іменами. В основі CapRover лежить Docker та Nginx, що забезпечує високу продуктивність та гнучкість.

У підсумку, після завершення цього посібника, ви отримаєте повністю налаштовану платформу, на якій зможете розгортати свої проєкти за лічені хвилини. Більше не потрібно вручну налаштовувати Nginx, Docker Compose або Let's Encrypt для кожного нового застосунку – CapRover зробить це за вас.

Альтернативи та переваги self-hosted

На ринку існує безліч альтернатив: від повністю керованих хмарних PaaS-сервісів (Heroku, Vercel, Render, DigitalOcean App Platform) до більш низькорівневих рішень, таких як ручне керування Docker-контейнерами або кластерами Kubernetes. Чому ж варто обрати self-hosted CapRover на VPS?

  • Повний контроль та володіння даними: Ваші дані та застосунки знаходяться на вашому сервері, а не у стороннього провайдера. Це критично для проєктів з високими вимогами до безпеки або дотримання регулятивних норм.
  • Економія коштів: Хмарні PaaS-сервіси можуть швидко стати дорогими в міру зростання проєкту. З CapRover ви платите лише за VPS, а кількість розгорнутих застосунків практично не обмежена. Це особливо вигідно для розробників, які запускають безліч невеликих проєктів або прототипів.
  • Гнучкість: Можливість встановлення будь-яких Docker-образів, налаштування довільних змінних оточення, використання власних captain-definition файлів для точного контролю над збіркою та розгортанням.
  • Навчання та досвід: Налаштування власної PaaS дає цінний досвід роботи з Docker, Linux, мережевими конфігураціями та системним адмініструванням, що підвищує вашу технічну експертизу.
  • Незалежність від постачальника: Ви не прив'язані до екосистеми одного хмарного провайдера, що дає свободу вибору та міграції.

Звісно, self-hosted рішення вимагає більше початкових зусиль та мінімальних знань адміністрування. Однак CapRover значно знижує цей поріг входу, автоматизуючи більшу частину складних завдань.

Який VPS-конфіг потрібен для цього завдання

Вибір відповідного VPS є критично важливим для стабільної та продуктивної роботи CapRover і ваших застосунків. Вимоги залежать від кількості та складності сервісів, що розгортаються. Нижче наведено рекомендації для 2026 року.

Мінімальні вимоги

Для базової установки CapRover та запуску кількох невимогливих застосунків (наприклад, статичний сайт, невеликий API, тестова база даних):

  • CPU: 2 vCPU. Цього достатньо для роботи Docker, CapRover та обробки невеликого трафіку.
  • RAM: 4 GB. Docker та CapRover самі по собі споживають значну частину пам'яті. 4 GB вистачить для кількох легких Node.js або Python застосунків.
  • Диск: 80 GB SSD (NVMe краще). SSD обов'язковий для продуктивності Docker. 80 GB дозволять зберігати кілька Docker-образів, логи та дані застосунків. NVMe диски значно прискорюють операції введення-виведення.
  • Мережа: 1 Gbit/s порт з безлімітним трафіком або великим щомісячним лімітом (від 1 TB). Стабільне та швидке мережеве з'єднання важливе для деплою та доступності застосунків.

Рекомендований VPS-план для активної розробки та кількох застосунків

Якщо ви плануєте активно використовувати CapRover для кількох середніх застосунків, включаючи бази даних, або для проєктів з помірним трафіком, розгляньте наступну конфігурацію:

  • CPU: 4 vCPU. Забезпечить достатню продуктивність при пікових навантаженнях та для кількох паралельних процесів.
  • RAM: 8 GB. Дозволить комфортно розміщувати кілька застосунків, бази даних та мати запас для системних потреб.
  • Диск: 160-250 GB NVMe SSD. Достатньо місця для великої кількості Docker-образів, об'ємних логів та масштабованих даних застосунків. NVMe значно покращить загальну чуйність системи.
  • Мережа: 1 Gbit/s порт з безлімітним трафіком.

Для оренди VPS із зазначеними характеристиками можна розглянути VPS з такими характеристиками у надійного провайдера.

Коли потрібен dedicated сервер, а не VPS

Виділений сервер (dedicated server) стає необхідним, коли:

  • Висока продуктивність: Ваші застосунки вимагають максимальної продуктивності CPU, RAM або I/O, яку VPS не може гарантувати через віртуалізацію та "шумних сусідів".
  • Велика кількість застосунків/користувачів: Ви плануєте хостити десятки застосунків, обслуговувати тисячі одночасних користувачів або працювати з дуже великими обсягами даних.
  • Специфічні апаратні вимоги: Вам потрібні спеціалізовані апаратні компоненти (наприклад, GPU для машинного навчання, RAID-контролери для підвищеної надійності дискової підсистеми).
  • Суворі вимоги до безпеки/комплаєнсу: Для деяких індустрій або типів даних необхідний повний фізичний контроль над обладнанням.

У більшості випадків, для початку роботи з CapRover і навіть для багатьох продакшн-проєктів, потужний VPS буде більш ніж достатнім та економічно вигідним. Якщо ви досягли меж VPS, ви завжди можете мігрувати на відповідний dedicated сервер.

Локація VPS: на що впливає

Вибір географічної локації VPS впливає на кілька ключових факторів:

  • Затримка (Latency): Чим ближче сервер до вашої цільової аудиторії, тим нижча затримка і швидше завантажуються сторінки для користувачів.
  • Законодавство та приватність: Закони про зберігання даних та приватність можуть сильно відрізнятися в різних країнах. Обирайте локацію, що відповідає вашим вимогам та вимогам вашого проєкту.
  • Пропускна здатність та піринг: Деякі локації мають краще мережеве з'єднання з певними регіонами світу. Уточніть у провайдера інформацію про піринг.
  • Вартість: Ціни на VPS можуть варіюватися залежно від локації через відмінності у витратах на електроенергію, інфраструктуру та податки.

Зазвичай рекомендується обирати локацію, максимально близьку до основної маси ваших користувачів.

Підготовка сервера

Підготовка сервера

Після отримання доступу до вашого нового VPS (припускаємо, що це Ubuntu Server 24.04 LTS), необхідно виконати низку базових налаштувань для підвищення безпеки та зручності роботи.

1. Підключення до сервера

Спочатку підключіться до сервера по SSH, використовуючи облікові дані, надані вашим VPS-провайдером (зазвичай це користувач root та пароль).


ssh root@ВАШ_IP_АДРЕС_VPS

Якщо це перше підключення, вас можуть попросити підтвердити відбиток RSA-ключа.

2. Оновлення системи

Завжди починайте з оновлення списку пакетів та встановлення всіх доступних оновлень. Це гарантує, що у вас будуть найсвіжіші версії системних утиліт та виправлень безпеки.


sudo apt update && sudo apt upgrade -y

Ця команда оновить кеш пакетів та встановить усі доступні оновлення без запиту підтвердження.

3. Створення нового користувача з правами sudo

Робота під користувачем root небезпечна. Створіть нового користувача для повсякденної роботи та надайте йому права sudo.


# Замініть 'deployuser' на бажане ім'я користувача
adduser deployuser

Дотримуйтесь інструкцій, щоб встановити пароль та заповнити інформацію про користувача (можна залишити порожнім). Потім додайте нового користувача до групи sudo:


usermod -aG sudo deployuser

Тепер ви можете переключитися на нового користувача та продовжити роботу:


su - deployuser

Або, ще краще, відкрийте нове SSH-з'єднання під новим користувачем, щоб переконатися, що все працює:


exit
ssh deployuser@ВАШ_IP_АДРЕС_VPS

4. Налаштування автентифікації за SSH-ключами (рекомендується)

Автентифікація за SSH-ключами набагато безпечніша, ніж за паролем. Якщо у вас ще немає SSH-ключа, згенеруйте його на вашій локальній машині:


# На вашій локальній машині
ssh-keygen -t ed25519 -C "ваш[email protected]"

Потім скопіюйте публічний ключ на сервер:


# На вашій локальній машині
ssh-copy-id deployuser@ВАШ_IP_АДРЕС_VPS

Якщо ssh-copy-id недоступний, можна зробити це вручну:


# На вашій локальній машині
cat ~/.ssh/id_ed25519.pub

# Скопіюйте вивід, потім на сервері:
ssh deployuser@ВАШ_IP_АДРЕС_VPS
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# Вставте скопійований ключ і збережіть файл (Ctrl+X, Y, Enter)
chmod 600 ~/.ssh/authorized_keys
exit

Після успішного налаштування ключів, вимкніть автентифікацію за паролем для root та для deployuser (якщо ви хочете повністю виключити парольний доступ). Відредагуйте файл /etc/ssh/sshd_config:


sudo nano /etc/ssh/sshd_config

Знайдіть та змініть наступні рядки (або додайте, якщо їх немає):


# Вимкнути вхід для root за паролем
PermitRootLogin prohibit-password
# Вимкнути вхід за паролем для всіх користувачів
PasswordAuthentication no

Перезапустіть SSH-сервіс:


sudo systemctl restart sshd

ВАЖЛИВО: Переконайтеся, що ви можете увійти за SSH-ключем, перш ніж вимикати парольну автентифікацію. Інакше ви ризикуєте втратити доступ до сервера.

5. Налаштування брандмауера (UFW)

Брандмауер UFW (Uncomplicated Firewall) простий у налаштуванні та значно підвищує безпеку. Дозвольте лише необхідні порти.


sudo apt install ufw -y # Встановлення UFW
sudo ufw allow OpenSSH # Дозволити SSH (порт 22)
sudo ufw allow http # Дозволити HTTP (порт 80)
sudo ufw allow https # Дозволити HTTPS (порт 443)
sudo ufw enable # Увімкнути брандмауер
sudo ufw status # Перевірити статус

CapRover використовуватиме порти 80 та 443 для обслуговування застосунків, тому їх необхідно відкрити. Порт 3000 тимчасово використовуватиметься для первинного налаштування CapRover UI, але CapRover сам переналаштує Nginx на 80/443 після встановлення домену.

6. Встановлення Fail2ban

Fail2ban захищає сервер від атак методом підбору пароля, блокуючи IP-адреси, з яких надходить занадто багато невдалих спроб входу.


sudo apt install fail2ban -y # Встановлення Fail2ban
sudo systemctl enable fail2ban # Увімкнути автозапуск
sudo systemctl start fail2ban # Запустити сервіс

Базова конфігурація Fail2ban вже працює "з коробки" для SSH. Для більш тонкого налаштування можна скопіювати та відредагувати файл /etc/fail2ban/jail.conf у /etc/fail2ban/jail.local.


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Ви можете змінити bantime (час блокування) або maxretry (кількість невдалих спроб) у секції [DEFAULT].

Після цих кроків ваш сервер буде готовий до встановлення CapRover.

Встановлення ПЗ — покроково

CapRover повністю базується на Docker, тому першим кроком буде встановлення Docker Engine. Також нам знадобиться Node.js та npm для встановлення CapRover CLI.

1. Встановлення Docker Engine

Для встановлення актуальної версії Docker Engine (імовірно Docker Engine 25.x або 26.x у 2026 році) використовуватимемо офіційний інсталяційний скрипт Docker. Це гарантує отримання останньої стабільної версії.


# Оновити список пакетів
sudo apt update

# Встановити необхідні пакети для використання HTTPS в apt
sudo apt install ca-certificates curl gnupg -y

# Додати офіційний GPG ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Додати репозиторій Docker до sources.list
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Оновити список пакетів з урахуванням нового репозиторію Docker
sudo apt update

# Встановити Docker Engine, containerd та Docker Compose
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Після встановлення додайте вашого користувача до групи docker, щоб запускати команди Docker без sudo:


# Замініть 'deployuser' на ваше ім'я користувача
sudo usermod -aG docker deployuser

# Щоб зміни набули чинності, або вийдіть і увійдіть заново, або перезапустіть сесію
# Наприклад, можна просто вийти з SSH і заново підключитися
exit
ssh deployuser@ВАШ_IP_АДРЕС_VPS

Перевірте, що Docker встановлено коректно:


docker run hello-world

Ви повинні побачити повідомлення "Hello from Docker!".

2. Встановлення Node.js та npm

CapRover CLI (captain) написаний на Node.js, тому нам знадобиться Node.js та менеджер пакетів npm. Використовуватимемо актуальну LTS-версію Node.js (імовірно Node.js 20.x або 22.x у 2026 році).


# Встановити Node.js LTS (наприклад, 20.x, або новішу LTS, актуальну для 2026)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

Перевірте встановлення Node.js та npm:


node -v # Повинен показати v20.x.x або v22.x.x
npm -v # Повинен показати версію npm

3. Встановлення CapRover CLI (captain)

Тепер, коли Node.js та npm встановлені, можна встановити глобальний CLI-інструмент CapRover.


sudo npm install -g caprover

Перевірте встановлення CLI:


captain --version

Ви повинні побачити номер версії CapRover CLI.

4. Розгортання CapRover Server

Основний компонент CapRover — це Docker-контейнер, який керує всією PaaS-інфраструктурою. Запустимо його.


# Запуск контейнера CapRover
# -p 80:80, -p 443:443: Відкриваємо порти HTTP/HTTPS для застосунків
# -p 3000:80: Тимчасово відкриваємо порт 3000 для доступу до CapRover UI (всередині контейнера на 80)
# -v /var/run/docker.sock:/var/run/docker.sock: Дозволяємо CapRover керувати Docker на хості
# -v /var/caprover:/var/caprover: Зберігаємо дані CapRover на хості для персистентності
# caprover/caprover: Використовуємо офіційний Docker-образ CapRover
sudo docker run -p 80:80 -p 443:443 -p 3000:80 -v /var/run/docker.sock:/var/run/docker.sock -v /var/caprover:/var/caprover caprover/caprover

Ця команда запустить CapRover у фоновому режимі. Якщо ви хочете, щоб контейнер перезапускався автоматично при перезавантаженні сервера, додайте прапорець --restart always:


# Спочатку зупиніть попередній контейнер, якщо він був запущений без --restart always
# sudo docker ps -a
# sudo docker stop 
# sudo docker rm 

# Потім запустіть з --restart always
sudo docker run -p 80:80 -p 443:443 -p 3000:80 -v /var/run/docker.sock:/var/run/docker.sock -v /var/caprover:/var/caprover --restart always --name caprover-main caprover/caprover

Переконайтеся, що контейнер CapRover запущено:


docker ps

Ви повинні побачити контейнер caprover/caprover у списку запущених.

5. Налаштування DNS

Для роботи CapRover вам знадобиться доменне ім'я (наприклад, mydomain.com) та піддомен для самого CapRover (наприклад, captain.mydomain.com), а також wildcard-піддомен для ваших застосунків (.mydomain.com). Перейдіть до панелі керування вашого доменного реєстратора або DNS-провайдера та створіть наступні записи:

  • A-запис:
    • Хост: @ (або mydomain.com)
    • Значення: ВАШ_IP_АДРЕС_VPS
  • A-запис:
    • Хост: captain
    • Значення: ВАШ_IP_АДРЕС_VPS
  • A-запис:
    • Хост:
    • Значення: ВАШ_IP_АДРЕС_VPS

Поширення DNS-записів може зайняти від кількох хвилин до кількох годин. Ви можете перевірити статус поширення за допомогою онлайн-інструментів, таких як dnschecker.org.

На цьому етапі основні компоненти встановлено. Тепер перейдемо до конфігурації CapRover через його веб-інтерфейс.

Конфігурація

Після встановлення CapRover Server та налаштування DNS, можна приступати до його початкової конфігурації через веб-інтерфейс, а потім розгортати застосунки.

1. Початкове налаштування CapRover UI

Відкрийте веб-браузер і перейдіть за адресою http://ВАШ_IP_АДРЕС_VPS:3000. Ви побачите сторінку привітання CapRover.

  1. Встановіть пароль адміністратора: При першому вході вам буде запропоновано встановити пароль для облікового запису адміністратора CapRover. Виберіть надійний пароль.
  2. Налаштуйте домен CapRover: Після входу в панель керування, перейдіть до розділу "Cluster" (або "Налаштування кластера"). У полі "Root Domain" введіть ваш основний домен (наприклад, mydomain.com). CapRover автоматично налаштує captain.mydomain.com для своєї панелі керування.
  3. Увімкніть SSL: CapRover автоматично запитає та встановить безкоштовні SSL-сертифікати від Let's Encrypt для вашого кореневого домену та всіх розгорнутих застосунків. Переконайтеся, що DNS-записи повністю розповсюдилися, інакше отримання сертифіката може не вдатися.

Після успішного налаштування домену та SSL, доступ до панелі CapRover буде здійснюватися за адресою https://captain.mydomain.com, а порт 3000 більше не буде використовуватися напряму (він буде перенаправлений на 80/443).

2. Розгортання першого застосунку (Hello World Node.js)

Розгорнемо простий Node.js застосунок, щоб продемонструвати процес.

Приклад застосунку (app.js):

const http = require('http');

const hostname = '0.0.0.0'; // Слухаємо на всіх інтерфейсах
const port = process.env.PORT || 3000; // Використовуємо порт зі змінної оточення або 3000

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello from CapRover on ' + process.env.CAPROVER_APP_NAME + '!\n');
});

server.listen(port, hostname, () => {
  console.log(Server running at http://${hostname}:${port}/);
});
Приклад package.json:

{
  "name": "my-first-caprover-app",
  "version": "1.0.0",
  "description": "A simple Node.js app for CapRover",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "author": "Your Name",
  "license": "MIT"
}
Приклад .captain-definition (для CapRover):

Створіть файл з назвою .captain-definition у корені вашого проєкту. Цей файл повідомляє CapRover, як збирати та розгортати ваш застосунок.


{
  "schemaVersion": 1,
  "templateId": "node-js-express",
  "variables": []
}

Для простих Node.js застосунків CapRover може автоматично визначити тип проєкту. Якщо у вас більш складний проєкт або інша мова, ви можете вказати власний Dockerfile або використовувати інші templateId.

Розгортання через CLI:

На вашій локальній машині, у кореневій директорії застосунку:


# Авторизація в CapRover (потребує введення URL CapRover та пароля)
captain login

# Створення нового застосунку в CapRover
# Замініть 'myapp' на бажане ім'я застосунку
captain app create myapp

# Розгортання застосунку з поточної директорії
# CapRover автоматично визначить налаштування на основі .captain-definition та package.json
captain deploy --appName myapp

Після успішного розгортання, CapRover надасть вам URL для вашого застосунку (наприклад, https://myapp.mydomain.com). Автоматично буде випущено SSL-сертифікат.

Розгортання через UI:
  1. Увійдіть до панелі CapRover за адресою https://captain.mydomain.com.
  2. Перейдіть до розділу "Apps" і натисніть "Create New App". Введіть ім'я застосунку (наприклад, myapp).
  3. Перейдіть до налаштувань створеного застосунку. У розділі "Deployment" виберіть "Tar File" або "Upload Git Repository". Для локальної папки можна стиснути її в .tar або .zip та завантажити. Або підключіться до Git-репозиторію.
  4. Після завантаження CapRover почне збірку та розгортання. Ви можете відстежувати процес у логах застосунку.

3. Керування змінними оточення

Для налаштування застосунків та зберігання секретів використовуйте змінні оточення. Це безпечніше, ніж зберігати конфіденційні дані в коді або файлах конфігурації.

У панелі CapRover, у налаштуваннях вашого застосунку, перейдіть до розділу "Environment Variables". Тут ви можете додавати пари ключ-значення. Наприклад, для підключення до бази даних:

  • DB_HOST=my-database-service
  • DB_USER=admin
  • DB_PASSWORD=your_secret_password

Після збереження змін, CapRover перезапустить ваш застосунок, і нові змінні будуть доступні. У Node.js вони доступні через process.env.DB_HOST.

4. Налаштування постійного сховища (Persistent Storage)

Якщо вашому застосунку необхідно зберігати дані (наприклад, завантажені файли, користувацькі дані), які не повинні зникати при перезапуску або оновленні контейнера, використовуйте постійні томи CapRover.

У налаштуваннях застосунку перейдіть до розділу "Persistent Apps". Тут ви можете вказати шлях всередині контейнера, який буде монтуватися до постійного сховища на сервері.


# Приклад: монтування /app/data з контейнера до постійного сховища
Container Path: /app/data

CapRover створить і керуватиме цим томом. Дані, записані в /app/data всередині контейнера, будуть зберігатися навіть після оновлення застосунку.

5. Інтеграція з базами даних (One-Click Apps)

CapRover надає "One-Click Apps" для швидкого розгортання популярних сервісів, таких як PostgreSQL, MongoDB, Redis, MySQL. Це значно спрощує налаштування бази даних для вашого застосунку.

  1. У панелі CapRover перейдіть до розділу "One-Click Apps".
  2. Виберіть потрібну базу даних (наприклад, "PostgreSQL").
  3. Введіть ім'я сервісу (наприклад, my-pg-app) і натисніть "Deploy".

CapRover розгорне базу даних як окремий застосунок і надасть змінні оточення для підключення (наприклад, PG_HOST, PG_USER, PG_PASSWORD). Ви можете скопіювати ці змінні та додати їх до налаштувань вашого основного застосунку.

6. Перевірка працездатності

Після деплою застосунку та налаштування домену, переконайтеся, що все працює коректно:

  • Відкрийте URL вашого застосунку (наприклад, https://myapp.mydomain.com) у браузері.
  • Використайте curl на сервері для перевірки доступності:
    
    curl https://myapp.mydomain.com
    

    Ви повинні отримати відповідь від вашого застосунку.

  • Перевірте логи застосунку через панель CapRover або CLI:
    
    captain logs myapp
    

    Це допоможе переконатися, що застосунок запускається без помилок та обробляє запити.

  • Перевірте статус Docker-контейнерів:
    
    docker ps
    

    Переконайтеся, що контейнер вашого застосунку та контейнери CapRover запущені.

Тепер у вас є повністю функціонуючий CapRover, здатний хостити ваші застосунки.

Резервні копії та обслуговування

Надійне резервне копіювання та регулярне обслуговування — ключові аспекти для будь-якого продакшн-сервера. CapRover спрощує деплой, але відповідальність за резервні копії даних лежить на вас.

Що резервувати

  • Конфігурація CapRover: Усі налаштування CapRover, SSL-сертифікати, інформація про застосунки та їхні змінні оточення зберігаються в директорії /var/caprover. Це критично важлива директорія для відновлення всієї вашої PaaS.
  • Дані застосунків: Будь-які дані, які ваші застосунки зберігають у постійні томи CapRover (налаштовані в секції "Persistent Apps"). Ці дані зазвичай знаходяться в піддиректоріях /var/caprover/apps або в інших місцях, куди монтуються томи.
  • Бази даних: Якщо ви використовуєте One-Click Apps для баз даних (PostgreSQL, MongoDB тощо), їхні дані також необхідно резервувати. Зазвичай це робиться за допомогою спеціальних утиліт для кожної БД (pg_dump для PostgreSQL, mongodump для MongoDB).
  • Конфіги сервера: Якщо ви внесли будь-які критичні зміни в системні файли (наприклад, /etc/ssh/sshd_config, конфігурація Nginx, якщо ви його використовуєте напряму), їх також варто резервувати.

Стратегія резервного копіювання та інструменти

Для автоматизації резервного копіювання рекомендується використовувати cron для планування завдань та спеціалізовані інструменти для ефективного зберігання та керування версіями.

Популярні інструменти для резервного копіювання:

  • Restic: Чудовий інструмент для дедуплікованих, зашифрованих резервних копій у хмарні сховища (S3, Backblaze B2, SFTP).
  • BorgBackup: Аналогічно Restic, підтримує дедуплікацію та шифрування, добре працює з локальними та віддаленими SSH-сховищами.
  • rsync: Простий та ефективний для синхронізації файлів, але не надає дедуплікації або версіонування "з коробки".

Розглянемо приклад скрипта для restic, що резервує директорію CapRover та дані PostgreSQL у S3-сумісне сховище. Припускаємо, що restic вже встановлено (sudo apt install restic -y).


#!/bin/bash

# --- Налаштування резервного копіювання ---
# URL репозиторію Restic (наприклад, S3-сумісне сховище)
# Замініть на ваші дані
REPO="s3:s3.eu-central-1.amazonaws.com/your-caprover-backup-bucket"
# Шлях до файлу з паролем Restic (створіть його з правами 600)
PASSWORD_FILE="/etc/restic/backup_password"
# Змінні оточення для S3 (якщо використовується)
export AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY"
# Ім'я застосунку PostgreSQL (якщо використовується One-Click App)
POSTGRES_APP_NAME="my-pg-app"
# Шлях для тимчасового дампу БД
DUMP_FILE="/tmp/caprover_pg_dump.sql"

# --- Ініціалізація репозиторію (виконати один раз вручну) ---
# restic init --repo $REPO --password-file $PASSWORD_FILE

# --- Резервне копіювання конфігурації CapRover ---
echo "--- Starting CapRover config backup ($(date)) ---"
restic backup /var/caprover \
    --repo $REPO \
    --password-file $PASSWORD_FILE \
    --tag caprover_config \
    --exclude-file /etc/restic/exclude-caprover.txt \
    --verbose
echo "--- CapRover config backup finished ---"

# --- Резервне копіювання бази даних PostgreSQL (якщо застосунок існує) ---
# Перевіряємо, чи запущений контейнер бази даних
if docker ps --format '{{.Names}}' | grep -q "${POSTGRES_APP_NAME}_db"; then
    echo "--- Starting PostgreSQL database backup ($(date)) ---"
    # Створюємо дамп бази даних
    docker exec "${POSTGRES_APP_NAME}_db" pg_dumpall -U postgres > "$DUMP_FILE"

    # Резервуємо дамп
    restic backup "$DUMP_FILE" \
        --repo $REPO \
        --password-file $PASSWORD_FILE \
        --tag ${POSTGRES_APP_NAME}_db \
        --verbose

    # Видаляємо тимчасовий файл дампу
    rm "$DUMP_FILE"
    echo "--- PostgreSQL database backup finished ---"
else
    echo "PostgreSQL app ${POSTGRES_APP_NAME} not found or not running. Skipping DB backup."
fi

# --- Очищення старих знімків (політика зберігання) ---
echo "--- Starting cleanup of old snapshots ($(date)) ---"
restic forget \
    --repo $REPO \
    --password-file $PASSWORD_FILE \
    --prune \
    --keep-hourly 24 \
    --keep-daily 7 \
    --keep-weekly 4 \
    --keep-monthly 6 \
    --keep-yearly 1
echo "--- Cleanup finished ---"

echo "--- Backup process completed ($(date)) ---"

Створіть файл /etc/restic/backup_password з вашим паролем для Restic та встановіть права sudo chmod 600 /etc/restic/backup_password.

Створіть файл /etc/restic/exclude-caprover.txt для виключення непотрібних файлів з резервної копії /var/caprover, наприклад, кешів Docker:


/var/caprover/docker-cache

Збережіть цей скрипт як /usr/local/bin/caprover_backup.sh та зробіть його виконуваним:


sudo nano /usr/local/bin/caprover_backup.sh # Вставте скрипт
sudo chmod +x /usr/local/bin/caprover_backup.sh

Додайте завдання в cron для щоденного виконання:


sudo crontab -e

Додайте рядок для щоденного резервного копіювання, наприклад, о 03:00 ночі:


0 3 * * * /usr/local/bin/caprover_backup.sh >> /var/log/caprover_backup.log 2>&1

Куди зберігати резервні копії

  • Хмарні сховища: S3-сумісні сервіси (AWS S3, DigitalOcean Spaces, Backblaze B2, MinIO) — це найбільш надійний та масштабований варіант. Зберігайте резервні копії географічно окремо від вашого VPS.
  • Окремий VPS: Можна використовувати другий, менш потужний VPS виключно для зберігання резервних копій.
  • Локальний диск: Якщо немає інших варіантів, можна зберігати резервні копії на окремий розділ диска VPS, але це не захистить від збою всього сервера.

Оновлення: rolling vs maintenance window

Регулярні оновлення важливі для безпеки та отримання нових функцій. Для CapRover та Docker застосовуються різні підходи:

  • Оновлення CapRover: CapRover можна оновити до останньої версії через CLI командою captain update або через веб-інтерфейс у розділі "Cluster" -> "Update CapRover". Це зазвичай не вимагає простою і є "rolling update".
  • Оновлення Docker: Оновлення Docker Engine та Docker Compose виконуються через менеджер пакетів (sudo apt update && sudo apt upgrade -y). Ці оновлення можуть вимагати перезапуску Docker-сервісу, що призведе до короткочасного простою всіх ваших застосунків. Плануйте це в "maintenance window" (вікно обслуговування), коли трафік мінімальний.
  • Оновлення ОС: Оновлення операційної системи (Ubuntu) також виконуються через apt. Великі оновлення ядра або системних компонентів майже завжди вимагають перезавантаження сервера, що також викликає простій. Плануйте їх у maintenance window.

Завжди тестуйте оновлення на стейджинг-середовищі, якщо це можливо, перш ніж застосовувати їх на продакшн-сервері.

Вирішення проблем + FAQ

Навіть при найретельнішому налаштуванні можуть виникнути проблеми. Цей розділ допоможе вам діагностувати та вирішити найпоширеніші несправності, а також відповість на часті питання.

CapRover UI недоступний за адресою http://ВАШ_IP_АДРЕСА_VPS:3000

Що перевірити:

  1. Стан контейнера CapRover: Переконайтеся, що контейнер CapRover запущено.
  2. 
    sudo docker ps -a | grep caprover/caprover
    

    Якщо контейнер не запущений або знаходиться в стані "Exited", перевірте логи:

    
    sudo docker logs caprover-main # Або ID контейнера
    
  3. Брандмауер (UFW): Переконайтеся, що порт 3000 відкрито.
  4. 
    sudo ufw status verbose
    

    Якщо порт 3000 не дозволено, додайте правило:

    
    sudo ufw allow 3000/tcp
    
  5. Мережеве підключення: Перевірте, що ваш VPS доступний з інтернету (наприклад, спробуйте пінганути його).

Розгортання застосунку завершується помилкою

Що перевірити:

  1. Логи деплою: CapRover надає докладні логи процесу збірки та розгортання. Доступні через UI в розділі застосунку ("Logs" -> "Deployment Logs") або через CLI:
  2. 
    captain deploy --appName myapp --log
    
  3. Логи застосунку: Після розгортання, якщо застосунок не запускається, перевірте його рантайм-логи.
  4. 
    captain logs myapp
    
  5. Файл .captain-definition: Переконайтеся, що файл .captain-definition коректний і відповідає вимогам вашого застосунку (наприклад, вказує правильний templateId або dockerfileLines).
  6. Змінні оточення: Перевірте, чи всі необхідні змінні оточення встановлені та доступні застосунку.
  7. Ресурси сервера: Переконайтеся, що на сервері достатньо RAM та CPU. Нестача пам'яті часто призводить до збоїв при збірці Docker-образів.

SSL-сертифікат Let's Encrypt не видається або закінчується

Що перевірити:

  1. DNS-записи: Найчастіша причина. Переконайтеся, що A-записи для вашого основного домену, captain.yourdomain.com та *.yourdomain.com вказують на IP вашого VPS і повністю розповсюдилися. Використовуйте dnschecker.org.
  2. Брандмауер: Порти 80 та 443 повинні бути відкриті для вхідних з'єднань, оскільки Let's Encrypt використовує їх для перевірки володіння доменом (ACME-challenge).
  3. 
    sudo ufw status verbose
    
  4. Ліміти Let's Encrypt: Якщо ви часто намагалися отримати сертифікати, можливо, ви натрапили на ліміти Let's Encrypt. Зачекайте деякий час.
  5. Логи CapRover: Перевірте системні логи CapRover на наявність помилок, пов'язаних з ACME або Nginx.
  6. 
    sudo docker logs caprover-main
    

Застосунок працює повільно або падає

Що перевірити:

  1. Ресурси VPS: Перевірте завантаження CPU, використання RAM та дисковий I/O на вашому VPS.
  2. 
    htop # Для інтерактивного моніторингу
    df -h # Для використання диска
    
  3. Логи застосунку: Шукайте помилки, витоки пам'яті або тривалі операції в логах вашого застосунку.
  4. Масштабування: Якщо застосунок сильно навантажений, спробуйте збільшити кількість екземплярів застосунку в налаштуваннях CapRover.
  5. Оптимізація коду: Можливо, проблема в самому коді застосунку, а не в інфраструктурі.

Як підключити власну базу даних (не One-Click App)?

Якщо ваша база даних розгорнута поза CapRover (наприклад, на окремому сервері або в керованому хмарному сервісі), ви можете підключитися до неї, використовуючи змінні оточення.

У налаштуваннях вашого застосунку CapRover, у розділі "Environment Variables", додайте змінні, що містять дані для підключення до вашої зовнішньої БД (хост, порт, ім'я користувача, пароль, ім'я бази даних). Наприклад:


DB_HOST=my-external-db.example.com
DB_PORT=5432
DB_USER=myuser
DB_PASSWORD=mypassword
DB_NAME=mydb

Потім використовуйте ці змінні в коді вашого застосунку для встановлення з'єднання.

Який VPS-конфіг мінімально підійде?

Для базової установки CapRover та кількох невимогливих застосунків (наприклад, статичні сайти, прості API) мінімально підійде VPS з 2 vCPU, 4 GB RAM та 80 GB SSD-диском. Цього буде достатньо для ознайомлення з платформою та запуску невеликих проєктів. Однак для більш серйозних завдань або кількох активних застосунків рекомендується збільшити ресурси.

Що вибрати — VPS чи dedicated для цього завдання?

Для більшості користувачів, включаючи розробників, соло-фаундерів та невеликі команди, VPS буде оптимальним вибором. Він пропонує відмінний баланс між вартістю, гнучкістю та продуктивністю. Виділений сервер варто розглядати лише у випадках надзвичайно високого навантаження, специфічних вимог до апаратного забезпечення, суворих регуляторних норм або коли ви досягли меж масштабування на найпотужнішому VPS.

Як масштабувати застосунок у CapRover?

Масштабування застосунків у CapRover дуже просте. У панелі керування CapRover, у налаштуваннях вашого застосунку, знайдіть розділ "Instances". Тут ви можете вказати бажану кількість екземплярів (контейнерів) вашого застосунку. CapRover автоматично розгорне та керуватиме цими екземплярами, розподіляючи між ними навантаження. Це дозволяє легко збільшувати продуктивність вашого застосунку в міру зростання трафіку.

Висновки та наступні кроки

Ви успішно розгорнули CapRover на своєму VPS, створивши потужну та гнучку self-hosted PaaS. Тепер у вас є повний контроль над вашою інфраструктурою, можливість швидко деплоїти застосунки, бази даних та сервіси, а також користуватися перевагами автоматичного SSL та CI/CD. Це значно спрощує керування життєвим циклом ваших проєктів, знижує операційні витрати та надає цінний досвід у галузі DevOps.

Ось кілька кроків, куди можна рухатися далі:

  • Дослідіть додаткові можливості CapRover: Ознайомтеся з такими функціями, як вебхуки для автоматичного деплою при пуші в Git, налаштування користувацьких доменів для кожного застосунку, моніторинг ресурсів та інші One-Click Apps.
  • Розгорніть складніші проєкти: Спробуйте розгорнути повноцінний full-stack застосунок, що включає фронтенд, бекенд та базу даних, використовуючи різні мови програмування та фреймворки.
  • Оптимізація та безпека: Продумайте додаткові заходи безпеки для ваших застосунків та сервера. Оптимізуйте конфігурацію CapRover та ваших застосунків для підвищення продуктивності та економії ресурсів.
  • Масштабування кластера: Якщо одного VPS стає недостатньо, дослідіть можливості CapRover щодо додавання нових вузлів (серверів) до вашого кластера для горизонтального масштабування.

CapRover — це чудовий інструмент, який дозволяє вам бути незалежним та ефективним у керуванні вашими веб-проєктами. Продовжуйте експериментувати, навчатися та розвивати свої навички!

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Розгортання CapRover на VPS: self-hosted PaaS для легкого деплою
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.