Менеджер заметок.
Я довольно давно искал менеджер заметок после того, как ушел 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.

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

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

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