Memos − веб-приложение, предназначенное для ведения личных заметок, которое в силу своей лёгкости может работать на виртуальном выделенном сервере даже на конфигурации со скромными характеристиками. Для того, чтобы все данные, которые передаются в браузере, такие как заметки, пароли, токены и вложения были зашифрованы и не перехватывались кем-то, доступ к приложению необходимо настроить с помощью защищённого протокола − HTTPS.
Без его использования отправка информации осуществляется открытым текстом. В особенности это небезопасно при подключении через Wi-Fi или использовании публичной сети. Кроме того, HTTPS повышает доверие к сайту со стороны браузера. При его применении исчезает предупреждение о небезопасном соединении. Дополнительно включаются современные функции безопасности вроде HSTS и защиты от подмены контента. Даже при использовании веб-приложений исключительно для собственных нужд, HTTPS становится защитой от внешнего сканирования, MITM-атак и банального подсматривания трафика.
Как подготовить веб-приложение к настройке HTTPS
Чтобы настроить доступ к сайту по HTTPS, необходимо наличие доменного имени. A-запись данного домена должна быть направлена на IP-адрес сервера, на котором расположен сайт. Настройку связи A-записи и IP-адреса можно произвести в личном кабинете RUVDS во вкладке Домены
. В некоторых случаях привязку необходимо производить на сайте, где зарегистрирован домен.

Изначально доступ к веб-приложению организован по протоколу HTTP. При этом сам Memos не умеет управлять SSL-сертификатами. Для настройки доступа к такому приложению по HTTPS, тем более с автоматическим обновлением сертификата, наиболее простым и безопасным способом является установка обратного прокси, например, Nginx или Caddy. Обратный прокси обрабатывает входящие HTTPS-запросы, расшифровывает трафик, после чего передаёт расшифрованные данные приложению, используя внутренний HTTP.
В данной статье разберём, как настроить доступ к приложению Memos, установленному на Ubuntu 24.04, через использование протокола HTTPS при помощи реверс-прокси на основе Caddy.
Как установить Caddy
Основным назначением Caddy является его использование в качестве веб-сервера. При этом его также можно настроить как обратный прокси. Выполняя функции обратного прокси, Caddy также является и менеджером HTTPS в части получения, установки и обновления сертификатов Let’s Encrypt. Кроме того, взаимодействие Caddy с Let’s Encrypt производится без использования какого-либо дополнительного софта, такого как Certbot.
При получении и обновлении SSL-сертификатов Let’s Encrypt, как и другие ACME-провайдеры, используют валидацию через HTTP. Именно таким образом производится подтверждение владения доменом. Сервер, используя HTTP, размещает специальный файл по определённому URL, чтобы удостоверяющий центр, в нашем случае Let’s Encrypt, мог убедиться, что вы имеете полномочия на управление доменом.
Исходя из этого, сначала откройте доступ к серверу через порт 80, который использует HTTP:
$ sudo ufw allow 80
Теперь − непосредственно к установке Caddy. Изначально Caddy не входит в официальные репозитории Ubuntu, поэтому необходимо добавить в систему официальный репозиторий от разработчиков данного веб-сервера. Для этого, во-первых, добавьте GPG-ключ. Он нужен для того, чтобы Ubuntu могла доверять пакетам из добавляемого репозитория:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Затем добавьте в систему сам репозиторий Caddy:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
Выполнение следующей команды позволит Ubuntu увидеть добавленный репозиторий:
$ sudo apt update
После этого проинсталлируйте Caddy:
$ sudo apt install caddy
В результате установки в Ubuntu будет добавлен системный сервис caddy
. Если инсталляция прошла без ошибок, он сразу же должен быть включён и установлен в автозагрузку. Проверить его состояние можно командой:
$ systemctl status caddy
Вывод команды не должен содержать сообщений об ошибках.

Как настроить доступ к Memos через HTTPS
Теперь откройте конфигурационный файл Caddy:
$ sudo nano /etc/caddy/Caddyfile
В нашем примере мы настраиваем Caddy только для работы в качестве обратного прокси. Поэтому нам достаточно будет одной-единственной настройки:
your-site-name.ru {
reverse_proxy localhost:8081
}
Здесь замените your-site-name.ru
на доменное имя, по которому открывается веб-приложение Memos. Также обратите внимание на строку reverse_proxy localhost:8081
, которая указывает на то, что внутренний трафик между реверс-прокси и веб-приложением будет организован через порт 8081. Данный порт как раз и используется для доступа к Memos по HTTP.
Затем закройте файл, сохранив внесённые изменения, и перезапустите службу caddy
:
$ sudo systemctl restart caddy
Далее откройте доступ к серверу через порт 443, поскольку его использует протокол HTTPS:
$ sudo ufw allow 443
И, наконец, запустите браузер и перейдите на страницу Memos по его доменному имени.

Сообщение вида Подключение защищено
в навигационной строке говорит о том, что соединение с веб-приложением осуществляется при помощи защищённого протокола HTTPS.
Порт 8081, по которому веб-интерфейс Memos был доступен изначально, больше не будет использоваться напрямую. Поэтому теперь можно удалить из брандмауэра UFW правило, разрешающее подключение через данный порт:
$ sudo ufw delete allow 8081