company_banner

Открытая платформа для своих: как и зачем использовать Yunohost

  • Tutorial

Знакомимся с дистрибутивом: рассматриваем возможности, оцениваем простоту настройки и приложения, которых на платформе более 200. А также устанавливаем Yunohost на VPS или свою ВМ. 

Дорогие друзья, я обратил внимание, что на Хабре обошли стороной хороший продукт, достаточно мощный и с отличным потенциалом — это Yunohost. Проект появился на свет в 2012 году. Продукт позиционируется как операционная система, основанная на Debian и предназначенная для хостинга в первую очередь своих личных проектов, проектов друзей, семьи или связанных с ними небольших компаний. Я использую его ежедневно в своем ИТ-быту с 2018 года, и у меня накопился опыт, которым хочу поделиться. 

История знакомства


Мое знакомство с Yunohost началось, как ни банально, с необходимости и лени. Пару лет назад мне пришлось искать альтернативу популярным облакам. Я выбирал программный продукт, который сочетал бы в себе функции облака, несложно ставился и был бы прост в администрировании. 

Не испытываю страха перед терминалом, но наличие UI — это тоже плюс (а почему бы и нет?). Так выбор пал на Yunohost

Разработчик позиционирует свой продукт как операционную систему, основанную на Debian и предназначенную для хостинга в первую очередь своих личных проектов, проектов друзей, семьи или связанных с ними небольших компаний. 

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

Как можно использовать Yunohost


Я бы рассматривал его для личного применения — для учебы, хранения своего кода, загрузки видео с хостингов, в качестве облачного хранилища для доступа отовсюду и собственного почтового сервера. 

Но если вы владелец небольшой компании и администрируете веб-сервисы сами, то данный продукт сильно упростит вашу работу. Вы можете организовать свой Git-сервер и работать в команде над кодом. 

Можете установить Wekan, распределять задачи и планировать работу своих сотрудников. Хостить свой сайт на данной платформе. Установить приложение NextCloud, получить свое полноценное облако и принимать материалы от заказчиков, а также делиться макетами с помощью публичных ссылок.

Самый большой плюс от использования Yunohost — безопасность ваших данных. Макеты, код, etc — все это находится в ваших руках в одном месте, а не разбросано по интернету на разных сторонних сервисах.

Перейдем к практике и оценим простоту работы с этой платформой. 

Начало работы: установка на VPS




Вариантов установки Yunohost несколько: это VirtualBox, использование в качестве основной системы на обычном компьютере (загрузка и установка с USB stick), образы для ARM-платформ — Raspberry Pi / OrangePi PC и это не все. Мы будем рассматривать установку на удаленный компьютер, в нашем случае VPS. Установка на виртуальную машину на своем сервере ничем не отличается.

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

– 1 Гб оперативной памяти

– 1 ядро. Его вполне хватит для наших целей

– HDD 20 Гб. Этого для начала хватит, потом можно расширить. Кстати у ruVDS есть опция, которую практически никто на рынке не предоставляет — «Большой диск» до 18 Тб.

– ОС Debian 10. Обязательно данная версия, на другой «не взлетит».


Заказываем машину, ждем, по готовности в личном кабинете получаем связку логин/пароль для доступа по SSH.

Далее нужно подключиться к серверу удаленно. Я использую iTerm, вы можете использовать любое другое ПО по вкусу. Также это можно сделать через VNC-консоль сервера, доступную в личном кабинете.

ssh root@<IP_вашего_сервера>, вводим пароль, подключаемся

Обновляем систему

apt update

apt upgrade -y

Устанавливаем curl

apt install curl -y

Получаем скрипт и устанавливаем

curl https://install.yunohost.org | bash

В процессе установки скрипт выдаст уведомление о перезаписи некоторых конфигурационных файлов, а также настройкой SSH-сервера — с ним нужно согласиться. Далее он сам установит все необходимые пакеты. Никаких запросов больше не будет.



Установка занимает от 10 до 15 минут. После успешной, а по другому у меня ни разу не получалось, установки вы получите уведомление, что система установлена и доступна по адресу: https://<адрес_вашего_сервера>


Настройка бэкенда закончена, все дальнейшие манипуляции будут производиться через UI.

Вводим в строку браузера https://<адрес_вашего_сервера> или доменное имя, если у вас уже настроен DNS, как в моем случае. 

Игнорируем уведомление о самоподписанном сертификате и видим приветствие с приглашением пройти короткую настройку:

1. Указываем доменное имя при наличии, которое потребуется для автоматического получения сертификата с Let'sEncrypt:


2. Задаем логин и пароль администратора: 


На этом этапе начнется процесс постустановочного конфигурирования:


Все, система установлена.По умолчанию при переходе по адресу сервера открывается панель авторизации пользователей, админу в ней авторизоваться не получится.

