Веб-панель управления для небольших серверов Debian и Ubuntu.
Панель написана на PHP, взаимодействие с сервером осуществляется по SSH.
Панель имеет модульную структуру и позволяет легко добавлять новые и улучшать уже имеющиеся модули.
- Управление пользователями:
- просмотр, создание, редактирование и удаление пользователей.
- Управление сайтами:
- схема работы Nginx или Nginx + Apache;
- просмотр списка сайтов;
- редактор файлов конфигурации сайтов;
- включение и отключение сайтов;
- создание файлов конфигурации из динамичных шаблонов;
- удаление сайтов.
- Управление файлами:
- просмотр списка файлов и папок;
- создание новых папок и текстовых файлов;
- просмотр и редактирование текстовых файлов;
- перемещение, копирование и удаление файлов и папок;
- управление разрешениями.
- Управление сервером SVN:
- просмотр и редактирование списка пользователей и групп;
- создание и удаление репозиториев.
- Мониторинг:
- просмотр списка процессов;
- удаление процессов;
- индикаторы использования ЦП, ОЗУ и жестких дисков.
- Управление службами: запуск, остановка и перезагрузка служб;
- Клиент SSH: одностороннее исполнение простых команд.
Исходный код SmallServerAdmin предоставляется на условиях лицензии Apache License Version 2.0.
См. также условия использования компонентов третьих лиц.
Требования к управляемому серверу:
- Debian 7 или Debian 8, или Ubuntu Server 16;
- OpenSSH >= 6.7;
- sudo >= 1.8.10;
- sysstat >= 11.0.1;
- Nginx >= 1.6 и/или Apache >= 2.4;
- htan-runner для ASP.NET FastCGI;
- См. также файлы README конкретных модулей.
Сама панель управления (SmallServerAdmin) может быть размещена на любом другом сервере.
Требования к серверу для размещения панели управления:
- Linux, Windows, Mac OS/OS X;
- Apache и/или Nginx, или IIS, или другой веб-сервер с поддержкой PHP;
- PHP5 >= 5.5 или PHP7 с модулем ssh2;
Примечание: Работа с младшими версиями не проверялась, но в теории возможна.
Примечание: Для Windows требуется PHP v5.5, с более старшими версиями могут быть проблемы.
Если SmallServerAdmin будет располагаться на управляемом сервере, то для её установки и настройки рекомендуется использовать HTAN:
# требуются права root
su -l root
# обновляем сервер
apt-get update && apt-get upgrade
# устанавливаем необходимые компоненты
apt-get install -y less libpcre3 git
# получаем htan в папку /usr/lib/htan
git clone https://github.com/adminstock/htan.git /usr/lib/htan
# создаем символьные ссылки на htan
[[ -f /sbin/htan ]] || ln -s /usr/lib/htan/run /sbin/htan
[[ -f /usr/sbin/htan ]] || ln -s /usr/lib/htan/run /usr/sbin/htan
# устанавливаем необходимые разрешения
chmod u=rwx /usr/lib/htan/run
# запускаем установку SmallServerAdmin
htan --yes --install=ssa --lang=ru
# обновляем сервер
sudo apt-get update && sudo apt-get upgrade
# устанавливаем необходимые компоненты
sudo apt-get install -y less libpcre3 git
# получаем htan в папку /usr/lib/htan
sudo git clone https://github.com/adminstock/htan.git /usr/lib/htan
# создаем символьные ссылки на htan
[[ -f /sbin/htan ]] || sudo ln -s /usr/lib/htan/run /sbin/htan
[[ -f /usr/sbin/htan ]] || sudo ln -s /usr/lib/htan/run /usr/sbin/htan
# устанавливаем необходимые разрешения
sudo chmod u=rwx /usr/lib/htan/run
# запускаем установку SmallServerAdmin
sudo htan --yes --install=ssa --lang=ru
Если автоматическая установка для вас не подходит или не работает, панель можно установить вручную.
Для серверов Debian нужно установить sudo:
su -l root -c 'apt-get -y install sudo'
Для Debian и Ubuntu требуется установить пакеты openssh-server и sysstat:
sudo apt-get -y install openssh-server sysstat
Также рекомендуется установить etckeeper:
sudo apt-get -y install etckeeper
[[ ! -d "/etc/.git" ]] && cd /etc && sudo etckeeper init
Для безопасности лучшим решением будет создание отдельного пользователя, от имени которого панель будет работать с сервером.
Например, создадим для SmallServerAdmin пользователя с именем ssa:
sudo adduser ssa --shell /bin/bash --no-create-home --gecos 'SmallServerAdmin'
Примечание: Вы можете использовать любое другое имя.
Предупреждение: Запишите пароль, он понадобится для настройки панели.
Затем необходимо добавить пользователя в группу sudo:
sudo usermod -a -G sudo ssa
И перезапустить sudo:
sudo service sudo restart
Если в настройках сервера SSH ограничен список пользователей, которым разрешено подключение к серверу, то необходимо добавить разрешение для созданного пользователя.
Отктройте файл /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
Найдите параметр AllowUsers
и добавьте туда созданного пользователя:
AllowUsers ssa
Если параметра AllowUsers
нет, то ничего делать не нужно.
Примечание: Список пользователей разделяется пробелами. Например: user1 user2 ssa userN
.
Общие настройки панели располагаются в файле ssa.config.php в переменной $config
.
Помимо этого, каждый сервер может иметь собственные настройки, которые располагаются в папке /servers.
Панель имеет модульную структуру и каждый модуль может иметь собственный набор параметров. Настройки модулей могут быть общими для всех серверов (в файле ssa.config.php), либо отдельными для каждого сервера.
Информацию о параметрах модулей можно найти в файлах README конкретных модулей.
Примечание: Если вы использовали HTAN для установки SmallServerAdmin, то менять параметры SSH не требуется.
Для правильной работы панели, необходимо настроить параметры соединения по SSH.
При первом открытии панели в браузере, вас должно перебросить на страницу управления серверами, где можно добавить и настроить новый сервер. Если этого не произошло, откройте или создайте файл /servers/default.php, и укажите параметры соединения с сервером.
// адрес ssh-сервера (сервер, которым требуется управлять)
$config['ssh_host'] = '192.168.56.139';
// ssh-порт (по умолчанию: 22)
$config['ssh_port'] = '22';
// имя пользователя (например: ssa)
$config['ssh_user'] = 'username';
// пароль пользователя
$config['ssh_password'] = 'password';
// требуется ввод пароля для пользователя sudo или нет
$config['ssh_required_password'] = TRUE;
Если панель испытывает трудности с подключением к серверу, то следует проверить правильность настройки сервера.
Все команды панель выполняются через sudo.
Если значение параметра ssh_required_password
равняется TRUE
,
то для каждой команды будет вводится пароль (ssh_password
).
Если на сервере нет других пользователей, то можно отключить постоянный ввод пароля.
Тогда значение параметра ssh_required_password
может равняться FALSE
.
Помимо этого, необходимо настроить sudo, чтобы он не требовал ввод пароля для пользователя:
sudo bash -c 'echo "ssa ALL=(ALL) NOPASSWD:ALL" | (EDITOR="tee -a" visudo)'
Примечание: В любом случае, для подключения к серверу будет использоваться пароль.
Предупреждение: Если на сервере много пользователей или сервер используется в качестве публичного хостинга, в целях безопасности не рекомендуется отключать требование ввода пароля.
Если у вас возникнут проблемы с настройкой доступа, обращайтесь в русскоязычную службу технической поддержки.
В параметре modules
можно указать список необходимых модулей, через запятую.
Указанный модули будут выводиться в меню навигации.
$config['modules'] = 'users,svn,sites,files,monitoring,services,ssh';
Отсутствие модулей в списке не ограничивает к ним доступ. Просто модуль не будет выводиться в меню.
В файле ssa.config.php указывается список модулей по умолчанию, который будет использоваться для всех серверов, у которых не прописан собственный список модулей.
Модули в меню будет выводиться в том порядке, в котором они указаны в списке.
Некоторые модули могут иметь виджеты, которые выводятся на главной странице панели.
Параметры виджетов находятся в корневом элементе - widgets
,
где дочерним элементом является имя модуля, к которому принадлежит виджет:
$config['widgets']['имяМодуля']
.
В настройках каждого виджета обязательно должен присутствовать параметр Enabled
,
который указывает допустимость вывода виджета на главной странице.
Дополнительно может быть указан параметр Format
, который определяет формат вывода виджета.
Помимо этого, каждый виджет может иметь собственный набор любых других настроек, информацию о которых можно найти в файле README конкретного модуля.
$config['widgets']['monitoring'] = ['Enabled' => TRUE];
$config['widgets']['services'] = [
'Enabled' => TRUE,
'Format' => '<div>%s</div>',
'NgInit' => 'SearchString = \'nginx,apache\'; Load()'
];
$config['widgets']['sites'] = [
'Enabled' => TRUE,
'Format' => '<div>%s</div>'
];