Как стать автором
Обновить

Open source Self-Hosted убийца убийц Notion. Как установить?

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

Менеджер заметок.

Я довольно давно искал менеджер заметок после того, как ушел Notion и заблокировал мой аккаунт. Я перепробовал довольно много всякого. Где-то меня не устраивал интерфейс, где-то глючная P2P-синхронизация, где-то отсутствие нативных приложений.

В итоге я довольно длительное время пользовался Obsidian’ом. Но что-то я так и не смог к нему привыкнуть. Не хватало возможности поделиться заметкой, костыльная синхронизация, которую Yandex мне в какой-то момент поломал, ну и куцый формат хранения. Короче, для того чтобы его допилить до удобоваримого состояния, требовалась куча плагинов, которые необходимо вручную синхронизировать между устройствами. Надоело, и я снова отправился в поиск.

Пока что остановился на Joplin. Он довольно просто и быстро разворачивается. Есть приложения под все платформы, которые я использую. Вполне нормально работает без интернета и поддерживает формат заметок, в котором можно поставить 2 картинки в ряд.

Скажу сразу: я пока что Obsidian’ом пользовался сильно дольше, но пока что кажется, что Joplin закрыл все мои потребности. А пока — как его развернуть.

Приготовления

Первое, что нам надо, — домен, для того чтобы можно было развернуть сервер синхронизации с админкой с HTTPS. Регистрируем где хотим.

Дальше — хостинг. Понятное дело, тоже любой. Я тестирую хостинг от одного из новых игроков на рынке, который дает фри-тир на год за 5к, развернул на нем.

Установленная на машину операционная система с Docker и Docker Compose. А также Nginx и Certbot.
После того как получаем IP на машине, стоит сразу на него создать A-запись у регистратора.

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

1. Создаем директории и файлы

sudo mkdir /opt/joplin
cd /opt/joplin/
sudo touch joplin-server.yml

2. Открываем любым текстовым редактором joplin-server.yml и вписываем в него следующие строки

services:
  db:
    image: postgres:13
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    restart: always
    environment:
      - POSTGRES_PASSWORD=Тут пароль
      - POSTGRES_USER=Тут пользователь
      - POSTGRES_DB=Тут имя базы

  app:
    image: joplin/server:latest
    container_name: joplin-server
    depends_on:
      - db
    ports:
      - "8080:8080"
    restart: always
    environment:
      - APP_PORT=8080
      - APP_BASE_URL=тут url вида https://example.com
      - DB_CLIENT=pg
      - POSTGRES_PASSWORD=Тут пароль от базы
      - POSTGRES_DATABASE=Название базы
      - POSTGRES_USER=Пользователь базы
      - POSTGRES_PORT=5432
      - POSTGRES_HOST=db

Разумеется, вы можете поменять порты базы, версии, настроить что-нибудь ещё, если этого захотите. Но этого конфига будет достаточно для того чтобы запустить сервер синхронизации.
3. Поднимаем наши контейнеры и проверяем что они запустились

sudo docker compose -f joplin-server.yml up -d
sudo docker ps

Nginx Reverse Proxy

В целом, сервер-то уже работает, но он сейчас работает по HTTP. Я не пробовал, но, возможно, приложения не будут с таким работать, а если и будут — это небезопасно. Так что настраиваем Nginx. В целом можно поставить Traefik, Caddy или что-то более модное.

1. Создаем файл конфигурации

sudo touch /etc/nginx/conf.d/joplin-server.conf

2. Открываем и пишем следующие строки

server {
  server_name example.com; // Тут домен  

  error_log /var/log/nginx/joplin-server.error;

  location / {
    proxy_pass http://127.0.0.1:8080; // Тут поменять порт, если меняли в Docker Compose файле
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

3. Сохраняем файл и проверяем, нет ли ошибок

sudo nginx -t

Если ошибок нет - пререзагружаем сервис и идем проверять админку.

sudo service nginx restart

4. Генерируем certbot'ом ключи и еще раз перезагрущаем nginx сервис

sudo certbot -d example.com -m admin@example.com # не забываем менять на актуальные данные
sudo service nginx restart

Ну и в целом-то всё. Можно логиниться на сервер. Переходим по адресу и логинимся:
admin@localhost admin. Сразу меняем пароли на нормальные. Также можно изменить email. Но так как я не настраивал почтовый сервер — письмо с подтверждением не ушло, однако ссылку для подтверждения можно посмотреть в админке во вкладке Emails.

bed87b4e72b3baea641c0d9b2a31df83.png
Интерфейс админки

С темной темой выглядит странно. Теперь скачиваем приложения на все что хотим, идем в настройки и настраиваем синхронизацию.

71211e578e26a5cb08d83169687792b5.png
Окно настроек

У нас есть готовый сервер синхронизации, который мы мейнтейним самостоятельно. Можем просматривать все файлы, делать бэкапы самостоятельно и иметь все проблемы, присущие self-hosted решениям.

Общий вид
Общий вид

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

А ну и да, конечно же подписывайтесь на телегу https://youtu.be/dQw4w9WgXcQ?si=HaFOkir0fWJPF9ZO.

Теги:
Хабы:
+9
Комментарии70

Публикации

Ближайшие события