Предоставьте другим пользователям ограниченный контроль над вашим веб-сервером Raspberry Pi для выполнения рутинных задач.

Если вы используете Raspberry Pi в качестве домашнего сервера, вполне вероятно, что друзья и семья также будут иметь доступ к его услугам. Иногда им нужно будет выполнять некоторые рутинные задачи, требующие ограниченного контроля над сервером.

OliveTin — это автономное приложение, к которому они могут получить доступ через веб-браузер для выполнения предопределенных команд и сценариев, определенных вами.

Зачем использовать OliveTin на Raspberry Pi?

Серия одноплатных компьютеров Raspberry Pi представляет собой отличные легкие домашние серверы, и их относительно легко настроить. настроить веб-сервер Raspberry Pi.

Помимо хостинга веб-сайтов и блогов, ваш Raspberry Pi может размещать фотогалереи, кулинарные книги и онлайн-офисные пакеты. Ты можешь транслируйте фильмы и шоу на свой телевизор с помощью Jellyfin, или самостоятельно разместить библиотеку аудиокниг с помощью Audiobookshelf.

Вы также не ограничены количеством пользователей, которые у вас могут быть, поэтому, если вы не живете один, вы, вероятно, делитесь доступом к своим сервисам Raspberry Pi с другими членами вашей семьи.

Серверы, как и любой другой тип компьютеров, нуждаются в периодическом обслуживании. Вашим пользователям может потребоваться запускать или останавливать определенные службы, подключиться к VPN, резервное копирование файлов на Raspberry Pi, или проверить наличие проблем с сетью.

Если ваша семья и соседи по дому знаком с командной строкой Linux, и вы доверяете им, что они случайно или преднамеренно не испортят вашу систему, вы можете рассмотреть возможность предоставления им их собственных учетных данных SSH вместе с членство в группе судо, чтобы они могли выполнять эти задачи, не беспокоя вас.

Это заманчивое, но опасное предложение, и если что-то пойдет не так, вам придется это исправить. С помощью OliveTin вы можете определить рутинные команды, которые могут регулярно выполняться другими пользователями сервера. Затем они могут открыть веб-браузер и нажать кнопку, которая запустит команду на вашем Pi, даже не касаясь командной строки.

Как установить OliveTin на Raspberry Pi

Самый простой способ установить OliveTin — использовать Docker Compose. Если на вашем Raspberry Pi еще не установлены Docker и Docker Compose, ознакомьтесь с нашим основным руководством по как установить Docker и Docker Compose в Linux.

Подключитесь к серверу Raspberry Pi, используя Безопасная оболочка (SSH):

ssh пи@твой-локальный-pi-ip-адрес

Создайте новый каталог для OliveTin и используйте CD команда для перемещения в него:

мкдир оливтин && CD оливьетин

Используйте текстовый редактор nano, чтобы создать новый файл Docker Compose:

наноdocker-compose.yml

Скопируйте и вставьте следующее:

версия: "3.5"
услуги:
оливьетин:
container_name: оливтин
изображение: джеймсрид/оливетин
пользователь: корень
тома:
- ~/olivetin:/конфигурация
- /var/запустить /docker.sock:/var/запустить/docker.sock
порты:
- "1337:1337"
перезапуск: если не остановлен

сети:
веб:
раздел:
внешний: истинный

Теперь сохраните и выйдите из nano с помощью Ctrl + О затем Ctrl + Х.

Перед первым запуском OliveTin необходимо создать файл конфигурации. Здесь вы определите команды для запуска пользователями. Пока введите:

трогатьконфигурация.yaml

Используйте OliveTin, чтобы дать своим пользователям ограниченный контроль над сервером

В терминале введите:

docker-compose up -d 

Эта команда вызовет Docker Compose в автономном режиме. Docker Compose загрузит образы для OliveTin и настроит контейнеры. Этот процесс может занять некоторое время. Когда вы вернетесь в командную строку, проверьте, все ли работает правильно, с помощью:

