При установке Trilium Notes на виртуальный выделенный сервер важно позаботиться о его безопасности. Тем более, что подключение к нему осуществляется напрямую через интернет. Один из ключевых аспектов в защите сервера − настройка доступа через HTTPS. В отсутствии защищённого соединения, трафик между сервером и браузером пользователя может быть перехвачен. Использование HTTPS позволяет зашифровать передаваемую информацию и тем самым существенно повысить уровень безопасности приложения.
Настройка доступа по протоколу HTTPS заключается в установке на стороне сервера TLS-сертификата, например, от центра сертификации Let’s Encrypt. Но в случае Trilium Notes важно понимать, что само приложение не поддерживает установку TLS-сертификатов напрямую. В данном приложении нет встроенной поддержки HTTPS. Для Trilium Notes настройка HTTPS заключается в установке TLS-сертификата и его использовании во внешнем веб-сервере, таком, как Caddy или Nginx. При этом веб-сервер будет выполнять роль обратного прокси. В такой конфигурации прокси принимает HTTPS-запросы, расшифровывает их и передаёт серверу Trilium Notes уже в виде обычного HTTP-запроса.
В статье разберём, как защитить сервер Trilium Notes при помощи настройки доступа по протоколу HTTPS через реверс-прокси Caddy на примере VPS, работающего под управлением CentOS Stream 9.
Непременным условием, позволяющим установить TLS-сертификат на сервер, является наличие доменного имени, по которому будет доступен веб-интерфейс Trilium Notes. При этом имя домена должно быть привязано к IP-адресу вашей виртуальной машины через A-запись. Настроить данную привязку можно на сайте регистратора, где зарегистрирован домен, либо во вкладке Домены
на сайте RUVDS.

Как защитить сервер Trilium Notes с использованием обратного прокси Caddy
Первый шаг в настройке доступа при помощи протокола HTTPS − установка веб-сервера Caddy. Сделать это можно руководствуясь разделом «Как установить Caddy на CentOS Stream 9» соответствующей статьи нашего справочника.
Важно отметить, что обратный прокси Caddy для прохождения валидации домена при автоматическом получении TLS-сертификатов от Let’s Encrypt использует протокол HTTP. Когда Caddy запрашивает сертификат, Let’s Encrypt отправляет проверочный HTTP-запрос на указанный домен по порту 80. Реверс-прокси временно размещает специальный файл-ответ и слушает порт 80, чтобы успешно пройти проверку. После успешной валидации выдаётся сертификат, и дальше Caddy обслуживает трафик уже по HTTPS. Таким образом, протокол HTTP нужен для начальной валидации и последующего автоматического обновления сертификатов.
Исходя из этого, необходимо убедиться, что на сервере открыт доступ для протокола HTTP. В CentOS Stream для ограничения доступа к серверу используется служба firewalld
. Чтобы увидеть сервисы и порты, для которых открыт доступ на данный момент, запустите команду:
$ sudo firewall-cmd --permanent --list-all
В выводе должно содержаться значение http
в строке services
, либо значение 80/tcp
в строке ports
.

Добавить в случае отсутствия разрешающее правило для протокола HTTP можно при помощи следующих команд:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --reload
Настройка Caddy
После установки Caddy и настройки доступа для протокола HTTP необходимо отредактировать конфигурационный файл:
$ sudo vi /etc/caddy/Caddyfile
Если Caddy будет использоваться исключительно как обратный прокси, достаточно будет наличия в конфигурации единственной настройки:
your-site-name.ru {
reverse_proxy localhost:8080
}
Здесь:
your-site-name.ru
− доменное имя, привязанное к вашему серверу (замените его на своё);8080
− номер порта, используемый Trilium Notes.
Закройте файл с сохранением изменений и перезапустите службу Caddy:
$ sudo systemctl restart caddy
Также добавьте в брандмауэр разрешающее правило для доступа к серверу по протоколу HTTPS:
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload
И наконец, откройте браузер и перейдите на веб-интерфейс Trilium Notes. Используйте при этом ваше доменное имя с указанием протокола HTTPS.

Сообщение вида Подключение защищено
в навигационной строке браузера свидетельствует о том, что доступ к сайту обеспечивается при помощи защищённого протокола HTTPS.
Порт, по которому веб-интерфейс Trilium Notes работал изначально, больше не будет использоваться для доступа непосредственно к приложению. Руководствуясь этим, можно удалить из брандмауэра соответствующее данному порту разрешающее правило.
$ sudo firewall-cmd --permanent --remove-port=8080/tcp
$ sudo firewall-cmd --reload
При этом нет необходимости удалять правило, разрешающее доступ по протоколу HTTP. Данный протокол будет в дальнейшем использоваться обратным прокси при обновлении TLS-сертификата.