Що вміє WardPane 2.0
WardPane 2.0 розміщує статичні, PHP і Node.js сайти, сам випускає сертифікати й працює з Cloudflare. Захист і керування трафіком налаштовуються для кожного сайту й працюють усередині вебсервера. У більшості з восьми панелей зі сторінки порівняння для цього потрібен ModSecurity або платне доповнення.
Для початківців і для досвідчених адміністраторів
Початківці отримують встановлення однією командою, сертифікати, що випускаються самі, сайти в ізольованих середовищах і налаштування, пояснені простими словами. Досвідчені адміністратори отримують усі параметри, термінал у браузері, PM2 на власника, .htaccess, правила кожного сайту у відомому порядку, Cloudflare API, експорт та імпорт, контрольні суми випусків і вихідний код.
Хостинг
Сайти розміщуються за схемою в стилі ISPmanager, належать користувачу Linux і обслуговуються самим WardPane на портах 80 і 443.
- Сайти й аліаси
- Сайт складається з домену та до 99 аліасів (сертифікат Let's Encrypt вміщує щонайбільше 100 імен). Аліас обслуговує основний сайт або, якщо має власну теку, цю теку. Сайтам можна задати відображувану назву.
- Структура за власниками
- Файли лежать у /var/www/<owner>/data/www/<domain>, журнали й тимчасові файли поруч. Власник за замовчуванням: www-root, користувач Linux, якого створює WardPane. Сайти з 1.x залишаються у своїх колишніх теках.
- Три обробники
- Без обробника (статичний хостинг), PHP або Node.js; вибирається для кожного сайту й перемикається будь-коли. Налаштування інших обробників зберігаються, тож після повернення вони відновлюються.
- Статичні файли
- Режим SPA (невідомі шляхи ведуть на index.html), власний 404.html, сильні ETag з докачуванням, перенаправлення з HTTP на HTTPS і символьні посилання, які ніколи не виходять за межі теки сайту.
- Середовища виконання
- Панель показує версії PHP, встановлені на сервері, і основні версії Node.js, які вона підтримує: 20, 22, 24 і 26, за замовчуванням 24 (підтримку 20 завершено у квітні 2026 року). Збірки Node.js завантажуються з nodejs.org і звіряються з опублікованими сумами SHA256.
- Меню в кожного сайту
- У кожному рядку таблиці сайтів є меню з усіма діями для цього сайту, а перемикач вимикає сайт і вмикає його знову, нічого не видаляючи.
- Командний рядок у браузері
- Термінал просто в панелі: командний рядок root у сеансі root або командний рядок власника сайту в теці сайту. Для сайтів Node.js там працюють pm2 list і pm2 restart.
- Експорт та імпорт
- Усі сайти з усіма налаштуваннями та глобальний чорний список вміщуються в один файл JSON. Імпорт об’єднує або замінює дані, спершу перевіряє весь файл і ніколи не чіпає файли в /var/www.
PHP і Node.js
Кожен динамічний сайт працює від власного користувача Linux в ізольованому середовищі systemd. Зламаний чи несправний сайт не може читати сусідів.
- Окремий пул php-fpm для кожного сайту
- Жодного спільного пулу, спільного opcache чи сесій. Код для PHP доступний лише для читання; писати можна тільки в tmp/, logs/, data/ і вказані вами теки, і PHP ніколи не запускається з цих тек.
- Сувора ізоляція PHP
- Уся файлова система доступна лише для читання й позначена noexec, крім самого php-fpm; задано open_basedir, вимкнено exec, system, shell_exec, proc_open, popen і putenv, а системні виклики фільтруються.
- .htaccess без Apache
- Правила перезапису, перенаправлення, правила доступу, Basic auth, заголовки й кешування зі справжніх сайтів працюють як є: WordPress, Laravel і звичні перенаправлення на HTTPS і www. Рядки, які неможливо застосувати, показуються, а не вгадуються.
- Node.js з PM2
- Виберіть основну версію Node.js, скрипт npm або файл запуску, змінні середовища й обмеження. Застосунки запускає один демон PM2 на власника, тож pm2 працює з командного рядка власника.
- Проксі перед застосунком
- Файли з public/ за бажанням віддаються напряму, решта йде до застосунку зі справжнім IP відвідувача в X-Forwarded-For і X-Real-IP. WebSocket-з’єднання проходять після тих самих перевірок захисту.
- Перезапуск, npm install і журнали
- На вкладці «Обробник» є кнопки перезапуску та npm install (npm ci, якщо є lock-файл), журнали виводу, помилок і встановлення та список скриптів із package.json.
Сертифікати й Cloudflare
Сертифікати випускаються й подовжуються без ручних кроків, зокрема для сайтів за Cloudflare.
- Let's Encrypt, повністю автоматично
- Один сертифікат на сайт з усіма аліасами, подовжується, коли залишається третина строку дії. Імена, DNS яких не вказує на сервер, пропускаються й додаються, щойно почне вказувати, а панель пояснює причину.
- IPv6 також перевіряється
- Let's Encrypt спершу пробує IPv6, тому кожен запис AAAA має вказувати на сервер. WardPane перевіряє їх до того, як замовити сертифікат.
- Сертифікат для IP
- IP сервера отримує короткостроковий сертифікат, що подовжується кожні кілька днів. Панель за адресою https://<ip>:1500 відкривається без попередження.
- Ліміти Let's Encrypt
- Панель не замовляє повторний сертифікат, повідомляє про всі невдалі імена замовлення одразу, після кожної помилки чекає довше й замінює деактивований обліковий запис ACME.
- Токен Cloudflare одним кліком
- Кнопка «Створити токен Cloudflare» відкриває Cloudflare з уже заповненими потрібними дозволами. Вставте токен назад, і панель зможе перевіряти й виправляти зони ваших сайтів.
Захист
У кожного сайту свої перевірки. Вони працюють усередині вебсервера, до того як запит побачать PHP або Node.js. Адреса отримує бан лише за очевидну атаку.
- Ліміт запитів і бани
- За замовчуванням кожна адреса може надіслати 150 запитів за 10 секунд. Понад ліміт адреса отримує 404 і бан на задану вами кількість хвилин. Відвідувачі з IPv6 рахуються й блокуються за їхньою /64, тож зміна адреси не допоможе. Кожен сайт має білий список.
- Bot Fight
- Блокує AI-краулери, SEO-краулери, сканери вразливостей, скрипти й headless-браузери, порожні user agent і ваш власний список. Пошукові системи й попередній перегляд посилань лише за вашим вибором. Моніторинг і RSS-читачі не зачіпаються.
- Зондування та шкідливі вантажі
- Запити до /.env, /.git, /wp-login.php та подібних імен, яких на сайті немає, призводять до бану адреси. Очевидні SQL-ін’єкції, XSS, обхід шляху й Log4Shell в URL призводять до бану; неоднозначні лише відхиляють цей запит.
- Виявлення сканування
- Багато промахів поспіль (за замовчуванням 25 за 60 секунд) схожі на gobuster чи ffuf і призводять до бану адреси. Відсутнє зображення рахується як десята частина промаху, тож стара сторінка з битими картинками не вважається скануванням.
- Перевірені краулери
- Google, Bing, DuckDuckGo, Apple, OpenAI, Anthropic, Perplexity і Ahrefs публікують свої діапазони IP. WardPane щодня завантажує їх і банить кожного, хто видає себе за когось із них з іншої адреси. Також можна заблокувати ці краулери за IP, навіть коли вони ховаються за user agent браузера.
- Публічні IP-фіди
- Spamhaus DROP, FireHOL level 1 і blocklist.de, оновлюються щодня, вмикаються для кожного сайту одним перемикачем.
- Гео з групами
- Дозволяйте або забороняйте країни поодинці чи групами: колишній СРСР, СНД, ЄАЕС, ЄС, ЄЕЗ, Шенген, НАТО, G7, G20, ОЕСР, БРІКС, ШОС, АСЕАН, Ліга арабських держав, МЕРКОСУР, континенти тощо. Додавайте винятки й дивіться підсумковий список країн.
- Хостингові мережі та номери AS
- Блокуйте запити з AWS, Azure, Google Cloud, Hetzner, OVH, DigitalOcean, Vultr та інших хмар, звідки походить більшість автоматизації, або з будь-якого номера AS з вашого списку.
- Фільтр за мовою
- Дозволяйте або забороняйте за мовою браузера, з окремим перемикачем для запитів, що не передають мову взагалі. Корисний додатковий сигнал поряд із країною, наприклад за VPN.
- Пристрої
- Пропускайте лише Windows, macOS, Linux, Android, iOS або інші, як фільтр для звичайних браузерів.
- Лише за посиланням
- Обов’язкові параметри URL: сайт відкривається лише для тих, хто прийшов за вашим посиланням, наприклад ?ref=metaads з реклами. Підписаний cookie та, за бажанням, IP відвідувача зберігають доступ. Шляхи для вебхуків і платіжних зворотних викликів залишаються відкритими.
- Пароль
- Вхід через HTTP Basic для чернеток і тестових копій сайту. Паролі зберігаються як хеші scrypt і перевіряються поза основним потоком, після всіх інших фільтрів.
- Захист від хотлінків
- Інші сайти не можуть вбудовувати ваші зображення й файли. Виберіть розширення, дозволені сайти (шаблони з * працюють) і що робити із запитами без Referer.
- Заголовки безпеки
- X-Frame-Options, Referrer-Policy, HSTS з includeSubDomains і preload, Content-Security-Policy і Permissions-Policy для кожного сайту.
- Пастка (honeypot)
- Шлях, заборонений у robots.txt. Людина його не відкриє, тому той, хто його запитав, одразу отримує бан.
- Власні сторінки блокування
- Ваша сторінка й код статусу (404, 403 або 200) для блокувань за пристроями, ботами, гео й доступом лише за посиланням, з no-store.
- Глобальний чорний список
- Адреси й мережі, заблоковані на всіх сайтах, зберігаються на диску й переживають перезапуски. Список діє навіть там, де захист сайту вимкнено.
Керування трафіком
Вирішуйте, хто потрапляє на кожен сайт, у якому порядку діють правила і що бачить заблокований відвідувач.
Порядок перевірок для кожного запиту
- Cloudflare: справжній IP відвідувача, лише через Cloudflare
- Глобальний чорний список, потім білий список сайту
- Ліміт запитів та активні бани
- Bot Fight: user agent, перевірені краулери, IP-фіди, зондування, шкідливі вантажі, сканування, пастка
- Гео: країни й групи, хостингові мережі, номери AS, мова браузера
- Пристрої
- Заголовки безпеки й захист від хотлінків
- Лише за посиланням
- Пароль
- Правила .htaccess, потім обробник: файли, PHP або Node.js
- Справжній IP з урахуванням Cloudflare
- Адреса відвідувача береться з CF-Connecting-IP лише тоді, коли з’єднання справді надходить від Cloudflare. Список мереж щодня оновлюється з cloudflare.com.
- Лише через Cloudflare
- Прямі запити на IP сервера отримують 404, тож ніхто не обійде CDN і його правила.
- Коли перемикач вимкнено
- Сайт за Cloudflare, не позначений як такий, ніколи не банить адреси Cloudflare й отримує вдесятеро вищий ліміт на кожен сервер Cloudflare. Журнал підкаже, як виправити.
- Cloudflare Workers
- Запити від Worker рахуються за його зоною зі звичайними лімітами й банами; Worker вашої власної зони вважається Cloudflare.
- Коди сторінок блокування
- Виберіть 404, щоб адреса виглядала порожньою, 403, щоб повідомити про відмову, або 200 з власною сторінкою. Клієнти, які перевищили ліміт або отримали бан, завжди отримують просту відповідь 404.
- Відповіді, безпечні для кешу
- Відповіді, що залежать від доступу за посиланням, отримують Cache-Control: private і Vary: Cookie, тож CDN ніколи не віддасть їх тому, у кого немає посилання.
Безпека панелі
Панель працює від непривілейованого користувача wardpane, а її сторінка входу має власні ліміти проти підбору паролів.
- Вхід як root
- За бажанням можна входити як root із паролем root сервера. Його перевіряє unix_chkpwd через невеликий root-помічник на сокеті, доступному лише панелі. За замовчуванням вимкнено.
- Захист від підбору паролів
- 5 невдалих спроб блокують адресу (для IPv6 її мережу /64) на 15 хвилин, а 50 блокують її /48. Хвиля невдалих спроб з багатьох адрес закриває вхід для невідомих адрес на 5 хвилин. Адреси, з яких входили за останні 30 днів, працюють і далі.
- Білий список IP
- Якщо задано PANEL_ALLOW_IPS, панель зовсім не відповідає іншим адресам. Вона відхиляє список, який заблокував би адресу, з якої ви працюєте.
- Ізоляція root-помічника
- Панель записує бажаний стан; root-помічник, запущений systemd, повторно перевіряє кожне значення, перш ніж створювати користувачів, теки й юніти.
- Ізольовані PHP і Node.js
- Окремі користувачі Linux для кожного сайту, система лише для читання, приватний /tmp, заборона нових привілеїв, обмеження пам’яті та CPU і, за бажанням, заборона вихідних з’єднань.
- Контрольні суми випусків
- Кожен архів публікується разом із контрольною сумою SHA-256 і містить повний вихідний код. Інсталятор завантажує його через HTTPS і перевіряє SHA-256, перш ніж щось запустити.
- Оновлення, які можна скасувати
- Кожне оновлення створює резервну копію зі скриптом відновлення, перевіряє, що нова версія запускається, і саме відкочується, якщо ні.
- Відновлення доступу
- Якщо ви заблокували собі доступ, одна команда на сервері скидає вхід до панелі та список дозволених IP і знімає блокування входу.
Спробуйте на вільному сервері
Встановлення займає кілька хвилин на чистій Ubuntu 24.04.