Уявіть двох ботів: один працює на Python і зберігає локальну базу SQLite, інший працює на JavaScript та обробляє команди. Обидва працюють на ноутбуці. Під час перенесення на сервер потрібно вирішити питання залежностей, зберігання та дій після збою процесу. Найкращий хостинг Discord-ботів залежить від того, як ці складові працюватимуть разом.
Порівняйте тарифні плани перед вибором
Два плани з позначкою «1 vCPU» можуть мати різні правила виділення ресурсів. Перевірте обчислювальне сімейство, потім період оплати й охоплення резервного копіювання, пов’язані з ціною. Спільні vCPU використовують ресурси CPU разом з іншими клієнтами; виділене розподілення резервує ресурси CPU для вашого VPS. Боти з невеликим навантаженням можуть задовільно працювати на спільних ресурсах.
| Поставщик | Розглянутий розподіл CPU | Що перевірити у вартості |
|---|---|---|
| Cloudzy | Наші Regular CPU та High Frequency CPU мають виділені vCPU | Порівняйте ціни з урахуванням ресурсів для ботів і бажаного періоду оплати; погодинні плани дозволяють легко змінювати розмір |
| DigitalOcean | Basic використовує спільні CPU; сімейства з виділеними ресурсами пропонуються окремо | Bundled Plans включають IPv4; резервні копії оплачуються додатково |
| Hetzner | Бюджетний CX23 використовує спільні ресурси | IPv4 та резервні копії оплачуються додатково; перевірте наявність, розташування та врахування податків |
| Vultr | Розглянуті тут категорії Cloud Compute, High Frequency та High Performance використовують спільні CPU | Обладнання залежить від категорії; автоматичні резервні копії оплачуються додатково |
| Akamai/Linode | На Shared CPU можлива конкуренція за ресурси | Доступно в основних регіонах; ціни залежать від регіону |
Порівнюйте повні конфігурації за однаковий період. Річне зобов’язання та гнучка щомісячна оплата по-різному впливають на перенесення чи зміну розміру розгортання. В очікувану суму включіть потрібну адресу, службу резервного копіювання й окреме сховище.
Оберіть провайдера під своє навантаження
Бот, що очікує подій та іноді обробляє команду, інакше навантажує CPU, ніж бот із постійною фоновою обробкою. Оберіть обчислювальне сімейство відповідно до цієї поведінки, а потім перевірте потреби в пам’яті та диску всього розгортання. Сама назва провайдера цих питань не вирішує.
Відмінність між керованим і некерованим VPS також впливає на роботу після покупки: визначте відповідальних за оновлення ОС, налаштування брандмауера та обслуговування застосунку. Оплата сервера не передає хостеру всі експлуатаційні завдання.
Cloudzy для контролю над кількома ботами
Обирайте наш Linux VPS, якщо кільком ботам потрібні незалежні середовища виконання, нагляд за процесами та локальне сховище під вашим контролем. Ми надаємо root-доступ і середовище, яким ви керуєте самостійно, тож ви можете організувати процеси Python та Node.js під застосунок. Наше NVMe-сховище може містити локальну базу й файли ботів.
Виділення ресурсів у наших сімействах CPU підходить для розгортань, де передбачуваний доступ до ресурсів CPU є вимогою, особливо коли боти постійно виконують фонову роботу.
У нас невисока початкова ціна, а наші тарифи дозволяють разом обирати обсяг ресурсів і період оплати. Підберіть план під сукупне навантаження та самостійно обслуговуйте його ПЗ.
DigitalOcean для задокументованої конфігурації ВМ
Обирайте DigitalOcean, якщо визначений комплект Linux-ВМ і задокументований вибір обчислювальних сімейств спрощують планування ресурсів. У тарифах Droplet вказана конфігурація Basic із 1 GiB RAM, 1 vCPU, 25 GiB SSD-сховища та 1 000 GiB трафіку.
Basic — розумна відправна точка для коротких сплесків роботи між періодами простою. Якщо бот переважно обробляє завдання, порівняйте сімейства з виділеними ресурсами, перш ніж збільшувати розмір Basic. Додавання пам’яті та зміна розподілу CPU вирішують різні проблеми. Перед оновленням визначте нестачу пам’яті чи затримки планування CPU.
У тарифах Droplet за листопад 2026 року місячна межа для цієї конфігурації Basic становить 6 $. Із щотижневим резервним копіюванням за відсотковою моделлю приклад розрахунку такий: 6 $ × 1,20 = 7,20 $ на місяць до податків та інших зборів. Це вибраний сервер і варіант резервного копіювання, а не всі сервіси, які може використовувати застосунок; перед покупкою перевірте поточні тарифи Droplet.
Hetzner для кількох легких процесів у відповідному регіоні
Розгляньте європейський бюджетний CX23 від Hetzner, якщо кільком легким процесам підходять заявлені 2 vCPU Intel/AMD, 4 GB RAM та 40 GB NVMe-сховища. На час перевірки недорогий CX23 від Hetzner позначено як недоступний, тож перегляньте сторінку бюджетного продукту та підтвердьте наявність у вибраному регіоні перед плануванням перенесення.
Цю конфігурацію варто розглянути, якщо окремим середовищам виконання потрібна пам’ять, але вони переважно очікують. Перед вибором для безперервної обробки оцініть постійне навантаження на CPU.
У документації серверів Hetzner ціна Primary IPv4 становить 0,50 € на місяць без ПДВ. FAQ з оплати визначає ціну резервних копій як 20% вартості сервера, а документація резервного копіювання виключає підключені Volumes. Якщо перенесете базу на Volume, закладіть окреме резервне копіювання. Порівнюйте вибрані регіон і конфігурацію з потрібними IP та резервними копіями, однаково враховуючи податки в усіх пропозиціях.
Vultr для вибору сімейства обладнання
Обирайте Vultr, якщо маєте підстави вибрати певне сімейство обладнання для ботів. Документація зі створення Cloud Compute розрізняє звичайний Cloud Compute зі стандартним SSD-сховищем, High Frequency із вищою частотою CPU та NVMe, а також High Performance із новішими процесорами Intel Xeon або AMD EPYC та NVMe.
Ці відмінності допомагають звузити вибір, якщо вимірювання застосунку вказують на роботу CPU чи активність сховища. Позначка вищої частоти не доводить швидшу відповідь Discord і не змінює категорію розподілу ресурсів у таблиці. Зіставте сімейство з операцією, яка забирає час у бота, перш ніж платити за обладнання, що може не зменшити затримку.
Root- або sudo-доступ Vultr і вибір ОС/ISO також підходять для розгортання з особливими вимогами до середовища виконання. Корисна перевага — контроль над установленим середовищем. Усе одно потрібно перевірити сумісність залежностей і процедури розгортання з вибраною ОС; додатковий пункт у меню створення сервера не виконує цю перевірку.
Огляд Automatic Backups Vultr вказує доплату 20% і виключає підключене Block Storage. Якщо зберігаєте там дані ботів, організуйте окреме резервне копіювання. Перед порівнянням рахунків перегляньте повну вибрану конфігурацію; ні категорія обладнання, ні типовий вибір IPv4 не показують остаточної суми до сплати.
Akamai/Linode для невеликого наявного Linux-розгортання
Обирайте Akamai/Linode, якщо невеликому Linux-розгортанню підходять ресурси Shared CPU у відповідному основному регіоні. Документація Shared CPU вказує початкову конфігурацію з 1 vCPU, 1 GB RAM та 25 GB SSD-сховища. Адміністрування через root зберігає ваш контроль над ОС і налаштуванням застосунку.
Задокументоване призначення охоплює низькі та середні потреби в CPU й застосунки, що допускають конкуренцію за ресурси. Тому це розумний кандидат для ботів із періодичними сплесками навантаження. Для постійних обчислень оцініть інше обчислювальне сімейство.
Akamai розрізняє основні та розподілені обчислювальні регіони; у розподілених регіонах екземпляри Shared CPU недоступні. Зіставте пропозицію з місцем розгортання та окремо підтвердьте варіант резервного копіювання.
Запускайте кількох ботів без повного об’єднання ресурсів
Бот на Python і бот на Node.js можуть працювати на одному VPS з окремими залежностями, токенами та шляхами даних. Надайте кожному незалежне середовище виконання й окрему ціль перезапуску. Root-доступ дозволяє налаштувати хост; самі процеси застосунків не зобов’язані працювати від root. Продумано розділіть їх перед додаванням нових ботів.
В умовній структурі розмістіть код Python-бота A в /srv/bot-a з власним середовищем Python. Код Node.js-бота B та встановлені залежності розмістіть у /srv/bot-b. Кожному надайте окремий файл конфігурації чи посилання на секрет лише з його токеном. Виберіть різні шляхи даних, наприклад /var/lib/bot-a і /var/lib/bot-b, і надайте кожному службовому обліковому запису доступ до потрібних шляхів. Це запропоновані назви, а не інструкція зі встановлення.
Контейнери — ще один спосіб розділити залежності. Документація Docker щодо обмежень ресурсів вказує, що типово контейнери не мають лімітів ресурсів. Після спостереження за навантаженням задайте продумані обмеження пам’яті й CPU, щоб один бот не споживав неконтрольовану частку ресурсів хоста.
Вимірюйте ботів разом з ОС, локальною базою та журналюванням. Врахуйте піки встановлення, збирання й перезапуску: вимір у простої пропускає момент, коли зайняті обидва застосунки. Базові інструменти для VPS дають відправну точку для обслуговування та спостереження за хостом. Обирайте ресурси за цими вимірами, а не лише за обіцянками кількості ботів на GB чи числом серверів Discord. Обидва процеси все одно мають спільну межу відмови хоста.
Зберігайте дані ботів під час повторного розгортання
Файл SQLite у доступному для запису шарі контейнера зникає після видалення контейнера. Документація Docker про життєвий цикл тому пояснює, що збережений том існує незалежно від контейнера, який його використовує. Розміщуйте постійні дані ботів у навмисно збереженому томі чи шляху хоста та записуйте його розташування перед повторним розгортанням.
Відокремлюйте замінний код від бази, завантажених файлів та іншого стану, який має зберігати бот. Запишіть, який процес пише в кожне розташування та які операції розгортання його видаляють. Збережений том переживає заміну контейнера; явне видалення цього тому — інша операція. Також обмежте зберігання журналів, щоб накопичений вивід не зайняв місце для даних застосунку.
Постійне зберігання зберігає робочу копію під час розгортання. Резервне копіювання потребує окремої відновлюваної копії. Для активної бази SQLite оберіть метод, що враховує її особливості, наприклад задокументований SQLite Online Backup API. Він копіює активну базу в інший файл бази даних. Сам знімок диска провайдера не доводить, що стан застосунку можна коректно відновити.
Тримайте резервну копію поза межею відмови VPS та запишіть процедуру відновлення. Спочатку відновіть її в ізольоване місце, а потім перевірте очікувані записи й файли. Перевірте відомий збережений стан бота, наприклад налаштований канал чи параметр. Не допускайте підключення відновленої тестової копії з робочими обліковими даними. Завершене завдання резервного копіювання є корисним доказом лише разом з успішною перевіркою відновлення.
Перевірте відновлення перед перенесенням усіх ботів
Процес бота може працювати, але не відповідати на команду Discord. Виберіть один супервізор для кожного процесу, налаштуйте поведінку після збою та під час завантаження, потім окремо перевірте відповідь застосунку. Системні служби, процеси Node.js під керуванням PM2 та контейнери Docker мають різні налаштування відновлення; сама політика перезапуску не доводить доступність бота.
Для системних служб посібник systemd зі служб описує Restart=on-failure для відповідних збоїв, зокрема ненульового коду завершення. Окремо налаштуйте запуск під час завантаження. Для Node.js документація PM2 з автозапуску вимагає інтеграції із запуском системи та збереженого списку застосунків для відновлення після перезавантаження. Оновлюйте інтеграцію після зміни версії Node.js.
Документація Docker про політики перезапуску розрізняє unless-stopped, що зберігає навмисні зупинки після перезапусків демона, та on-failure, яка не перезапускає контейнери при перезапуску демона. Нехай Docker наглядає за своїми контейнерами; не дозволяйте менеджеру процесів хоста конкурувати за перезапуск того самого контейнера.
Документація Discord про з’єднання Gateway вимагає heartbeat-повідомлень та обробки розривів постійного WebSocket-з’єднання. Застосунок або його бібліотека мають правильно підключатися повторно. Показник доступності інфраструктури не підтверджує справність цього з’єднання чи обробника команд бота.
Перед перенесенням усіх ботів виконайте цю запропоновану приймальну перевірку на некритичному розгортанні:
- Викличте контрольований збій процесу. Переконайтеся, що обраний супервізор перезапускає його, а збережені журнали пояснюють збій. З’ясуйте причини повторних падінь перед увімкненням автоматичного циклу перезапуску без нагляду.
- Перезавантажте хост. Переконайтеся, що потрібні процеси повертаються з очікуваними конфігурацією та шляхами даних.
- Перевірте з’єднання Discord та виконайте типову команду кожного бота. Запишіть спостережуваний результат, а не лише стан процесу.
- Виконайте описану вище ізольовану процедуру відновлення та підтвердьте очікуваний стан застосунку.
Переносьте решту ботів після запису результатів та усунення всіх виявлених проблем.
Часто задавані питання
Спосіб взаємодій Discord і характер запису в базу можуть змінити вимоги до розгортання.
Чи кожному Discord-боту потрібне постійне з’єднання?
Ні. Документація Discord про доставку взаємодій дозволяє взаємодії через Gateway або HTTP webhook; HTTP-метод не потребує підключеного клієнта Gateway. Йому все одно потрібна доступна кінцева точка, і він не замінює всі події Gateway. Обирайте модель з’єднання відповідно до подій, які споживає застосунок.
Чи можуть кілька ботів записувати в одну базу SQLite?
Так, якщо можуть записувати по черзі. Рекомендації SQLite щодо паралельного доступу допускають кількох читачів, але лише одного записувача одночасно на файл бази. Якщо одночасні записувачі не можуть чекати в черзі, розгляньте клієнт-серверну базу. Інший VPS не змінить модель конкурентного запису SQLite.
Чи усуне швидший VPS тайм-аути взаємодій Discord?
Не обов’язково. Вимоги Discord до відповіді на взаємодії передбачають початкову відповідь протягом трьох секунд; токени взаємодій діють 15 хвилин для подальших відповідей. Перед зміною хостингу перевірте обробку відповідей у застосунку. Додаткові CPU чи пам’ять допомагають лише тоді, коли нестача ресурсів сприяє пропуску строку.
Обговорення
Коментарі
Увійдіть, щоб долучитися до обговорення.