1Panel на VPS: бесплатная панель управления сервером
Веб-интерфейс для сервера вместо консоли: сайты, сертификаты, базы, контейнеры, бэкапы и файлы в одном окне. Разбираемся, как 1Panel устроена внутри, ставим её одной командой и сразу закрываем от посторонних.
Сначала честно: нужна ли вам панель
Панель управления — это не «ускоритель сервера» и не замена знаниям. Это способ не держать в голове синтаксис конфигов Nginx, команды certbot и параметры cron. За удобство вы платите тем, что на сервере появляется большое веб-приложение с полными правами. Поэтому решение зависит от того, что вы собираетесь делать.
Панель пригодится, если вы держите на сервере несколько сайтов или сервисов
Пара сайтов на WordPress, база данных, пара self-hosted приложений, домены и сертификаты к ним. Всё это руками настраивается за вечер, а через панель — за час, и потом не приходится вспоминать, где какой конфиг лежит.
Панель лишняя, если у вас один сервис и вы уверенно пишете docker-compose.yml
Для одного приложения проще Docker Compose и Caddy — меньше кода, меньше поверхности для атаки.
Если вы деплоите своё приложение из Git — вам, скорее всего, нужна не панель
Для сценария «запушил в репозиторий — оно само собралось и выкатилось» есть Coolify. 1Panel умеет разворачивать готовые приложения и сайты, но она не про непрерывную сборку вашего кода.
Если после этого списка панель всё ещё выглядит полезной — дальше по делу.
Что такое 1Panel и чем она отличается от привычных панелей
1Panel — панель управления Linux-сервером с открытым кодом (лицензия GPLv3, 36,5 тысяч звёзд на GitHub). Актуальная версия на момент публикации — v2.2.5 от 7 августа 2026, новые версии выходят каждые две-три недели. И установщик, и сам интерфейс переведены на русский — язык интерфейса переключается в разделе Настройки → Панель → Язык.
Ключевое отличие от ISPmanager, cPanel и HestiaCP звучит так: 1Panel почти ничего не устанавливает в саму систему — она управляет контейнерами. Классическая панель ставит в систему Apache, PHP, MySQL, почтовый сервер и потом редактирует их конфиги. 1Panel вместо этого поднимает контейнеры Docker: сайты обслуживает OpenResty (сборка Nginx с Lua) в контейнере, MySQL — контейнер, WordPress — контейнер, ваш n8n — тоже контейнер.
Как это устроено внутри — стоит понять сразу, это объясняет половину вопросов.
- Контейнер OpenResty запускается в режиме
network_mode: host, то есть работает прямо в сети сервера и занимает порты 80 и 443. Из всех контейнеров наружу смотрит только он. - Все остальные приложения при установке получают в docker-compose префикс
127.0.0.1перед портом. Снаружи их не видно вообще — только с самого сервера. - Связывает их обратный прокси: вы создаёте «сайт» с доменом, а панель пишет конфигурацию OpenResty, которая проксирует запросы на локальный порт приложения и выдаёт ему бесплатный сертификат Let's Encrypt.
Получается схема, которую опытный админ собрал бы руками: наружу торчат 80 и 443, всё остальное слушает localhost, сертификаты обновляются сами. Разница в том, что здесь это поведение по умолчанию, а не результат аккуратной настройки.
Обратная сторона: 1Panel — не хостинг-панель в старом смысле. В ней нет почтовых ящиков для доменов и полноценных клиентских аккаунтов с квотами. Это панель для владельца сервера, а не для перепродажи хостинга.
Что бесплатно, а за что просят деньги
У проекта есть платная редакция Pro, поэтому важно сразу понимать границу. Всё, что нужно для обычного VPS, входит в бесплатную версию:
Бесплатно, без ограничений
- Сайты, домены, обратные прокси
- Сертификаты Let's Encrypt и автопродление
- Магазин приложений (165+ штук)
- Контейнеры, образы, сети, тома
- MySQL, PostgreSQL, Redis
- Файловый менеджер и терминал в браузере
- Firewall, Fail2ban, антивирус ClamAV
- Бэкапы в S3, WebDAV, SFTP и другие хранилища
- Планировщик задач, мониторинг, уведомления на почту
Только в Pro (от 80 $ в год)
- WAF — фильтрация запросов к сайтам
- Защита файлов сайта от подмены
- Мониторинг доступности сайтов
- Управление несколькими серверами из одной панели
- Мобильное приложение
- Свой логотип и тема оформления
- Уведомления в мессенджеры и по SMS
Ограничений «до трёх сайтов» или «до одной базы» в бесплатной версии нет — это полноценная панель, а не демо.
Что нужно перед установкой
- Чистый VPS с Ubuntu 24.04 LTS (подойдёт и 22.04, и Debian 12). Именно чистый: панель ожидает, что порты 80 и 443 свободны.
- Минимум 1 ГБ оперативной памяти — это требование документации. Практически: 1 ГБ хватает только на саму панель и один-два лёгких контейнера. Под WordPress с MySQL берите 2 ГБ, под несколько сайтов — 4 ГБ.
- Доступ по SSH с правами root. Установщик отказывается работать от обычного пользователя — если вы заходите под своей учёткой с sudo, сначала выполните
sudo -i. - Домен, если планируете сайты и HTTPS. Без домена сертификат Let's Encrypt получить нельзя.
Подключитесь к серверу и обновите пакеты:
apt update && apt -y upgradeПроверьте, что порты 80 и 443 никто не занял. В ответе должна быть только строка с названиями колонок — если ниже появились строки LISTEN, порты уже заняты:
ss -tlnp 'sport = :80 or sport = :443'Если в ответе виден nginx или apache2, решите заранее, что с ними делать: оставить их и не пользоваться разделом «Сайты» в панели, либо остановить и отключить (systemctl disable --now nginx) и перенести сайты под управление 1Panel.
Поставьте Docker заранее — это сэкономит нервы. Если Docker не найден, установщик предложит поставить его сам и задаст пару дополнительных вопросов, в том числе про «встроенный» Docker из своего архива. Встроенный вариант рабочий, но он просто копирует бинарники в /usr/bin мимо пакетного менеджера — обновлять его потом придётся вручную. Проще один раз поставить официальный Docker: установщик панели увидит его и не будет ничего спрашивать.
curl -fsSL https://get.docker.com | sh
docker versionУстановка: одна команда и шесть вопросов
Скрипт скачивает архив в текущую папку, поэтому сначала перейдите в домашний каталог root:
cd /root
bash -c "$(curl -sSL https://resource.1panel.pro/v2/quick_start.sh)"Проверьте, что в ссылке есть /v2/. По адресу без /v2/ лежит установщик старой ветки — он поставит версию 1.10, у которой другой интерфейс и другой набор возможностей. Многие гайды до сих пор приводят именно старую ссылку.
Дальше установщик задаст шесть вопросов. Не отходите от терминала: на вопрос про директорию есть таймаут в две минуты, после которого установщик сам выберет вариант по умолчанию.
1. Выбор языка
Список из пяти пунктов: English, 中文, فارسی, Português, Русский. Введите 5 — дальше установщик и все его подсказки будут на русском.
2. «Укажите директорию для установки 1Panel (по умолчанию /opt)»
Нажмите Enter. Данные лягут в /opt/1panel. Менять путь стоит только если под /opt у вас маленький раздел.
3. «Укажите порт 1Panel (по умолчанию 41297)»
В скобках установщик предлагает случайный пятизначный порт — нажмите Enter и согласитесь. Случайный порт лучше «красивого» вроде 8888: панель не найдут простым сканированием популярных портов. Порт нужно записать, но если забудете — его покажет команда 1pctl user-info.
4. «Установите безопасный вход 1Panel»
В интерфейсе панели это называется «точка входа» — секретная часть адреса. Панель откроется только по ссылке вида http://IP:41297/a1b2c3d4e5, а на любой другой адрес ответит пустой страницей. Нажмите Enter и примите случайное значение. Свой вариант — только латиница, цифры и подчёркивание, длина от 3 до 30 символов.
5. «Установите пользователя панели 1Panel»
Здесь лучше ввести своё имя вместо случайного — его придётся набирать при каждом входе. Только не admin и не root. Правила те же: латиница, цифры, подчёркивание, 3–30 символов.
6. «Установите пароль панели 1Panel»
Пароль вводится «вслепую», символы отображаются звёздочками. Важное ограничение: длина 8–30 символов, разрешены только буквы, цифры и знаки ! @ # $ % * _ , . ?. Сгенерированный менеджером паролей набор с дефисом или скобками установщик отклонит — это самая частая заминка на этом шаге.
Через две-три минуты установщик напечатает результат:
=================Спасибо за ожидание, установка завершена==================
Пожалуйста, войдите в панель через браузер:
Внешний адрес: http://203.0.113.10:41297/a1b2c3d4e5
Внутренний адрес: http://10.0.0.5:41297/a1b2c3d4e5
Пользователь панели: ivan
Пароль панели: MyPass_2026Скопируйте эти строки в менеджер паролей прямо сейчас. Из файла журнала установки пароль стирается сразу, а команда 1pctl user-info показывает его только до первой смены — дальше вместо пароля будут звёздочки.
Первые 10 минут: закрываем панель от посторонних
Панель работает от root и умеет выполнять команды на сервере. Пока вы не закрыли её, единственная защита — случайный порт и секретный путь. Этого мало. Сделайте пять вещей, прежде чем ставить на сервер что-то ещё.
1. Включите firewall и откройте только нужное
На свежем VPS ufw обычно выключен — тогда установщик его не трогает и все порты сервера открыты. (Если ufw у вас уже был включён, установщик сам добавил правило для порта панели.) Порядок команд важен: сначала разрешаем SSH, иначе после включения ufw вы потеряете доступ к серверу. Подставьте свой порт панели вместо 41297, а если SSH у вас переехал с 22-го порта — укажите свой:
ufw allow 22/tcp
ufw allow 41297/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw statusПорты 80 и 443 нужны для сайтов и для выпуска сертификатов. Если сайтов не планируется — не открывайте их. Дальше правилами можно управлять прямо из панели: раздел Firewall в левом меню.
2. Включите двухфакторную аутентификацию
Войдите в панель по адресу из вывода установщика и откройте Настройки → Безопасность. Включите переключатель «2FA авторизация» и отсканируйте QR-код любым приложением с одноразовыми кодами (Google Authenticator, Aegis, 2FAS). Пароля теперь недостаточно — при входе панель будет спрашивать шесть цифр из приложения. Если телефон потеряется, 2FA сбрасывается по SSH командой 1pctl reset mfa.
3. Ограничьте, откуда можно заходить
В том же разделе есть поле «Авторизованные IP». Если у вас статический адрес дома или в офисе — впишите его, и панель перестанет отвечать всем остальным. Это самая эффективная защита из всех перечисленных. Если адрес динамический, вписывать его бессмысленно: смените провайдера или перезагрузите роутер — и потеряете доступ. В этом случае лучше вообще убрать панель из интернета и ходить в неё через WireGuard.
4. Переведите саму панель на HTTPS
По умолчанию панель отвечает по обычному HTTP: пароль и одноразовый код уходят по сети открытым текстом. В том же разделе безопасности есть «SSL панели». Самый чистый вариант — завести для панели отдельный поддомен (например, panel.example.com), выпустить на него сертификат, как для обычного сайта, и выбрать его здесь. Быстрый вариант — самоподписанный сертификат: браузер будет ругаться на «недоверенный сайт», зато трафик перестанет ходить открытым. Если что-то пойдёт не так и панель перестанет открываться, HTTPS отключается по SSH: 1pctl reset https.
5. Обновляйтесь сразу, как выходит новая версия
У 1Panel были и, вероятно, ещё будут уязвимости — как у любой панели. В декабре 2025 закрыли обход белого списка IP через подделку заголовка и обход капчи на странице входа, в январе 2026 — межсайтовый скриптинг в магазине приложений. Все они исправлены в обновлениях. Панель сама показывает уведомление о новой версии; обновиться можно в разделе Настройки → О программе кнопкой «Проверить обновления» — при неудачном обновлении панель откатывается сама.
Не путайте команды: 1pctl update — это изменение настроек (логин, пароль, порт), а не обновление версии панели. Обновить саму 1Panel можно только из веб-интерфейса.
Аварийный выход: команда 1pctl
Настройками безопасности легко заблокировать самому себе доступ. На этот случай есть консольная утилита 1pctl — она правит настройки панели напрямую в её базе. Все команды выполняются от root по SSH.
1pctl user-info # адрес входа, логин, пароль (если ещё не менялся)
1pctl update password # задать новый пароль
1pctl update port # сменить порт панели
1pctl reset entrance # убрать секретную точку входа
1pctl reset ips # снять ограничение по авторизованным IP
1pctl reset domain # снять привязку к домену
1pctl reset https # выключить HTTPS панели
1pctl reset mfa # отключить 2FA
1pctl status # состояние служб
1pctl restart # перезапуск панели
1pctl uninstall # полное удаление панелиЗапомните первую и последнюю строки — этого достаточно, чтобы не бояться экспериментов с настройками.
Где что лежит
Полезно знать до того, как что-то сломается. Панель — это две системные службы плюс папка с данными:
| Путь или имя | Что это |
|---|---|
1panel-core, 1panel-agent | Две службы systemd. Обе должны быть в состоянии running |
/opt/1panel/ | Все данные панели: базы, настройки, бэкапы |
/opt/1panel/apps/ | Приложения из магазина: docker-compose и их данные |
/opt/1panel/www/sites/ | Файлы сайтов и их логи: сайт/index и сайт/log |
/opt/1panel/www/conf.d/ | Конфигурации Nginx — по файлу на каждый сайт |
/usr/local/bin/1pctl | Та самая консольная утилита |
1panel-network | Docker-сеть, в которую панель включает приложения |
Проверить, что всё живо, можно так:
1pctl status
docker psПрактика 1: сайт на WordPress с бесплатным SSL
Самый частый сценарий. Всё делается мышкой, но порядок шагов имеет значение: если пойти сразу в «Сайты», панель упрётся в отсутствие веб-сервера и базы данных.
Шаг 1. Направьте домен на сервер
У регистратора добавьте A-запись: имя @ (или поддомен) → IP вашего сервера. Проверить, что изменения разошлись, можно прямо на сервере командой getent hosts example.com — она должна вывести ваш IP. Обычно это занимает от пары минут до часа. Пока запись не обновилась, сертификат выпустить не получится.
Шаг 2. Установите OpenResty и MySQL
Откройте Приложения → Магазин приложений и установите два приложения:
- OpenResty — веб-сервер для всех сайтов. Порты оставьте 80 и 443.
- MySQL — база для WordPress. Задайте пароль root, порт 3306 оставьте как есть и не трогайте «Внешний доступ» — по умолчанию он выключен, и это правильно: базе незачем смотреть в интернет.
Без установленного MySQL форма создания сайта не даст выбрать сервис базы данных — поэтому его ставим заранее.
Шаг 3. Создайте сайт
Сайты → Создать сайт, тип «Развертывание» — это установка готового приложения из магазина. Выберите WordPress, в параметрах укажите сервис базы данных (тот самый MySQL) — имя базы, пользователя и пароль панель сгенерирует сама. В поле «Основной домен» впишите свой домен. Подтвердите и дождитесь, пока скачается образ.
Шаг 4. Выпустите сертификат
Раздел Сертификаты, вкладка «ACME аккаунты»— создайте аккаунт, указав свою почту и выбрав Let's Encrypt. Затем вернитесь на вкладку сертификатов и запросите новый: выберите домен, аккаунт ACME, режим проверки HTTP и включите автопродление. Такая проверка сработает, только если A-запись уже указывает на сервер, порт 80 открыт в ufw и OpenResty запущен — то есть шаги 1 и 2 сделаны.
Шаг 5. Включите HTTPS
Откройте настройки сайта, вкладка HTTPS: включите переключатель, выберите выпущенный сертификат и опцию принудительного перенаправления с HTTP. Сохраните. Теперь https://example.com открывает установщик WordPress, а сертификат будет продлеваться сам.
Файлы сайта лежат в /opt/1panel/www/sites/example.com/index — туда же можно зайти через встроенный файловый менеджер. Если переносите существующий сайт, пригодится наша инструкция по переезду с хостинга.
Практика 2: домен и SSL для своего контейнера
Это сценарий, ради которого панель стоит ставить, даже если сайтов у вас нет. Допустим, у вас уже крутится n8n или Uptime Kuma в собственном docker-compose. Вместо того чтобы писать конфиг Nginx и возиться с certbot, вы за две минуты получаете домен с сертификатом.
Условие одно: контейнер должен публиковать порт на локальный адрес. В вашем docker-compose.yml это выглядит так:
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"Запись 127.0.0.1:5678:5678 вместо привычной 5678:5678 — важная деталь. Без неё Docker сам открывает порт в интернет в обход ufw, и приложение доступно всем поIP:5678, минуя ваш домен и HTTPS. С ней приложение видно только с самого сервера — а этого OpenResty достаточно, потому что он работает в сети сервера напрямую.
Дальше в панели:
- Добавьте A-запись поддомена на IP сервера, например
n8n.example.com. - Сайты → Создать сайт → Обратный прокси. Основной домен —
n8n.example.com, адрес прокси —http://127.0.0.1:5678. - Выпустите сертификат для этого домена и включите HTTPS — как в шагах 4–5 выше.
Заголовки для веб-сокетов панель прописывает в конфиг сама, так что интерфейсы с живым обновлением (n8n, Uptime Kuma, панели мониторинга) работают без дополнительной настройки.
Если приложение ожидает свой внешний адрес (n8n — переменные N8N_HOST и WEBHOOK_URL, многие другие — что-то похожее), пропишите в них итоговый домен с https://. Иначе ссылки и вебхуки, которые приложение генерирует само, будут вести на localhost.
Бэкапы: не пропустите этот раздел
1Panel умеет делать резервные копии сайтов, баз и приложений по расписанию — и это, пожалуй, самая полезная её часть после сертификатов. Но по умолчанию бэкапы складываются на тот же диск того же сервера. Такая копия спасёт от «случайно удалил», но не спасёт от отказа сервера или блокировки аккаунта у хостера.
Настройте по порядку:
- Настройки → Аккаунты резервного копирования — добавьте внешнее хранилище. Поддерживаются S3-совместимые (в том числе Яндекс Object Storage и Selectel), WebDAV, SFTP, MinIO, OneDrive, Google Drive.
- Задачи Cron — создайте задачи «Резервное копирование сайта» и «Резервное копирование базы данных», укажите расписание и выберите внешнее хранилище как приёмник.
- Отдельно сделайте снапшот (Настройки → Снапшоты). Он сохраняет саму 1Panel вместе со списком приложений и настройками — из него сервер разворачивается заново гораздо быстрее.
И проверьте восстановление хотя бы один раз. Бэкап, который ни разу не разворачивали, бэкапом не считается — эта мысль подробнее разобрана в статье про restic и rclone.
1Panel против других панелей
| Панель | Цена | Когда брать |
|---|---|---|
| 1Panel | Бесплатно, GPLv3 | Сайты плюс self-hosted приложения в контейнерах, современный интерфейс |
| FASTPANEL | Бесплатно | Классический хостинг: сайты, почта, FTP. Русский интерфейс и поддержка, часто предустановлена у российских хостеров |
| HestiaCP | Бесплатно, GPLv3 | Нужен полноценный почтовый сервер и клиентские аккаунты, всё ставится в систему без Docker |
| ISPmanager | Платная лицензия | Нужна платная техподдержка и много готовых инструкций на русском; часто включается в тариф хостера |
| aaPanel | Бесплатно с платными плагинами | Ближайший конкурент 1Panel и больше готовых приложений, но часть нужных инструментов вынесена в платные плагины с закрытым кодом |
| Coolify | Бесплатно | Не панель для сайтов, а свой Vercel: автодеплой вашего кода из Git |
Коротко: почта и клиентские аккаунты — HestiaCP или FASTPANEL. Деплой своего кода из репозитория — Coolify. Сайты вперемешку с контейнерными сервисами и желание всё видеть в одном окне — 1Panel.
Сколько это ест ресурсов
Сама панель — две небольшие Go-программы, они почти не заметны. Тяжёлое начинается ниже: Docker, OpenResty, MySQL и приложения. Ориентиры для выбора тарифа:
- 1 ГБ RAM — минимум из документации. Панель поднимется и будет работать, но под приложения памяти почти не останется. Годится, чтобы посмотреть и поиграть.
- 2 ГБ RAM — рабочий минимум: один сайт на WordPress с MySQL плюс пара лёгких контейнеров.
- 4 ГБ RAM и выше — несколько сайтов, база с реальным трафиком, спокойные обновления образов.
- Диск от 20 ГБ. Docker легко съедает место старыми образами — раз в пару месяцев заглядывайте в раздел «Контейнеры» и чистите неиспользуемые.
Процессор почти не важен: одного-двух ядер хватает, если только вы не собираетесь крутить что-то тяжёлое вроде видеоконвертации.
Частые проблемы
Панель не открывается в браузере сразу после установки
Сначала проверьте, что службы живы: 1pctl status. Если обе в состоянии running, дело в сети. Причина почти всегда одна из двух: закрыт порт панели в ufw или в панели безопасности у хостера (у некоторых провайдеров есть свой сетевой экран, и правила ufw на него не влияют).
Вторая по частоте причина — неполный адрес. Панель отвечает только по ссылке с секретным путём вида http://IP:41297/a1b2c3d4e5. По адресу без него вы увидите пустую страницу — и это нормально. Полный адрес покажет 1pctl user-info.
OpenResty установился, но сразу останавливается
Почти всегда это занятый порт 80 или 443 — обычно системным Nginx или Apache, который приехал вместе с образом хостера. Панель может отказать сразу («Порт занят»), а может создать контейнер, который не сможет занять порт и будет падать. В логе приложения при этом видно строку вроде bind() to 0.0.0.0:80 failed (98: Address already in use).
Посмотрите, кто занял порт: ss -tlnp 'sport = :80 or sport = :443'. Если этот веб-сервер вам не нужен, остановите и отключите его: systemctl disable --now nginx (или apache2), затем перезапустите OpenResty из списка установленных приложений.
Сертификат Let's Encrypt не выпускается
При HTTP-проверке центр сертификации обращается к вашему домену по порту 80 и должен увидеть там ваш сервер. Проверьте по порядку: A-запись домена указывает на IP сервера (getent hosts example.com), порт 80 открыт в ufw и у хостера, OpenResty запущен. Отдельный случай — Cloudflare с включённым проксированием (оранжевое облако): выключите его на время выпуска либо используйте проверку через DNS.
Установил приложение, а по адресу IP:порт ничего нет
Это не поломка, а защита по умолчанию: панель привязывает порты приложений к 127.0.0.1. Правильный путь — сделать для приложения сайт с обратным прокси и доменом, как в практике 2. Если доступ по порту всё-таки нужен, откройте параметры приложения, разверните «Расширенные настройки» и включите «Внешний доступ». Панель пересоберёт контейнер с новой привязкой порта и добавит правило в firewall — данные приложения при этом сохраняются.
Установщик не принимает пароль
Пароль панели ограничен: 8–30 символов, только буквы, цифры и знаки ! @ # $ % * _ , . ?. Дефис, кавычки, скобки и прочее не подходят. Те же правила у имени пользователя и секретного пути, только там разрешены исключительно буквы, цифры и подчёркивание.
Заблокировал себе вход настройками безопасности
Классика: ограничили доступ по IP, а адрес сменился; привязали домен, который ещё не работает; включили HTTPS с неподходящим сертификатом. Всё лечится по SSH: 1pctl reset ips, 1pctl reset domain, 1pctl reset https, 1pctl reset entrance, 1pctl reset mfa. После сброса HTTPS панель перезапустится сама.
Коротко: план с нуля
- Чистая Ubuntu, обновить пакеты, поставить официальный Docker
- Установить панель:
bash -c "$(curl -sSL https://resource.1panel.pro/v2/quick_start.sh)" - Сохранить адрес, логин и пароль из вывода установщика
- Открыть в ufw порты SSH, панели, 80 и 443 — и включить ufw
- Войти в панель, включить 2FA и по возможности HTTPS для самой панели
- Поставить OpenResty и MySQL, создать сайт, выпустить сертификат
- Настроить бэкапы во внешнее хранилище и один раз проверить восстановление
Если через неделю окажется, что панель вам не подошла — 1pctl uninstall убирает её целиком и отдельно спрашивает, удалять ли данные в /opt/1panel. Ответьте «нет», и файлы сайтов с базами останутся на месте.
Нужен сервер под панель? Для 1Panel хватает недорогого VPS от 2 ГБ RAM
Недорогие VPS →