docker-compose ps

Откройте браузер и перейдите к ваш-пи-местный-ip-адрес: 1337. Вы должны увидеть серую веб-страницу с нижним колонтитулом OliveTin. Теперь вы готовы приступить к определению команд для ваших пользователей.

Вернувшись в терминал, используйте nano для редактирования файла конфигурации, который вы создали ранее:

наноконфигурация.yaml

Синтаксис прост, и вы можете определить имя службы и действия, которые необходимо выполнить, аналогично следующему примеру:

действия:
- заголовок: "Перезагрузить сервер"
оболочка: перезагрузка

- заголовок: "Пинг Нетфликс"
оболочка: пингнетфликс.com

- title: Перезапустите Apache
икона: "🏁"
оболочка: перезапуск службы sudo apache2

тэто поле — это заголовок, который могут видеть пользователи, а следующая за ним команда оболочка: это команда, которая фактически будет выполняться на вашем Raspberry Pi.

OliveTin поддерживает значки в формате Unicode, и вы можете указать их HTML-код в икона раздел. Кроме того, вы можете указать полный URL-адрес изображения, которое хотите использовать. Например:

икона: '<изображениеисточник = " https://www.makeuseof.com/public/build/images/muo-logo-full-colored-light.svg"ширина = "81px"/>'

Хотя наша конфигурация дает примеры, которые перезапускают Raspberry Pi, перезапускают Apache и пингуют Netflix, на самом деле нет ограничений на то, какие команды вы можете указать. Вы можете дать пользователям кнопку, которая будет копировать фильмы из одного каталога в другой, быстро стирать и перезаписать определенные каталоги или создать переключатель уничтожения, который будет шифровать ваши устройства хранения с помощью случайный ключ.

Когда вы довольны своей конфигурацией, сохраните файл и выйдите из nano, нажав Ctrl + О затем Ctrl + Х.

Любой стандартный вывод, созданный в результате нажатия кнопки, регистрируется. Вы можете просмотреть журналы, нажав кнопку Журналы кнопка в правом верхнем углу. С помощью OliveTin вы также можете позволить пользователям давать команды, известные как аргументы, через веб-интерфейс — либо с помощью текстового поля, либо с помощью раскрывающегося списка.

Из-за опасности, связанной с тем, что неопытные пользователи могут вводить привилегированные произвольные команды непосредственно на ваш сервер Raspberry Pi, вы можете ограничить тип аргумента, который будет принимать OliveTin.

Для краткой справки, типы:

Тип

Допустимые значения

очень_опасная_raw_string

Как следует из названия, пользователь сможет ввести любой текст или команду и выполнить ее.

инт

Любое целое положительное число

ascii

Любые символы или цифры, но без пробелов и знаков препинания

ascii_identifier

Для DNS и подобных

ascii_sentence

az, 0-9, с пробелами, . и ,

URL

Веб-адрес

Определение текстового поля в вашем config.yaml файл форматируется следующим образом:

действия:
- заголовок: Эхо что-то в командной строке
икона: "⛔"
оболочка: эхо {{ сообщение }}
аргументы:
- название: сообщение
тип: очень_опасная_raw_string

Текстовое поле появится, когда кто-то нажмет соответствующую кнопку, и позволит любому пользователю в вашей локальной сети выполнить произвольный код через браузер. Это не совсем хорошая идея.

OliveTin упрощает пользователям выполнение основных задач на вашем сервере Raspberry Pi

Raspberry Pi — это идеальная платформа домашнего сервера для хостинга услуг для вашей семьи, а OliveTin позволяет им легко выполнять простое обслуживание, не беспокоя вас.

На Raspberry Pi вы можете запустить тысячи самостоятельных проектов, которые принесут пользу вашей семье. Проведите небольшое исследование и узнайте, за какие платные услуги вы могли бы принять гостей самостоятельно!