Standard Notes на Ubuntu 24.04: пошаговая установка
Заметки в облачных сервисах — это компромисс: либо доверяете шифрование чужой компании, либо храните текст в открытом виде и надеетесь, что база данных никогда не утечёт. Standard Notes решает эту дилемму сквозным шифрованием на клиенте и открытым форматом хранения, а если поднять собственный сервер синхронизации, из уравнения пропадает и третья сторона — данные физически лежат там, где вы сами их разместили. Ниже — рабочая инструкция по установке сервера Standard Notes на чистой Ubuntu 24.04, от подготовки системы до HTTPS и бэкапов.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Standard Notes и зачем свой сервер
Standard Notes — приложение для заметок с открытым исходным кодом, которое шифрует данные end-to-end ещё до отправки на сервер: сервер видит только зашифрованный блоб и метаданные, ключ шифрования никогда его не покидает. Это принципиально отличает его от сервисов, где шифрование «на стороне сервера» — сервер там технически может прочитать содержимое.
У официального облака Standard Notes (standardnotes.com) есть бесплатный и платный планы, и для большинства пользователей его достаточно. Но есть причины поднять свой сервер:
- Полный контроль над данными — заметки физически лежат на вашем VPS, а не в чужом дата-центре.
- Долговечность формата — Standard Notes с самого начала проектировался вокруг простого текстового формата и локальных бэкапов, так что даже если завтра проект исчезнет, ваши данные останутся читаемыми.
- Отсутствие лимитов подписки — self-hosted сервер не завязан на тарифные ограничения официального облака.
- Приватность метаданных — количество заметок, частота синхронизации и структура тегов не попадают к третьей стороне.
Обратная сторона — ответственность за апдейты, бэкапы и доступность сервиса ложится на вас. Если это ваша первая практика с self-hosted приложениями на Ubuntu, рекомендую сначала пройти базовую настройку сервера и безопасности — она закрывает азы, которые пригодятся для любого сервиса, не только для Standard Notes.
Подготовка VPS и первичная защита
Для сервера синхронизации Standard Notes хватает скромного VPS: 1 vCPU, 2 ГБ RAM и 20–25 ГБ диска вполне достаточно для личного или семейного использования. Если планируете сервер на команду в 10–20 человек с активной синхронизацией вложений, разумно взять 2 vCPU и 4 ГБ RAM с запасом.
Перед установкой самого приложения выполните минимальный набор действий:
apt update && apt upgrade -y
adduser deploy
usermod -aG sudo deploy
Дальше — вход по SSH-ключу вместо пароля и настройка файрвола. Если ещё не делали этого на новом сервере, оба шага подробно разобраны в отдельных статьях блога про подключение по SSH-ключу и настройку UFW на Ubuntu 24.04. Коротко для UFW применительно к этому кейсу:
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Порт для самого Standard Notes сервера (обычно 3000 внутри контейнера) наружу открывать не нужно — к нему будет обращаться только обратный прокси на том же хосте.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Docker и Docker Compose
Официальный способ развёртывания Standard Notes сервера — Docker Compose, это же рекомендует и сама команда проекта в документации self-hosting. Ставим Docker по стандартной процедуре:
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверка:
docker --version
docker compose version
Если хотите управлять Docker без постоянного sudo, добавьте пользователя в группу docker:
usermod -aG docker deploy
После этого перелогиньтесь под deploy, чтобы изменение группы вступило в силу. Если процесс установки Docker кажется непривычным или хочется больше деталей по нюансам — есть отдельная пошаговая статья про установку Docker на Ubuntu 24.04 с нуля.
Развёртывание Standard Notes Server
Standard Notes раздаёт официальный репозиторий с готовым docker-compose набором (сервис API/синхронизации, база данных и кэш). Клонируем его и настраиваем окружение:
cd /opt
git clone https://github.com/standardnotes/server.git standardnotes
cd standardnotes
cp .env.sample .env
Файл .env в этом репозитории — основной источник конфигурации: там задаются секреты для JWT и шифрования на стороне сервера, параметры подключения к базе данных, порт, на котором слушает сервис, и адрес, по которому клиенты будут его находить. Обязательно смените дефолтные значения секретов на случайные строки — не используйте примеры из .env.sample в продакшене:
openssl rand -hex 32
Сгенерированное значение подставьте в соответствующие переменные .env (секреты для аутентификации и шифрования). Список переменных периодически меняется между релизами репозитория, поэтому перед запуском стоит свериться с актуальным .env.sample именно той версии, которую вы клонировали — не полагайтесь слепо на инструкции годичной давности.
Ключевая переменная, которую нужно выставить осознанно — публичный URL сервера (что-то вроде SERVER_URL или аналогичной по смыслу), потому что именно на него клиенты Standard Notes будут отправлять запросы синхронизации. Указывайте туда конечный домен с https://, даже если на момент первого запуска SSL ещё не настроен — обратный прокси мы поднимем следующим шагом.
Запуск:
docker compose pull
docker compose up -d
Проверьте, что контейнеры поднялись и не падают в рестарт:
docker compose ps
docker compose logs -f
Если всё в порядке, сервис слушает на локальном порту (по умолчанию — 3000), доступном пока только на самом сервере. Наружу мы его не публикуем напрямую — это сделает обратный прокси с HTTPS.
HTTPS и обратный прокси
Отдавать API синхронизации по HTTP нельзя — клиенты Standard Notes ожидают TLS, да и сами шифрованные данные передаются по защищённому каналу не просто для галочки: без HTTPS открыт хотя бы канал метаданных и токенов сессии. Проще всего поднять Caddy — он сам получает и продлевает сертификат Let's Encrypt без ручной возни с certbot:
apt install -y caddy
Конфиг /etc/caddy/Caddyfile:
notes.example.com {
reverse_proxy localhost:3000
}
Подставьте свой домен вместо notes.example.com и убедитесь, что A-запись домена уже указывает на IP сервера — иначе Caddy не сможет выпустить сертификат. Перезапуск:
systemctl restart caddy
systemctl status caddy
После этого сервер должен открываться по https://notes.example.com с валидным сертификатом. Если предпочитаете Nginx или хотите разобраться, чем один вариант отличается от другого, в блоге есть детальный разбор Caddy с автоматическим SSL на Ubuntu 24.04.
Не забудьте, что значение SERVER_URL (или аналогичной переменной) в .env должно совпадать с этим публичным адресом — иначе клиенты будут получать ошибки при попытке синхронизации, а некоторые операции (например, выпуск сессионных токенов) молча ломаются из-за несовпадения ожидаемого и фактического origin.
Подключение клиентов и перенос заметок
Standard Notes — кроссплатформенное приложение: десктоп-клиенты для Windows/macOS/Linux, мобильные приложения для iOS/Android и веб-версия на app.standardnotes.com. Чтобы указать клиенту свой сервер вместо официального облака:
- Откройте приложение и на экране входа/регистрации найдите пункт смены сервера синхронизации (обычно это ссылка вида «Advanced Options» или «Custom Server» рядом с формой логина).
- Укажите публичный URL вашего сервера — тот же
https://notes.example.com, что задан в.env. - Зарегистрируйте новый аккаунт — он создаётся именно на вашем сервере, а не на официальном.
Если у вас уже есть заметки в официальном облаке и вы хотите перенести их на свой сервер, самый надёжный способ — экспорт в незашифрованном виде (Settings → Export Data) с последующим импортом того же файла в аккаунт на самостоятельном сервере. Прямой миграции между серверами «в одно действие» в приложении нет — экспорт/импорт остаётся штатным способом переноса.
Для организации заметок пригодятся встроенные теги, смарт-теги (сохранённые фильтры) и полнотекстовый поиск — они работают локально на клиенте и не требуют дополнительной настройки на сервере.
Бэкапы, обновления и мониторинг
Self-hosted сервис без бэкапов — это не решение, а отложенная проблема. У Standard Notes данные хранятся в базе данных контейнера, поэтому регулярный дамп обязателен:
docker compose exec db mysqldump -u root -p standardnotes > /opt/backups/standardnotes_$(date +%F).sql
Уточните имя сервиса базы данных и пользователя по вашему docker-compose.yml — они могут отличаться в зависимости от версии репозитория. Дамп стоит дополнить архивацией самой директории /opt/standardnotes (включая .env — без него дамп базы бесполезен, так как теряются секреты шифрования). Практику регулярных автоматических бэкапов на Ubuntu удобно поставить на cron — процесс с нуля описан в статье про автоматические бэкапы на Ubuntu 24.04.
Обновление сервера — это обновление образов и пересоздание контейнеров:
cd /opt/standardnotes
git pull
docker compose pull
docker compose up -d
Перед обновлением на продакшен-сервере всегда делайте свежий бэкап базы — откат к предыдущей версии образа проще, чем восстановление повреждённых данных после неудачного апдейта.
Из мониторинга минимально достаточно проверять docker compose ps на предмет рестартующихся контейнеров и настроить внешний аптайм-чекер, который бьёт по вашему домену раз в несколько минут и уведомляет, если сервис недоступен.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Нужен ли мощный сервер для Standard Notes?
Нет, это лёгкий сервис — 1 vCPU и 2 ГБ RAM достаточно для личного использования и небольшой команды.
Можно ли использовать SQLite вместо полноценной СУБД?
Официальный docker-compose набор рассчитан на реляционную базу данных из состава стека; менять её на SQLite — нестандартный сценарий, требующий ручных правок конфигурации, и я бы не рекомендовал так делать на проде.
Что будет с моими заметками, если сервер выйдет из строя без бэкапа?
Заметки будут потеряны безвозвратно — сервер не хранит резервных копий сам по себе, это ответственность администратора.
Обязательно ли использовать HTTPS?
Да. Клиенты Standard Notes ожидают защищённое соединение, а без него вы отправляете токены сессии и метаданные в открытом виде — сами зашифрованные заметки при этом останутся нечитаемыми для перехватчика, но безопасность сессии будет под угрозой.
Чем self-hosted Standard Notes отличается от Joplin Server?
Оба шифруют данные на клиенте и позволяют держать свой сервер синхронизации, но у Standard Notes упор сделан на минимализм и долговечность простого текстового формата, а у Joplin — на богатую поддержку заметок с вложениями и Markdown-рендерингом «из коробки».
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →