Блог ·
Продаж ігрових серверів з GameAP
Продаж хостингу ігрових серверів на GameAP: адмінський токен API, чому немає списку ігор, як працюють розміщення й порти та що робить призупинення.
Автор: Provibr
GameAP є невеликим проєктом. 21 серпня 2026 року його репозиторій GitHub мав 60 зірок, 9 форків і 2 контрибутори. Це варто сказати вголос, бо це задає очікування: навколо нього немає великої екосистеми модулів білінгу, скриптів провізіювання та гілок на форумах. Якщо ви запускаєте GameAP і хочете продавати те, що він розміщує, ви здебільшого самі по собі.
Ця сторінка розповідає про те, як закрити цей розрив. Provibr підключається до панелі GameAP і провізіює, контролює та імпортує ігрові сервери на ній. Усе нижче виміряно на справжній панелі GameAP 4.4.2, а не списано зі списку можливостей, зокрема й ті частини, де GameAP поводиться інакше, ніж ви очікували б.
Що насправді охоплює інтеграція
| Можливість | Підтримка |
|---|---|
| Створення, запуск, зупинення, перезапуск, перевстановлення, видалення | Так |
| Призупинення та відновлення | Так, із застереженням: див. нижче |
| Імпорт наявних серверів | Так |
| Консоль у браузері | Ні |
| Графіки використання (CPU, памʼять, диск, мережа) | Ні |
| Керування панеллю, її вузлами, файлами чи користувачами | Ні |
Два рядки «ні» не є недоглядом, а причини наведено в кінці.
Крок 1: токен API
GameAP автентифікується одним токеном API. Ні клієнта OAuth2, ні пари ключів, ні сесії, яку треба підтримувати живою: один bearer, і це весь обліковий засіб.
Чотири речі про нього важливі.
Його має створити адміністратор, і він має нести право створення. Токени GameAP обмежені за областю дії. Токен без admin:server:create чудово перелічує сервери, але не може ні створювати, ні видаляти їх. Це варто знати до першого замовлення, бо обмежений, але неправильний токен виглядає здоровим рівно до миті, коли клієнт вам платить. Provibr перевіряє право створення під час тестування зʼєднання, а не під час першого замовлення.
Видалення тримається на тому ж праві. Області дії server:delete у GameAP немає взагалі. Ми виміряли успішне видалення токеном, який ніс лише admin:server:create та звичайні серверні області дії. Один токен покриває весь життєвий цикл.
Токен має форму id|secret. Це форма Laravel Sanctum: числовий id, вертикальна риска та секрет із 48 символів. Provibr зберігає цю форму й відхиляє токен, вставлений без id попереду: це справжня помилка вставлення, і зловити її краще, ніж отримати заплутану 401 згодом.
Він не спливає. Таблиця personal_access_tokens у GameAP не має стовпця expires_at. Це найчистіший довготривалий обліковий засіб серед усіх панелей, які ми інтегрували: агент працює місяцями без того, щоб хтось щось повторно вводив. Порівняйте це з панелями, де секретом є пароль, і кожне його оновлення стає зверненням до підтримки.
Одна практична примітка: GameAP показує токен раз і зберігає потім лише хеш. Скопіюйте його одразу. Provibr його теж не зберігає, тож повторне надсилання облікових даних означає створення нового токена.
Крок 2: транспорт і чесність щодо нього
Типове встановлення GameAP віддає звичайний HTTP на порту 8025, а 443 закрито. У формі облікових даних немає поля для відбитка TLS, бо без TLS немає сертифіката, який можна закріпити.
Це працює. Це також означає, що токен API і все, що робить інтеграція, мандрує незашифрованим. Якщо це для вас важливо (а на панелі, де лежать сервери ваших клієнтів, це, ймовірно, має бути важливо), поставте перед нею зворотний проксі з TLS. Тоді агент перевіряє ланцюг сертифікатів звичайним чином, без закріплення.
Крок 3: тариф і чому немає списку вибору
Сервер GameAP збирається з гри (назви на кшталт samp чи minecraft) та game mod, який є його шаблоном. Разом вони дають приблизно те, чим є один egg у Pterodactyl.
Ось найгостріша відмінність від усіх інших ігрових панелей, які ми підтримуємо: Provibr не може перелічити їх за вас. З обмеженим за областю дії токеном агента /api/games, /api/game_mods та /api/nodes усі три повертають 403. Читання каталогу закрите роллю адміністраторської сесії, і жодне право токена його не розблоковує.
Тож розкривного списку немає. Ви відкриваєте власну панель GameAP, зчитуєте код гри та id мода й вводите їх у тариф. Ігровий тариф тоді несе цей код гри, цей id мода та ліміти ресурсів, і далі замовлення кероване тарифом.
Це більше друкування, ніж список вибору. Це також чесна форма: розкривний список, який ми не змогли б заповнити, був би гіршим за поле, що каже, чого воно хоче.
Крок 4: розміщення та порти
З тієї ж 403 випливають два наслідки.
Вузол береться з налаштування, а не з рушія розміщення. Provibr ранжує вузли за вільною потужністю, коли може. Тут не може, бо не може прочитати список вузлів взагалі. Натомість інтеграція несе id вузла, який дорівнює 1 на панелі з одним вузлом. На панелі з кількома вузлами сервер потрапляє на вузол, який ви назвали, і нічого не ранжується.
Порти беруться з діапазону, який ви задаєте. GameAP не має власної системи виділення: ніщо не роздає вільний порт. Агент сам обирає вільний набір портів (гра, запит і RCON) з діапазону, який ви налаштовуєте в інтеграції.
Що насправді робить замовлення
Саме тут GameAP найбільше відрізняється від панелі на кшталт Pterodactyl, і саме тут наївна інтеграція помиляється.
POST /api/serversзаписує запис у базі даних. Він не встановлює нічого.- Другий виклик запускає встановлення, і демон панелі виконує його як асинхронне завдання.
- Provibr опитує це завдання, доки воно не досягне кінцевого стану.
- Потім сервер запускається.
Критичне правило: HTTP-відповідь дії означає лише, що завдання поставлено в чергу. Вона не означає, що воно вдалося. Ми виміряли stop, який повернувся з помилкою через гонитву на хості: кожен ігровий сервер працює як власний юніт systemd на вузлі, і systemctl stop може програти гонитву сам із собою. Результат завдання є правдою; HTTP-відповідь є квитанцією. Provibr читає завдання.
Ще дві виміряні реалії, які варто врахувати в плануванні. Тут немає зовнішнього id і немає ключа ідемпотентності, а імена серверів не унікальні: ми створили два сервери з однаковим іменем і отримали дві 201 з різними id. Id, який повертає виклик створення, є єдиною ідентичністю, що існує, а це означає, що повторене створення тихо породжує дублікат. І середовище встановлення не всюди повне: встановлення TeamSpeak 3 на стандартній панелі не вдалося, бо для розпакування .tar.bz2 бракувало lbzip2, тоді як встановлення SA-MP на тій самій машині пройшло чисто. Очікуйте, що «встановлення працює для однієї гри й не працює для іншої» стане категорією підтримки.
Призупинення: прочитайте це, перш ніж покладатися на нього
Коли Provibr призупиняє ігровий сервер (щоб забезпечити ліміт потужності), він зупиняє сервер і позначає його заблокованим у панелі.
Потрібні обидві половини, і ось чому: прапорець blocked у GameAP нічого не забезпечує. Ми встановили blocked на працюючому сервері SA-MP, і він лишився онлайн, відповідаючи на живі ігрові запити. Потім ми надіслали запуск заблокованому серверу й отримали назад звичайне завдання. Цей прапорець є адміністративним.
Тож Provibr зупиняє сервер, щоб дійсно забезпечити ліміт. Але будь-хто з прямим доступом до панелі GameAP може запустити його знову. Блокування є поняттям Provibr не менше, ніж поняттям панелі, і ми радше це запишемо, ніж дозволимо вам виявити це під час першого перевищення ліміту.
Чого Provibr тут не робить
Немає консолі. GameAP її має, через websocket, але вона працює на окремому короткоживучому токені з власного кроку автентифікації та власного протоколу кадрів, іншим шляхом, ніж тунель, яким наш агент ділиться з іншими ігровими панелями. Це справжня робота, а не перемикач. Увімкнути вкладку до того, як ця робота існує, означало б пообіцяти тунель, якого немає.
Немає графіків використання. GameAP не повідомляє по кожному серверу ні CPU, ні памʼяті, ні диска, ні мережі. Кінцевої точки немає. Графік, застряглий на нулі, виглядає як вимірювання, а «немає вимірювання» і «немає використання» не одне й те саме, тож ми натомість не показуємо нічого.
Немає керування панеллю. Вузли, файли, користувачі та сама панель лишаються вашими. Інтеграція займається ігровим сервером на панелі.
Що це означає для невеликого хостера
Якщо ви запускаєте GameAP, вибір зазвичай подають так: «залишіть панель і виставляйте рахунки вручну» або «перейдіть на щось, чим уже говорить білінгова система». Це хибний вибір, і дорогий: мігрувати панель, повну живих ігрових серверів, не є роботою на вихідні.
Provibr підключається до панелей керування, гіпервізорів та ігрових панелей пліч-о-пліч. Вам не обовʼязково обирати одну. Залиште GameAP для ігор, які ви вже розміщуєте, додайте поруч те, що вам потрібно, і запускайте замовлення, підрахунок потужності та призупинення за несплату для всіх них з одного місця.