Memos
Memos - аналог Google Keep на своем сервере для коротких заметок, ссылок и рабочего лога. В Evernote Free доступны 50 заметок и одно устройство. Memos не берет плату за заметки и пользователей; сервер и резервные копии оплачиваются отдельно. Развернули 0.31.0 на Fatmetal Cloud Server, замерили память и проверили доступ участников, обновление базы и перенос записей.
Вердикт
- Сохраняете себе ссылки в мессенджере, а потом не помните, зачем они понадобились
- Ведете ежедневный рабочий лог и хотите находить записи по тегу и дате
- Делитесь выбранными заметками с участниками отдельного пространства
- Нужен прямой импорт из Evernote: Memos не поддерживает формат ENEX
- Ждете от личных заметок секретности от администратора сервера
- Нужна документация с деревом страниц и совместной правкой
Аналог Google Keep на своем сервере
Memos переносит привычку сохранять сообщения в «Избранное» Telegram на свой сервер. Вы открываете ленту, пишете короткую заметку и сохраняете ее. Не нужно придумывать заголовок, выбирать блокнот или заводить структуру папок.
Вставьте ссылку и допишите, зачем она нужна. Добавьте #избранное или #работа прямо в текст: тег появится в боковой панели. Нажатие оставит в ленте подходящие записи.
Markdown оформляет списки, ссылки и блоки кода. Чек-лист подходит для дел после встречи, свободный текст - для дневника решений. Длинную инструкцию удобнее вынести в отдельную базу знаний.
Русский язык выбирается в настройках аккаунта: «Настройки» → «Настройки» → язык. На снимках работают русские меню, поиск по тегам и календарь; изменение языка браузера само по себе язык аккаунта не меняет.
Что изменилось с прошлого разбора
Предыдущая статья от 14 сентября описывала 0.30.0. Релиз 0.31.0 от 19 сентября меняет работу с общими записями и перенос данных.
| Было в 0.30.0 | Стало в 0.31.0 |
|---|---|
| Общая лента без Spaces | Пространства с участниками и видимостью SPACE |
| Прежние экраны и Shortcuts | Единый сайдбар, Calendar/Map и Views |
| Импорт/экспорт описывались как WIP | Личный ZIP с заметками и вложениями |
| Доступ зависел от адреса экземпляра | Отдельная настройка ACCESS |
| RSS | Удален из продукта |
Приглашенный участник получил доступ к Space только после принятия приглашения. Чужая PRIVATE-запись для обычного пользователя вернула 403. Как устроены права администратора, разобрано в ограничениях ниже.
На копии базы 0.30.0 обновление сохранило пароль, текст и вложение. В цикле этого релиза также исправлены SSRF-проверки, отзыв сессий и обработка файлов; детали - в таблице уязвимостей.
Чем отличается от Evernote, Keep и Obsidian
За Memos платят временем на сервер, обновления и резервные копии. Это выбор способа хранения, а не автоматическая экономия: базовые Google Keep и «Избранное» Telegram отдельной подписки не требуют.
| Продукт | Цена и данные | Когда удобнее |
|---|---|---|
| Memos | ПО бесплатно, MIT; данные на вашем сервере | Новая коллекция коротких заметок с тегами и API |
| Google Keep / Telegram | Базовые заметки без отдельной платы; облако платформы | Уже пользуетесь приложением и не хотите обслуживать сервер |
| Evernote Free | 50 заметок, одно устройство | Документы организованы в блокноты |
| Obsidian | Локальное приложение бесплатно; Sync от 4 $/мес при оплате за год | Нужен набор Markdown-файлов на своем компьютере |
Цены и лимиты сверены 16 октября по Memos, Evernote и Obsidian. Sync помесячно стоит 5 $, отдельный Publish - 8 $ за сайт при годовой оплате или 10 $ помесячно.
Memos открывается по-русски и размещается на российском сервере с рублевой оплатой. У Obsidian справка оплаты перечисляет Stripe, PayPal, WeChat и Alipay. Покупку подписки из РФ эта инструкция не гарантирует.
Memos не синхронизирует Obsidian vault. Польза здесь другая: одна браузерная лента доступна с ваших устройств, а сервер и резервные копии находятся под вашим управлением.
Один контейнер хранит заметки, Caddy принимает HTTPS
В образе Memos находятся Go-сервер, API и React-интерфейс. SQLite пишет базу в /opt/memos/data/memos_prod.db; выбранное локальное хранилище складывает файлы в /opt/memos/data/assets.
Оба каталога переживают пересоздание контейнера. Поэтому резервная копия должна включать базу и вложения вместе. Предположение прежней статьи о хранении всех вложений внутри SQLite к этому рецепту неприменимо.
У Memos нет заявленного численного минимума RAM. Проверенная конфигурация - CPU2-RAM4-DISK50: 2 vCPU, 4 ГБ памяти, Ubuntu 24.04. Ресурсы здесь выбираются по наблюдаемому сценарию заметок и экспорта, а не числу сотрудников.
Caddy открывает порты 80 и 443, а приложение слушает только localhost:5230. Без такой привязки посетитель сможет обращаться к приложению в обход HTTPS-прокси.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий сервис на своем домене, валидный TLS и файл с доступами.
Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес
Развертывание на Fatmetal Cloud Server
На чистой Ubuntu 24.04 направьте домен на сервер и откройте 80/443. Подойдет и имя IP-с-дефисами.fatmetal.net. Замените «ваш-домен» в командах.
В SSH выполните sudo -i. На компьютере откройте второй терминал с туннелем:
ssh -L 5230:127.0.0.1:5230 пользователь@сервер
Установите Docker из официального репозитория
Compose запускает оба сервиса одним файлом.
apt-get update apt-get install -y ca-certificates curl 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=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginСоздайте Compose-файл
Тег фиксирует версию при скачивании.
mkdir -p /opt/memos/data /opt/memos/caddy_data cd /opt/memos cat > compose.yml <<'YAML' services: memos: image: neosmemo/memos:0.31.0 container_name: memos restart: unless-stopped ports: ["127.0.0.1:5230:5230"] volumes: ["/opt/memos/data:/var/opt/memos"] environment: MEMOS_INSTANCE_URL: https://ваш-домен caddy: image: caddy:2.11.7 restart: unless-stopped network_mode: host volumes: ["/opt/memos/Caddyfile:/etc/caddy/Caddyfile:ro", "/opt/memos/caddy_data:/data"] YAMLСначала запустите только Memos
Пока прокси выключен, аккаунт нельзя перехватить снаружи.
cd /opt/memos docker compose up -d memosСоздайте администратора через закрытое соединение
В браузере откройте
http://localhost:5230и создайте первый аккаунт с собственным паролем.При английском меню выберите Settings → Preferences → English → Русский. Затем откройте «Система». Включите «Запретить регистрацию пользователей», выключите «Разрешить публичный доступ» и нажмите «Сохранить».
Откройте HTTPS после настройки доступа
Caddy выпускает сертификат по имени.
cd /opt/memos printf 'ваш-домен {\n reverse_proxy 127.0.0.1:5230\n}\n' > Caddyfile docker compose up -d caddy
Дождитесь сертификата: docker compose logs --tail=30 caddy. Войдите по HTTPS, сохраните заметку и обновите страницу. Затем закройте SSH-туннель.
Сколько памяти нужно заметкам и вложениям
На стенде CPU2-RAM4-DISK50 работали Memos 0.31.0, Caddy 2.11.7, Docker 29.9.1 и Compose 5.6.0. Память контейнеров учтена без файлового кэша; память хоста включает ОС.
| Простой после перезапуска | Около 30 МиБ: Memos 17,5 / Caddy 12,1 |
| Хост вместе с ОС и Docker | 533 МиБ |
| Образы Memos / Caddy | Около 100 / 89 МиБ |
| Холодное скачивание двух образов | 13 с |
| Повторный запуск до HTTP 200 | 9 с |
| Список заметок через HTTPS | 42 мс |
Создание ста заметок заняло 7,5 с. Затем добавили текстовое вложение на 10 МиБ и выгрузили личный ZIP. Данные приложения выросли с 0,25 до 12,6 МиБ, включая журнал SQLite.
При этих операциях память Memos поднялась до 82,5 МиБ и оставалась такой спустя 15 секунд. После перезапуска она вернулась к значению в таблице. Поэтому размер простоя не стоит считать расходом при работе.
Выбор сервера. Проверенный сценарий помещается в CPU2-RAM4-DISK50 с запасом. Вложения увеличивают объем данных на размер файлов; сто коротких записей требуют заметно меньше места.
Проверено на Memos 0.31.0, 16 октября 2026. На других версиях результаты могут отличаться.
Где может сломаться
Причина. Адрес MEMOS_INSTANCE_URL не выключает публичный доступ в 0.31.0.
Решение. «Настройки» → «Система» → выключить «Разрешить публичный доступ». Закрытие регистрации - отдельный переключатель. Нажмите «Сохранить», затем обновите страницу и убедитесь, что изменения остались.
Причина. На повторно выданном IP исчерпана недельная квота сертификатов для того же имени.
Решение. Посмотрите срок retry after: docker compose logs --tail=100 caddy. До этого срока используйте закрытый SSH-туннель или свой домен с A-записью на сервер; после смены имени поправьте MEMOS_INSTANCE_URL и Caddyfile, выполните docker compose up -d --force-recreate.
Причина. После входа применяется настройка аккаунта.
Решение. Выберите русский в «Settings» → «Preferences», затем обновите страницу. У каждого пользователя своя локаль.
Состояние сервисов видно через cd /opt/memos && docker compose ps, ошибки приложения - через docker compose logs --tail=100 memos. Статус Up сам по себе не заменяет вход и сохранение заметки.
Как сохранить данные и обновить Memos
Персональный ZIP находится в «Настройки» → «Экспорт и импорт». Он переносит ваши записи и вложения: на отдельном экземпляре импорт сохранил текст и совпадающие байты файла.
Полный бэкап нужен отдельно: он сохраняет пользователей, настройки и весь каталог данных. Следующие команды выполняйте в root-сессии. Остановка Memos дает согласованную копию SQLite и вложений.
cd /opt/memos
docker compose stop memos
tar czf /root/memos-backup.tgz data compose.yml Caddyfile
docker compose start memos
На своем компьютере скачайте архив через SSH. Храните его отдельно от VM: внутри закрытые заметки и настройки доступа.
umask 077
ssh пользователь@сервер 'sudo -n cat /root/memos-backup.tgz' > memos-backup.tgz
Для восстановления сначала загрузите архив с компьютера:
cat memos-backup.tgz | ssh пользователь@сервер 'sudo -n tee /root/memos-backup.tgz >/dev/null'Затем на сервере сохраните текущий каталог отдельно и распакуйте копию:
cd /opt/memos
docker compose stop memos
mv data "data-before-restore-$(date +%s)"
tar xzf /root/memos-backup.tgz
docker compose up -d
Перед обновлением сделайте такой бэкап, замените тег в compose.yml и выполните docker compose pull, затем docker compose up -d. Для перехода с 0.30.0 на проверенную версию замените neosmemo/memos:0.30.0 на neosmemo/memos:0.31.0.
После миграции проверьте вход, старую PRIVATE-заметку, скачивание вложения и оба переключателя «Системы». При откате возвращайте прежнюю базу вместе с прежним образом: старому бинарю не следует отдавать уже обновленную схему.
Уязвимости прошлых версий
В 0.31.0 исправленные компоненты уже обновлены. Владельцу старой установки следует сделать бэкап и перейти на эту версию по командам выше.
| Бюллетень | Серьезность и диапазон | Исправление и смысл |
|---|---|---|
| CVE-2026-39829 | High, 7,5; x/crypto/ssh до 0.52.0 | В Memos 0.30.0 модуль 0.50.0, в 0.31.0 - 0.56.0. Исправлен CPU DoS в SSH-проверке ключей; достижимость этого пути в Memos не установлена. |
| CVE-2024-21635 | Low; Memos до 0.18.1 включительно | Исправлено в 0.18.2: токены переживали смену пароля. Для 0.30.0 это уже не открытая проблема. |
Отдельно усилены проверки адресов webhook, включая CGNAT. SSRF - это попытка заставить сервер обращаться к внутренним сетевым адресам.
Другие исправления отзывают refresh-сессии после смены пароля и ограничивают обработку изображений, HTTP-ответов и импорта. Отдельная severity для них не опубликована.
Как добавить заметки в свои инструменты
REST API позволяет записывать рабочий лог из скрипта. Пример создания PRIVATE-заметки проверен через публичный HTTPS. Получите персональный токен в «Настройки» → «Токены доступа» и сохраните его как пароль.
read -rsp 'Токен Memos: ' MEMOS_TOKEN; echo
curl -fsS https://ваш-домен/api/v1/memos \
-H "Authorization: Bearer $MEMOS_TOKEN" -H 'Content-Type: application/json' \
-d '{"content":"Проверка резервной копии завершена #работа","visibility":"PRIVATE"}'
unset MEMOS_TOKEN
- BookStack или Docmost - когда заметка превращается в инструкцию с разделами и постоянным адресом.
- n8n - отправка записи HTTP-запросом из собственного сценария; токен дает сценариям доступ от вашего имени.
Когда это НЕ ваш выбор
Администратору нельзя доверять содержание записей
В 0.31.0 ADMIN прочитал чужую PRIVATE-заметку и SPACE-запись, не будучи участником пространства. PRIVATE изолирует обычных пользователей, но не администратора; серверное размещение не дает сквозного шифрования.
Нужен прямой импорт из Evernote
Memos не поддерживает формат ENEX. ZIP-перенос работает между экземплярами Memos и не заменяет импорт из Evernote или синхронизацию Markdown-хранилища Obsidian.
Заметки должны стать корпоративной wiki
Spaces дают общий поток, а не дерево документации и совместное редактирование страницы. Если нужны эти механики, выбирайте систему базы знаний.
Голосовой ввод должен работать без внешнего провайдера
Необязательная транскрипция требует своего ключа; основной сценарий заметок работает без него. Для внешних API на VPS Fatmetal доступен прокси http://api-proxy.fatmetal.net:8080, включенный в сервер; поддержку конкретного провайдера выбирают отдельно, в этом рецепте транскрипция не настроена.
Частые вопросы
Нужен отдельный PostgreSQL?
Для показанного рецепта - нет. SQLite работает внутри Memos, сохраняется в каталоге data и пережил обновление с 0.30.0.
Как сделать общий поток?
Создайте пространство через переключатель Memos вверху сайдбара, пригласите пользователя, дождитесь принятия приглашения и назначьте записи видимость SPACE.
Достаточно запретить регистрацию?
Нет. Чтобы закрыть публичную ленту, дополнительно выключите «Разрешить публичный доступ» в разделе «Система» и сохраните изменения.
Где лежит загруженный файл?
В этом рецепте - в /opt/memos/data/assets. Запись о вложении хранится в базе; бэкап включает весь data, а не один файл SQLite.
Почему после обновления не работает старый скрипт?
В 0.31.0 изменились API Views и reactions, обработка регистра usernames и хранилищ. Сверьте используемые методы с релизом перед переключением рабочего экземпляра.
За что платить самому Memos?
На дату проверки программа распространяется по MIT без платных модулей и лицензионного ключа. Вы оплачиваете размещение и обслуживание сервера.
Итог
Memos подходит для новой коллекции мыслей, ссылок и рабочего лога: быстро записали, добавили контекст, нашли по тегу. В 0.31.0 выбранными записями можно делиться через Space, а личный архив - переносить ZIP-файлом.
Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe
Не хотите устанавливать вручную?
Запустите Memos на этой конфигурации автоматически - от 450 ₽/мес.
Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.