
Trilium Notes – приложение для ведения иерархических заметок с акцентом на личную базу знаний. Приложение поддерживает древовидную структуру, где каждая заметка может иметь подзаметки и связи с другими элементами. В Trilium Notes встроены теги, атрибуты и поиск. Это во многом упрощает организацию и быстрый доступ к информации. Система позволяет использовать шифрование, синхронизацию между устройствами и даже запуск сервера для коллективной работы. Благодаря поддержке скриптов и виджетов, Trilium можно расширять и адаптировать под собственные рабочие процессы.
В статье разберём, как установить Trilium Notes на виртуальный сервер, работающий под управлением Debian 12.
Как установить Trilium Notes на Debian 12
Для установки Trilium Notes на VPS перейдите на страницу его релизов на GitHub и скопируйте ссылку на загрузку архива с дистрибутивом для 64-разрядной версии Linux.

По умолчанию в Debian отсутствует утилита wget
, при помощи которой можно загружать файлы из интернета. Поэтому сначала установите консольную утилиту wget
:
$ sudo apt install wget
По окончании установки загрузите архив с дистрибутивом Trilium Notes, используя утилиту wget
и ранее скопированную ссылку:
$ wget https://github.com/TriliumNext/Trilium/releases/download/v0.98.1/TriliumNotes-Server-v0.98.1-linux-x64.tar.xz
Чтобы распаковать архив tar.xz
, потребуется набор утилит для работы с форматом сжатия XZ, которого также по умолчанию нет в Debian. Следующей командой установите данный набор:
$ sudo apt install xz-utils
После чего распакуйте загруженный архив в текущий каталог:
$ tar -xvf TriliumNotes-Server-v0.98.1-linux-x64.tar.xz
Затем создайте директорию, в которой будут все данные приложения:
$ sudo mkdir -p /opt/trilium/trilium-data/
Далее скопируйте файлы из распакованного каталога в директорию /opt/trilium/
:
$ sudo cp -R TriliumNotes-Server-0.98.1-linux-x64/* /opt/trilium/
Как запустить Trilium в качестве системного сервиса
Чтобы приложение было активно и его не нужно было запускать каждый раз вручную, необходимо настроить его работу в качестве системного сервиса.
В качестве службы Trilium должен работать не от имени учётной записи root
и не от имени обычного пользователя, а от ограниченной учётной записи без доступа к оболочке и лишних прав. Исходя из чего, следующей командой создайте для Trilium пользователя, например, с именем trilium
:
$ sudo useradd --system --no-create-home --shell /usr/sbin/nologin trilium
Благодаря использованию специального пользователя trilium
, компрометация самого приложения не даст злоумышленнику полный контроль над системой. Кроме того, такой подход позволит разграничить права доступа к файлам приложения. Вышеуказанная команда оперирует следующими параметрами:
--system
– означает создание системного пользователя, предназначенного для работы сервисов;- —
-no-create-home
– определяет, что не будет создан домашний каталог для пользователя; --shell /usr/sbin/nologin
– означает, что при попытке зайти под этим пользователем вход будет отклонён.
Затем измените владельца каталога /opt/trilium/
и всех вложенных файлов и директорий на пользователя trilium
и группу trilium
:
$ sudo chown -R trilium:trilium /opt/trilium/
После чего создайте юнит-файл для нового системного сервиса:
$ sudo nano /etc/systemd/system/trilium.service
В данный файл скопируйте следующее содержимое:
[Unit]
Description=Trilium Notes Service
After=network.target
[Service]
Type=simple
User=trilium
Group=trilium
WorkingDirectory=/opt/trilium
ExecStart=/opt/trilium/trilium.sh --data-dir /opt/trilium/trilium-data
Restart=always
Environment=NODE_ENV=production
Environment=TRILIUM_DATA_DIR=/opt/trilium/trilium-data
[Install]
WantedBy=multi-user.target
Сохраните изменения в файле, закройте его и перезагрузите конфигурацию менеджера сервисов systemd
:
$ sudo systemctl daemon-reload
Затем добавьте новый сервис в автозагрузку с одновременным его запуском в текущем сеансе без перезагрузки:
$ sudo systemctl enable --now trilium
Чтобы убедиться в том, что сервис успешно стартовал, выведите на экран его текущее состояние:
$ systemctl status trilium
Вывод команды не должен содержать сообщений об ошибках:

Поскольку веб-интерфейс Trilium использует TCP-порт 8080, необходимо открыть доступ к серверу через этот порт. Для чего в брандмауэр UFW добавьте разрешающее правило для порта 8080:
$ sudo ufw allow 8080
Затем откройте браузер и перейдите на http://X.X.X.X:8080
, где вместо X.X.X.X
укажите IP-адрес виртуального сервера.

Выберите создание нового пользователя для доступа к Trilium и установите для этого пользователя пароль.

Затем подключитесь к приложению, используя созданный пароль.

Таким образом, в вашем браузере откроется веб-интерфейс приложения.

Как настроить доступ к Trilium через https
По умолчанию Trilium запускается на локальном порту и предоставляет интерфейс только по незащищённому HTTP-соединению. Такой вариант неприемлем для использования приложения, установленного на виртуальном выделенном сервере, поскольку данные передаются в открытом виде, и аутентификационные токены с паролями могут быть перехвачены злоумышленниками.
Оптимальным решением в данном случае является настройка доступа к Trilium через HTTPS, что подразумевает применение TLS-сертификата. Для этого удобно использовать обратный прокси-сервер, который будет принимать внешние запросы, расшифровывать данные и проксировать их к самому приложению. Среди популярных и легко реализуемых решений выделяется Caddy – веб-сервер, отличающийся минимализмом конфигурации и встроенной поддержкой взаимодействия с центром сертификации Let’s Encrypt. Caddy автоматически получает и обновляет TLS-сертификаты, что избавляет администратора от рутинных задач и снижает вероятность ошибок при настройке.
Чтобы получить и установить на сайт бесплатный TLS-сертификат от Let’s Encrypt, доступ к сайту необходимо настроить через его доменное имя. Привязка имени домена к виртуальному серверу, а точнее к его IP-адресу, осуществляется при помощи A-записи – специальной DNS-записи, предназначенной для сопоставления доменного имени с конкретным IPv4-адресом. Данная настройка производится на сайте-регистраторе доменного имени.
Кроме того, при автоматической выдаче сертификатов от Let’s Encrypt Центр сертификации проверяет, действительно ли вы владеете указываемым доменом. Для этого он посылает запрос по HTTP на ваш сервер и ожидает корректный ответ. Если сайт полностью недоступен по HTTP, сертификат получить не удастся. Исходя из этого, перед началом работ по установке TLS-сертификата необходимо открыть доступ к серверу для протокола HTTP. Для чего создайте в брандмауэре UFW соответствующее разрешающее правило:
$ sudo ufw allow http
И естественно, необходимо добавить в брандмауэр аналогичное правило для прокола HTTPS, так как после установки сертификата доступ к веб-интерфейсу Trilium будет осуществляться именно с его использованием:
$ sudo ufw allow https
Установка Caddy
Для инсталляции Caddy потребуются следующие пакеты:
gpg
– утилита для работы с криптографической системой, которая используется для подписи, проверки подписи, шифрования и дешифрования данных, и будет применяться при добавлении новых репозиториев;curl
– инструмент командной строки для выполнения сетевых запросов, с помощью которого можно, например, загружать из сети файлы.
Для установки данных утилит запустите команду:
$ sudo apt install gpg curl
Следующей командой загрузите и установите GPG-ключ репозитория Caddy, с помощью которого пакетный менеджер будет проверять подлинность пакетов:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Затем добавьте в систему список репозиториев Caddy для пакетного менеджера APT:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
После чего обновите списки пакетов:
$ sudo apt update
По окончании обновления запустите установку Caddy:
$ sudo apt install caddy
В процессе инсталляции в систему добавляется служба, текущее состояние которой можно вывести командой:
$ systemctl status caddy
Из вывода видно, что сервис запущен и установлен в автозагрузку. Корректность работы службы также подтверждается отсутствием в выводе сообщений об ошибках.

Настройка Caddy для работы в качестве обратного прокси
Теперь необходимо внести изменения в конфигурационный файл Caddy:
$ sudo nano /etc/caddy/Caddyfile
Если вы планируете запустить Caddy только в качестве обратного прокси, то добавьте в него следующие строки:
vash-domain.ru {
reverse_proxy localhost:8080
}
В данном случае:
vash-domain.ru
– доменное имя, по которому осуществляется доступ к веб-интерфейсу Trilium (замените его на своё);8080
– TCP-порт, по которому реверс-прокси будет взаимодействовать с Trilium.
Закройте конфигурационный файл с сохранением изменений и перезапустите службу Caddy:
$ sudo systemctl restart caddy
В результате перезапуска прокси-сервер запросит в Let’s Encrypt и установит TLS-сертификат для вашего домена. Чтобы убедиться, что веб-интерфейс Trilium теперь доступен через HTTPS, откройте браузер и перейдите на https://vash-domain.ru
. При этом замените vash-domain.ru
на имя вашего домена.

Сообщение в навигационной строке браузера вида Подключение защищено
должно свидетельствовать об успешной установке TLS-сертификата.
И поскольку TCP-порт 8080 теперь будет использоваться только для внутреннего трафика между реверс-прокси и Trilium, из брандмауэра можно удалить разрешающее правило для этого порта:
$ sudo ufw delete allow 8080