Оживляя цикл публикаций о практическом использовании Raspberry Pi, публикую статью о разворачивании на этом микрокомпьютере серверной части Leanote — аналога Evernote, доступного для установки на собственных серверах.
Что из себя представляет Evernote, думаю, рассказывать не стоит: это самый популярный и разрекламированный мультиплатформенный сервис для хранения заметок. Лично у меня он так и не зашел несмотря на неоднократные попытки начать им пользоваться, и в прошлом году я даже публиковал пост про более удачные альтернативы Evernote.
И уже после публикации того поста я обнаружил Leanote — самый удачный аналог из всех на мой взгляд.
Leanote хорош сам по себе, но поистине превосходным вариантом его делает возможность развертывания на собственных серверах. И в роли такого сервера может выступать в том числе и Raspberry Pi.
Содержание
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Raspberry Pi 3 Model B
- Локальная сеть
Напоминаю, что подробное руководство по установке и настройке Raspbian находится здесь, а тут находится мануал по удаленному управлению «малиной» по SSH-протоколу.
Приложения Leanote для всех платформ можно скачать с этой страницы.
Почему именно Leanote
Leanote — китайская разработка, она достаточно малоизвестна в англоязычном интернете и еще менее известна у нас.
Почему же я отдаю предпочтение именно этому приложению?
«Ну, во-первых, это красиво» ©.
Серьезно, интерфейс десктопного клиента Leanote — лучшее, что мне доводилось видеть среди кросс-платформенных приложений для хранения заметок. Имеется несколько предустановленных тем оформления, включая «ночные» темы с темным и менее напрягающим глаза в темноте интерфейсом.
Во-вторых, приложение функционально и продумано. Заметки можно сортировать по блокнотам и тегам, а также добавлять в отдельный список «Избранное» (Starred).
Встроенный редактор богат на функции и позволяет управлять шрифтами, их цветом и размером, цветом фона документа, рисовать таблицы, вставлять цитаты, добавлять изображения и даже вставлять в текст заметки ментальные карты, которые рисуются тут же — в отдельном встроенном редакторе ментальных карт. Помимо этого к любой заметке можно прикреплять файлы.
Также имеется поддержка языка разметки Markdown. При использовании Markdown-верстки интерфейс редактора переключается в облегченный вид.
В-третьих, заметки можно экспортировать из приложения в форматах PDF или HTML, что очень удобно, когда нужно с кем-то поделиться. При конвертации в файл исходная верстка не теряется — проверял неоднократно.
В-четвертых, Leanote поддерживает все актуальные платформы.
Есть клиенты под Windows, Linux, macOS, iOS и Android, а также веб-интерфейс. Новые заметки можно создавать в оффлайн-режиме, а синхронизировать с сервером Leanote уже позднее (особенно оно актуально если сервер Leanote находится внутри локальной сети и не выведен в интернет — сильного дискомфорта это доставлять не будет).
Из странного: Leanote имеет собственную встроенную блогоплатформу, на которой можно в один клик публиковать посты из своей личной базы заметок. Китайская экзотика: кому доводилось сталкиваться с китайскими приложениями для локального рынка — те отмечают, что часто приложения бывают нагружены избыточными функциями, не имеющими никакого отношения к основному функционалу. Вот интересный пост на эту тему.
Хорошая новость в том, что хотя эта ненужная блогоплатформа и есть — интегрирована она достаточно ненавязчиво и игнорировать ее существование нетрудно. Кстати, работает она тоже на локальном Leanote-сервере, так что ваши личные данные никуда не утекут, даже если вы случайно опубликуете что-то из своих заметок.
В общем, Leanote — отличное приложение. И если под macOS еще есть способные с ним конкурировать аналоги (например, Bear выглядит очень неплохо, да и стандартное эппловское приложение «Заметки» становится все лучше и лучше с каждым новым релизом операционной системы), то под Windows достойных альтернатив нет.
Установка сервера Leanote
Установка серверного модуля Leanote крайне проста и займет не более 15 минут если делать по моей инструкции.
Начнем традиционно с обновления установленных пакетов:
sudo apt-get update sudo apt-get dist-upgrade
После чего потребуется установить базу данных MongoDB, именно она используется Leanote в работе:
sudo apt-get install mongodb
Теперь создадим директорию для хранения файлов этой БД:
mkdir mongodb cd mongodb mkdir data
В данном случае будет создана папка /mongodb/data в домашней директории пользователя (/home/pi). Ее можно разместить и в другом месте, это не принципиально.
Теперь укажем MongoDB где находится директория под ее файлы баз данных:
mongod --dbpath /home/pi/mongodb/data
Если директория размещается в другом месте — этот путь нужно поправить.
Теперь запустим MongoDB:
mongo
И введем команду
show dbs
Если при установке MongoDB не возникло никаких проблем, то отобразится что-то вроде этого:
Пока что с MongoDB делать больше нечего, поэтому выходим из ее интерфейса через комбинацию Ctrl+C.
Теперь пришло время установить сам серверный модуль Leanote. Его нет в репозиториях и он скачивается в виде обычного архива:
wget https://sourceforge.net/projects/leanote-bin/files/2.5/leanote-linux-arm-v2.5.bin.tar.gz/
Версия 2.5 актуальна на момент написания данной статьи, а вообще ссылку на самую свежую версию всегда можно взять с этой страницы.
Распаковываем архив:
tar -xzvf leanote-linux-arm-v2.5.bin.tar.gz
В архиве серверного модуля содержится бэкап БД, содержащий в себе профиль администратора. Восстанавливаем этот бэкап в MongoDB:
mongorestore -h localhost -d leanote --dir /home/pi/leanote/mongodb_backup/leanote_install_data/
Теперь запустим MongoDB:
mongo
И переключимся в ней на БД leanote:
use leanote
После чего опять выходим из интерфейса по Ctr+C.
Если все прошло правильно, то на экране должно отобразиться примерно следующее:
Все, установка завершена. Запускаем сервер:
cd /home/pi/leanote/bin bash run.sh &
При этом на экране отобразится следующее:
На этом все манипуляции с Raspberry Pi завершены.
Настройка сервера Leanote
Сервер Leanote поднят и доступен по адресу http://ip-адрес-raspberry-pi:9000
В веб-интерфейсе нужно залогиниться (Sign In) под администратором.
Логин: admin
Пароль: abc123
В принципе под учетной записью администратора можно сидеть самому: если поднятый сервер работает на обслуживание только одного пользователя, то нет никакой разницы под каким логином и паролем размещать свои заметки.
Но все же правильнее будет создать себе отдельную учетную запись. Для этого нужно зайти в админ-панель:
И добавить нового пользователя с никнеймом и паролем на свой выбор:
Все, на этом настройка завершена окончательно. Другие пункты админ-панели трогать не нужно — при локальном использовании и отсутствии «чужих» пользователей в системе они не нужны.
Теперь можно логиниться в любое из приложений Leanote (десктопное или мобильное) под учетными данными и начинать пользоваться:
Автозагрузка сервера
Напоследок осталось только добавить сервер Leanote в автозагрузку чтобы не включать его вручную после каждой перезагрузки Raspberry Pi. Для этого нужно открыть для редактирования файл конфигурации:
sudo nano .profile
И вписать в самый конец строку:
bash /home/leanote/bin/run.sh &
Готово. Теперь скрипт запуска сервера будет стартовать автоматически после загрузки.
Leanote и бэкапы
Все внесенные в Leanote пользовательские данные хранятся в БД. Чтобы сделать бэкап — нужно забэкапить эту БД, что делается при помощи консольной команды:
mongodump
Эта команда создает директорию «dump» в той директории, в которой вы находились на момент выполнения команды и помещает туда бэкап БД.
Восстанавливается БД из бэкапа также консольной командой:
mongorestore -h localhost -d leanote --dir /home/pi/dump/leanote/
Так что для обеспечения сохранности своих данных нужно время от времени выполнять команду mongodump и копировать файлы бэкапа на внешний носитель.
Можно даже написать скрипт, который регулярно бэкапит БД, упаковывает файлы в архив и копирует этот архив по указанному адресу.
Заключение
Вот такое self-hosted решение для организации своей базы заметок можно сделать на базе Raspberry Pi или какого-либо иного одноплатного компьютера. Leanote отлично дополняет личное облако Nextcloud, которое также способна тянуть на себе «малина».
Что можно сделать лучше:
- Разместить директории с файлами Leanote и с хранилищем MongoDB на жестком диске
Это позволит снизить износ microSD-карточки с системой. Не забудьте только переписать пути к файлам и убедитесь, что права доступа к файлам и папкам соответствуют пользователю, под которым будет запускаться сервер Leanote. - Установить 64-битную OS и 64-битную версию MongoDB
Несмотря на то, что Raspberry Pi 3 работает на 64-битном процессоре, официальная сборка Raspbian до сих пор поддерживает только 32-битную архитектуру. Переезд на 64-битную операционную систему (ей может быть OpenSUSE, Ubuntu, а недавно вроде даже появилось пересобранное любителями 64-битное ядро для самой Raspbian) позволит установить 64-битную версию MongoDB, а это в свою очередь избавит от проблем с поддержкой файлов БД размером более 2Гб.
Впрочем, Leanote прекрасно работает даже без этих действий, будучи установленной точно по приведенной выше инструкции. А главное — все ваши данные хранятся на вашем собственном «железе» и к ним не будет иметь доступа никто, кроме вас самих.
Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest
> Серьезно, интерфейс десктопного клиента Leanote — лучшее, что мне доводилось видеть среди кросс-платформенных приложений для хранения заметок.
А на MyTetra не смотрели? Очень функциональный менеджер заметок, всё хранит внутри XML, для сетевого хранения у автора есть свои наработки. Единственный серьёзный недостаток — в репозиториях его найти крайне тяжело, и под сколько-нибудь нестандартную платформу программу, скорее всего, придётся собирать руками. Но там сборка простая, кроме Qt, других зависимостей программа не тащит.
Нет, не знал о такой. Посмотрю на выходных :)
Доброго времени суток скажите пожалуйста у Вас картинки в Leanote отображаются ? у меня почему то нет
Здравствуйте.Подскажите пожалуйста,как восстановить dump?Не получается.По этой mongorestore -h localhost -d leanote —dir /home/pi/dump/leanote/ команде выдаёт ошибку.Спасибо.
P.S. Большое спасибо за интересно предоставленную информацию.
Здравствуйте, а что за ошибка?
Для начала надо проверить пути к файлам. Дамп снимается в ту директорию, из которой вы вызываете команду mongodump. Директория по умолчанию в Raspbian это /home/pi, если речь идет о другой системе или команда mongodump была вызвана с другого пути, то нужно внести соответствующие поправки в путь к файлам для mongorestore.
Здравствуйте,скажите пожалуйста в чем ошибка?
pi@raspberrypi:~/leanote/bin $ cd /home/pi/leanote/bin
pi@raspberrypi:~/leanote/bin $ bash run.sh &
[1] 8294
pi@raspberrypi:~/leanote/bin $ run.sh: строка 18: 8301 Недопустимая инструкция $script -importP ath github.com/leanote/leanote
Сейчас не могу сказать точно, что-то не так в установочном bash-скрипте.
На данный момент самая свежая версия Leanote — 2.6.1, а в статье описывается процесс установки версии 2.5. Попробуйте скачать версию 2.6.1 и попробовать установить ее (все шаги без изменений, только архив скачивается другой и, соответственно, меняется название директории в которую он распаковывается).
Актуальные версии Leanote находятся здесь:
https://sourceforge.net/projects/leanote-bin/
Dmitry, спасибо!
Я попробовал, но ошибка прежняя. Скажите пожалуйста, Raspbian Stretch Lite вы использовали?
Разобрался сам. Вообще спасибо за статью!
Странно, что если на PC под W7 приложение закрываешь сервер Leanote перестает слушать на 9000 порту, т.е 1239 процесс убивается
pi@raspberrypi:~/leanote/bin $ ps -ax|grep leanote
1239 pts/0 Sl 0:01 /home/pi/leanote/bin/leanote-linux-arm -importPath github.com/leanote/leanote
1287 pts/0 S+ 0:00 grep —color=auto leanote
Добрый день, Сергей, Дмитрий.
Столкнулся с такой же ошибкой:
pi@raspberrypi:~/leanote/bin $ cd /home/pi/leanote/bin
pi@raspberrypi:~/leanote/bin $ bash run.sh &
[1] 8294
pi@raspberrypi:~/leanote/bin $ run.sh: строка 18: 8301 Недопустимая инструкция $script -importP ath github.com/leanote/leanote
Увы, не могу сам понять где ошибка. Можете подсказать?
Добрый день.
Устанавливал версию 2.6.1
pi@raspberrypi:~/leanote/bin $ run.sh: line 18: /home/pi/leanote/bin/leanote-linux-amd64: cannot execute binary file: Exec format error
http? серьезно? Вы же вроде радеете за безопасность.
Так локальный сервер же, был бы он доступен извне — другое дело.