Поэтому мы переходим по адресу: 

https://<адрес_вашего_сервера>/yunohost/admin

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


Создание пользователя


Для начала работы необходимо создать нового пользователя, указав имя и пароль.

«Пользователи → Новый пользователь» 

Пользователь сразу получит почту вида @<domain_name>, но её потом можно изменить, если вы решите добавить пользователю отдельный домен.

Yunohost — система гибкая и позволяет управлять пользователями, доменными именами, установленными приложениями и безопасностью. Интерфейс простой, в чем можно убедиться на скринах с процесса установки, но при этом функциональный и удобный. Все элементы управления размещены в местах, где их ожидаешь увидеть, поэтому работать комфортно.

В разделе меню администратора

«Пользователи → Manage groups and permissions»

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


Управление конкретным пользователем осуществляется в разделе:

«Пользователи → Имя_пользователя»

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


Работа с приложениями


Но самое главное в Yunohost — это приложения. Разнообразие воистину поражает. На момент написания статьи их было 213. 

Все приложения протестированы и ранжированы по качеству интеграции с сервисом. Рейтинг составляет сам разработчик платформы, и место в нем зависит от того, насколько полно приложение использует возможности платформы. В этом списке — авторизация через SSO, резервное копирование, восстановление и прочие возможности. Со списком приложений можно ознакомиться из панели администратора: 

«Приложения → Установить»

Все они представлены в официальном каталоге

Процесс установки приложений идентичен, поэтому мы рассмотрим его только на основе Gitea — git-сервере.

Для установки переходим в: 

Приложения → Development 

находим Gitea и нажимаем Установить:



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

Обратите особое внимание на возможность доступа к приложению напрямую. Если галочку не установить, то доступ к приложению будет только у пользователей по токену, генерируемому системой. 

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


Далее нажимаем Установить, ждем пару минут и все, приложение доступно для доступа из пользовательского интерфейса: 





Аналогичным образом устанавливаются и другие приложения. Правда, просто?

Вернуться из приложения в основную панель можно, нажав на серый квадратик Yunohost в правом нижнем углу (он не статичный, и его можно передвинуть в более удобное место).

Отдельно хочу остановиться на Alltube — приложении для загрузки с различных видео-хостингов с простым интерфейсом, построенном на youtube-dl. Приложение установится, но сразу из коробки оно не заработает. При попытке получить информацию о видео будет отображена ошибка.



Ошибка (YouTube said: Unable to extract video data)

Я потратил много времени на поиск решения, но проблема оказалась простой, а решение несложным. Ошибка связана с тем, что приложение включает в себя устаревшую версию пакета youtube-dl. Для исправления после установки нужно удалить папку с пакетом и клонировать самую новую с официального git'а. Приступим к починке:

  1. Подключаемся по ssh к серверу
  2. Переходим в папку приложения: cd /var/www/alltube/vendor/ytdl-org/
  3. Удаляем все внутри: rm -r *
  4. Клонируем: git clone github.com/ytdl-org/youtube-dl.git

Обновляем страницу и видим, что все заработало. 

Приложения, на которые стоит обратить внимание:


  • AllTube — загрузка видео с видеохостингов;
  • PHP Server Monitor — мониторинг сайтов, сервисов, оборудования. Может проверять как простым ping, так и искать определенный паттерн на странице и отправлять уведомления об ошибках в Telegram;
  • osTicket — тикет-система для общения с клиентами;
  • Gitea — git-сервер;
  • lstu — укорачиватель ссылок;
  • Lufi — сервис для обмена файлами без регистрации;
  • Nextcloud — онлайн-хранилище, обмен файлами. По сути это полноценная платформа, и о ее возможностях написано много статей
  • Etherpad MyPads — онлайн-блокнот с возможностью одновременного редактирования и внутренним чатом между участниками;
  • Rainloop — Веб-почта с современным интерфейсом;
  • Zabbix — Мониторинг серверов, сервисов, IoT устройств.
  • Transmission – BitTorrent–клиент.

Резервное копирование


Мы установили Yunohost на наш VPS, и он успешно работает. Теперь самое время подумать о резервных копиях и рассмотреть порядок восстановления.

Для создания резервной копии нужно перейти в раздел

«Резервное копирование → Новое резервное копирование»

Нам будет предложено, что конкретно мы хотим резервировать. Я обычно делаю полную копию, но возможны варианты. После успешного создания резервной копии будет создан архив по пути /home/yunohost.backup/archives/, который можно загрузить на компьютер из веб-интерфейса. 

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



Восстановление


Чтобы восстановить данные или сменить VPS, нужно установить Yunohost на новой машине до момента, когда вы уже можете зайти в панель администратора. 

Затем либо загрузить по ssh, либо подключиться по sftp и загрузить архив с резервной копией по пути /home/yunohost.backup/archives/.

Теперь вы можете зайти через UI в 

«Резервное копирование → Local archives»,

выбрать архив с вашей резервной копией и нажать «Восстановить».

И это все!

Я искренне надеюсь, что мой опыт и данная статья будут полезны и вы сможете легко сделать собственное облако, хранить свой код в удобном git'е, а файлы в Nextcloud, разместить сайт на WordPress и развернуть свой почтовый сервер.

RUVDS.com
VDS/VPS-хостинг. Скидка 10% по коду HABR

Похожие публикации

Комментарии 11

    +3

    люблю подобные панельки
    но стараюсь не юзать. очень часто эти панели превращают конфиги в чёрт пойми что, переносят их в нестандартные места, вместо systemd юнитов используют пинающий какие-то свои скрипты cron…
    в этом плане мне нравится yast, это конечно не совсем то же самое, но в плане гуёвого редактора конфигов он прекрасен

      +2

      На удивление, конкретно у данной панели все прямо очень понятно со структурой. По крайней мере у меня сложностей вообще не было. Даже конфиги nginx лежат там, где их ожидаешь увидеть, а не, как например у vestacp – если один раз нашел, второй раз все равно искать как первый :)

        +1

        уверен что такой ворчун как я всё равно нашёл бы к чему придраться
        но меня радует факт что создатели подобных панелек стали задумываться о соответствии

      0

      Список приложений выглядит как дикая каша из всего, что смогли туда запихать. Особенно не понимаю, зачем на хостинг ставить single player HTML игры. Скорее всего, интеграции между сервисами никакой нет (web IRC client не подтянет реквизиты подключения из запущенного рядом IRC сервера, home automation platform не подключится к соседнему MQTT серверу, запущенную базу данных никто не найдёт, ...)


      С другой стороны, если хочется поставить несколько программ из этого списка и поменьше при этом напрягаться — наверное оно хорошо и экономит уйму времени.

        +1

        Да, приложения изолированы друг от друга, но с учётом того, что на одном сервере может быть несколько людей, то это оправдано.
        Что касается количества приложений — разработчик конкретного приложения сам производит интеграцию с yunohost но основе его api, по этому и много чего есть.

        0
        А у кого-то получилось завести Mattermost в этой коробке нормально?
        Админ юзер может входить без проблем, а любых заведенных обычных юзеров он не пускает.
          +1

          Не пускает пользователей, которые созданы в самой yunohost?
          Если опираться на их git, то там указано, что ldap не поддерживается. Поэтому пользователей нужно создавать конкретно в этом приложении. Если ответа никто не даст, завтра смогу поковыряться...

            +1
            Как я и предположил, пользователь создается внутри Mattermost.
            Вам нужно авторизоваться под учетной запись администратора. В левой колонке при нажатии на «Гамбугер» > System Console > Authentication > Sign Up. Выставить Enable Account Creation = true; Enable Email Invitations = true и не забыть нажать Save.
            Далее для приглашения вернуться в окно Team, «Гамбугер» > Invite People. В появившемся окне скопировать ссылку и отправить пользователю для регистрации или ввести его email и пригласить.

            UPD Спасибо за наводку на это ПО, не знал о нем, пользовался Synology Chat, но это выигрывает сильно
              0

              То, что можно всем управлять внутри маттермоста понятно, непонятно тогда зачем мне yunohost как таковой и декларация управления юзерами и наличия SSO в нем.
              Толку, к сожалению, от этого решения нет.

                +1
                Тогда я просто не понял ваш изначальный вопрос.

                В данном случае yunohost выступает в качестве «песочницы» для легкой установки ПО. Оно позволит установить приложение, и дальше уже работать с ним – опять же сделать бекап всех приложений одним разом. Управлять всеми приложениями из «одного окна». Грубо говоря аналог настольной ОС, но через web.

                Но как и с любой панелью – Вы конечно можете поставить все сервисы и самостоятельно, но это не будет управляться централизовано. Те же бэкапы нужно будет делать отдельно в каждом приложении или, например, через панель управления сервером. Нужно будет настраивать nginx на каждый сервис, открывать ПО-специфические порты и пр… (это чисто для примера)

                По поводу SSO – это уже к разработчикам, почему они не провели полную интеграцию.
                  +1
                  Проблема в том, что в маттермосте LDAP это платная фича, я изначально чет понадеялся что в YunoHost эта проблема как-то решена.

                  На самом деле способ сделать прозрачную авторизацию есть — но ценой ресурсов сервера.
                  Если поставить гитлаб, то он с SSO интегрируется автоматом.
                  А маттермост уже по OAuth с гитлабом тоже дружит без проблем.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое