Индекс журналаDockup / заметка с места
Note / self-host-trilium

Как разместить Trilium Notes на собственном сервере в 2026 году: каталог данных, WebSockets и резервные копии

Практическое руководство по самостоятельному размещению Trilium Notes: Docker, порты, постоянное хранение данных, TLS, безопасность, резервное копирование и проблемы, мешающие использованию в production.

Контейнер Trilium Notes может быть в рабочем состоянии, даже если основная пользовательская операция не выполняется. Для Trilium Notes скрытая причина сбоя обычно заключается в том, что каталог данных подключён не по тому пути или недоступен для записи. В этом руководстве в качестве приёмочного теста используется сценарий «создать связанные заметки, добавить вложение и связь, найти их и проверить историю ревизий после перезапуска», а развёртывание строится исходя из этого результата.

У Trilium Notes есть конкретная роль в стеке: персональная база знаний с древовидной структурой. Поэтому в production важно не то, отвечает ли порт 8080 один раз, а то, продолжают ли состояние, зависимости и публичный адрес согласованно работать после перезапуска, обновления и восстановления.

Изучите Trilium Notes перед работой с Docker

HTTP-процесс Trilium Notes принимает подключения на порту 8080; оставьте этот порт во внутренней сети приложения и публикуйте только маршрут платформы. Локальное требование среды — постоянный каталог данных и достаточный объём памяти для индексации. Проверьте это на рабочей нагрузке из приёмочного теста: проверка бездействующего health check не доказывает, что ресурсов достаточно.

Зафиксируйте границы ответственности в виде короткого контракта: кто отвечает за требование, какие учётные данные используются, какой тайм-аут считается допустимым и как проявляется сбой. Затем выполните транзакцию: создайте связанные заметки, добавьте вложение и связь, найдите их и проверьте историю ревизий после перезапуска. Во время выполнения отслеживайте индексацию заметок, размер вложений, scripting и рост document.db, поскольку такая нагрузка позволяет точнее определить исходный размер, чем бездействующий контейнер.

Тестируйте Trilium Notes извне сервера

Выделите для Trilium Notes одно HTTPS-имя хоста, а необработанный порт 8080 оставьте закрытым. Публикуйте веб-интерфейс через HTTPS с сохранением WebSockets. Это не позволит браузерам и API-клиентам получать два конкурирующих адреса.

С чистого клиента выполните проверенную транзакцию и определите первый запрос, завершившийся ошибкой. Если проблема связана с DNS или TLS, воспользуйтесь руководством по пользовательскому домену. Если маршрут уже подтверждён, рассматривайте проблему «каталог данных подключён не по тому пути или недоступен для записи» как отдельную диагностику приложения.

Запускайте Trilium Notes с понятными настройками по умолчанию

Запуск, рассчитанный на production, намеренно прост: именованное хранилище состояния, явно заданный порт и отсутствие секрета внутри образа.

docker run -d \
  --name trilium-notes \
  --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v trilium-notes-data:/home/node/trilium-data \
  -e TRILIUM_DATA_DIR=/home/node/trilium-data \
  triliumnext/notes:latest

Этот пример — отправная точка, а не полностью готовый вспомогательный стек. Перед публикацией подтвердите локальное требование: постоянный каталог данных и достаточный объём памяти для индексации. Проверьте фактически подключённые тома и слушающий порт, затем попробуйте создать связанные заметки, добавить вложение и связь, найти их и проверить историю ревизий после перезапуска. Перед следующим перезапуском зафиксируйте рабочую версию образа.

Наблюдайте за рабочей нагрузкой, а не только за контейнером

Отслеживайте операции, которые выполняет Trilium Notes: индексацию заметок, размер вложений, scripting и рост document.db. Устанавливайте лимиты с запасом под эту нагрузку и не используйте liveness probe, которая конкурирует с ней за ресурсы. Операторская проверка по-прежнему должна регулярно пытаться создать связанные заметки, добавить вложение и связь, найти их и проверить историю ревизий после перезапуска.

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

Что должно пройти до появления реальных данных Trilium Notes

В записи о выпуске Trilium Notes нужны факты, а не формулировка «выглядит хорошо». Сохраните digest выбранного образа, checksum конфигурации, публичное имя хоста и результат с отметкой времени для следующих действий: создать связанные заметки, добавить вложение и связь, найти их и проверить историю ревизий после перезапуска. Используйте тестовые данные, не относящиеся к production, чтобы проверку можно было запускать после каждого развёртывания.

Проверяйте отдельно два события жизненного цикла. Замена контейнера должна сохранять нормальную работу; чистое восстановление должно возвращать заметки, связи, вложения, атрибуты и ревизии, а известный поиск — находить ту же заметку. Пока выполняются проверки, измеряйте индексацию заметок, размер вложений, scripting и рост document.db, а результат сохраняйте как ожидаемый диапазон для этой версии.

Проверьте также запрещённое или недопустимое состояние: отправьте безопасные тестовые данные около ограничения ресурса или формата, связанного с этой границей: каталог данных подключён не по тому пути или недоступен для записи. Trilium Notes должен завершиться с диагностируемой ошибкой и не перезаписать корректное состояние. Вернитесь к допустимому состоянию, повторно выполните тестовый сценарий и приложите относящиеся к нему очищенные от чувствительных данных логи. Эти артефакты дадут конкретные основания для будущего решения об откате.

Резервируйте состояние Trilium Notes, которое нельзя воссоздать

Определите целевые показатели восстановления и допустимое время восстановления для Trilium Notes с учётом document.db, вложений, ревизий и конфигурации. Подключите /home/node/trilium-data до первичной настройки, запишите безопасные тестовые данные и замените контейнер, чтобы подтвердить фактическое постоянство этого пути. Именованный volume решает проблему сохранения данных при повторном развёртывании, но не защищает от компрометации или потери сервера.

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

Определите границу доверия Trilium Notes

Закройте окно первичной настройки сразу после создания первого доверенного администратора. Конкретная ловушка Trilium Notes — публикация персональной базы знаний без надёжной аутентификации; более безопасный подход — считать блокнот приватными данными, требовать надёжный вход и не предоставлять доступ к файловой системе шире каталога данных.

TRILIUM_DATA_DIR управляет поведением, а не конфиденциальностью; проверяйте его тип и значение, а настоящие учётные данные Trilium Notes храните отдельно. Внутренняя сеть должна использоваться для передачи credentials зависимостей, а роли внутри Trilium Notes — предоставлять минимально необходимые действия. Не записывайте чувствительные тела запросов и ответы провайдеров в обычные логи.

Что Dockup должен автоматизировать для Trilium Notes

Для Trilium Notes Dockup может создать маршрут и TLS-сертификат, сохранить mounts, передать secrets и разместить постоянный каталог данных с достаточным объёмом памяти для индексации во внутренней сети при развёртывании как в Dockup, так и на подключённых серверах.

Условием выпуска по-прежнему остаётся конкретная транзакция Trilium Notes: создать связанные заметки, добавить вложение и связь, найти их и проверить историю ревизий после перезапуска. Также проверьте возможность восстановления: заметки, связи, вложения, атрибуты и ревизии должны вернуться, а известный поиск — находить ту же заметку. Эти две проверки показывают, работает ли развёртывание и можно ли его восстановить.

Часто задаваемые вопросы

Что нужно Trilium Notes для развёртывания в production?

Направьте контейнер Trilium Notes на порту 8080 через один HTTPS origin. Локальное требование среды — постоянный каталог данных и достаточный объём памяти для индексации. Не объявляйте Trilium Notes готовым, пока не сможете создать связанные заметки, добавить вложение и связь, найти их и проверить историю ревизий после перезапуска.

Какие данные Trilium Notes нужно включать в резервную копию?

Сохраняйте /home/node/trilium-data и включайте document.db, вложения, ревизии и конфигурацию в единый recovery manifest. Чистое восстановление Trilium Notes считается успешным только тогда, когда возвращаются заметки, связи, вложения, атрибуты и ревизии, а известный поиск находит ту же заметку.

Нужен ли Trilium Notes HTTPS за reverse proxy?

Используйте HTTPS для публичного origin Trilium Notes, а порт 8080 оставьте во внутреннем маршруте. Корректно задайте настройку Trilium Notes: публикуйте веб-интерфейс через HTTPS с сохранением WebSockets. Для Trilium Notes HTTPS защищает credentials и пользовательский контент при передаче и обеспечивает согласованное поведение клиентов, зависящее от origin.

Как тестировать обновление Trilium Notes?

Восстановите текущее состояние Trilium Notes в изолированном развёртывании, примените кандидатную версию и повторите приёмочную транзакцию. Уделите этому особое внимание: миграции TriliumNext, скрипты и расширения тем следует тестировать на дубликате каталога данных. Сохраняйте предыдущий образ Trilium Notes, пока не будут понятны границы миграции данных и отката.