Sprut — серверный двухпанельный файловый менеджер написанный на Python и JavaScript.
Развитием и поддержкой проекта занимается известный российский хостинг-провайдер Бегет. Файл-менеджер используется у них в административной панели хостинга и доступен для любых тарифов.
Вы можете изучить его работу, зарегистрировавшись на их сайте, для новых клиентов провайдер предоставляет бесплатный 30-дневный период.
Я когда-то попробовал и влюбился в удобство их интерфейса, а Sprut восхищает меня и по сей день.
Особенно мне нравится:
- удобный оконный редактор исходного кода с подсветкой синтаксиса, автодополнением тегов и проверкой синтасксических ошибок в коде;
- возможность подключения к внешнему серверу;
- работа с различными кодировками и возможность быстро сменить кодировку файлов;
- шикарный поиск по файлам и папкам, а так же по содержимому файлов.
Я без преувеличения заявляю, что в своем роде это лучший файловый менеджер из всех которые я встречал. И Бегет мой любимый хостер именно из-за удобства их панели управления.
В какой-то момент, файл-менеджер стал доступен для установки на наши серверы, причем абсолютно бесплатно, чему я был несказанно рад.
Sprut — когда-то даже был удостоен большого обзора в журнале Хакер — апрель 2016 #4
Вот проект на GitHub в развитии которого может принять любой желающий. Так что, если нашли ошибку или появилась идея как улучшить проект вы можете обратиться к сообществу и возможно, ваша идея сделает мир чуточку лучше.
Итак, перед установкой я еще немного расскажу о том как я использую Sprut в своей работе.
Есть несколько правил связанных с безопасностью, которые лучше не нарушать.
Во-первых, никогда не устанавливайте Sprut от имени суперпользователя. Это правило можно применить к любому приложению, во многих системах пользователь root вовсе отключен по умолчанию. Я же в свою очередь еще раз напоминаю очевидные вещи. Можете написать «спасибо кэп» в комментариях.
Во-вторых, я включаю контейнер Sprut только по мере необходимости. После использования всегда отключаю и НИКОГДА не запускаю его через автозагрузку.
Использование контейнеров обычно безопасно, вы рискуете исключительно содержимым контейнера. Но здесь нужно понимать, что получив доступ к Спруту, взломщик может управлять вашей файловой системой за пределами контейнера. Если же необходимо чтобы файл-менеджер был запущен постоянно, лучше сменить порт по которому он будет доступен. Многие роботы сканируют порт по умолчанию :9443
. В конце статьи я расскажу как это сделать.
Затем взломщик может применить брутфорс (от которого Sprut никак не защищен) или заюзать уязвимость скрипта, о которых мне ничего не известно. Но как говориться: если ты не видишь суслика, это не отменяет факта его существования.
Что ж, все точки над «й» расставлены, приступаем к установке.
Первым шагом будет установка Docker, если он еще не установлен.
Если же получаем ошибку, тогда приступаем к установке Docker:
Команда для установки будет выглядеть как-то так:
1 |
wget -qO- https://get.docker.com/ | sh |
Далее, проверим Docker на работоспособность:
1 2 3 4 5 6 |
sudo docker run hello-world # Hello from Docker. This message shows that your installation appears to be working correctly. ... |
Образ Hello-World создан специально для проверки работоспособности приложения.
Следующий шаг, создание директории в которую будет установлен Спрут и переход в нее:
1 |
mkdir /opt/sprutio && cd /opt/sprutio |
И, если все прошло успешно, запускаем скрипт установки:
1 |
wget https://raw.githubusercontent.com/LTD-Beget/sprutio/master/run.sh |
Загруженному скрипту необходимо дать права на запуск:
1 |
chmod +x run.sh |
Далее мы будем запускать Sprut командой: ./run.sh
или /opt/sprutio/run.sh
.
Проверить, что Sprut работает в данный момент, можно командой docker ps
. Команда покажет запущенные контейнеры.
Сразу после установки менеджер файлов будет доступен по адресу:
1 |
https://IP_вашего_сервера:9443 |
Для файлового менеджера по умолчанию установлен самоподписанный сертификат. Если у вас есть собственный SSL-сертификат положите их в папку ssl и далее перезустить контейнеры.
Для авторизации в файловом менеджере берутся пользователи операционной системы. Это значит, что данные авторизации для пользователя который установил Sprut, так же доступны и при авторизации в менеджере.
Остановить запущенные контейнеры можно командой:
1 |
./run.sh stop |
Обновить скрипт до свежей версии:
1 |
./run.sh pull |
Полюбовавшись интерфейсом давайте сменим порт.
1 |
vi /opt/sprutio/docker-compose.yml |
Я пользуюсь редактором Vim, но вы можете воспользоваться любым-другим. Который вам привычнее. Vi — это очень старая версия Vim и установлена она на большинстве известных мне дистрибутивов Linux по умолчанию.
Если вы никогда им не пользовались, то лучше обойдитесь редактором Nano или почитайте документацию.
В блоке настроек сервера NGINX находим искомый порт и меняем на свой. Я указал :3494
, вы можете выбрать какой-то другой. :443
— менять не нужно.
Если еще не в курсе, 443 порт используется для подключения по https. А Sprut.io подгружает самоподписанный сертификат, о чем вы уже скорее всего получали предупреждение от браузера при первой загрузке. Без сертификата Спрут работать отказывается. Можно, конечно поколдовать с конфигурацией и принудительно отключить сертификат, но я пока не вижу в этом практической пользы.
1 2 3 4 5 6 |
nginx: ... ports: - "127.0.0.1:9080:80" - "9443:443" ... |
Вывод: сегодня мы познакомились с удобным файловым менеджером Sprut.io. А так же как сменить порт по умолчанию.