Каждый разработчик, системный администратор или вебмастер ежедневно сохраняет десятки разрозненных фрагментов информации: команды терминала, полезные однострочники bash, заметки по архитектуре серверов, ссылки на документацию и списки задач. Чаще всего всё это оседает в «Избранном» в Telegram, превращаясь в неуправляемую свалку сообщений без структуры, либо в тяжелых облачных сервисах вроде Notion, которые требуют постоянного интернета, закрывают доступ к подпискам и хранят конфиденциальные данные на чужих серверах.
Открытая платформа Memos решает эту проблему элегантно и надежно. Это ультралегковесный self-hosted сервис заметок и персональная база знаний с интерфейсом в стиле приватного микроблога. Развернув Memos на собственном VDS-сервере в связке с Docker Compose, вы получаете полный контроль над своими записями, удобное тегирование, поддержку Markdown, мгновенный поиск и синхронизацию со смартфонами через нативные приложения.
Зачем нужен собственный Memos и почему он выигрывает у Notion и Telegram
Концепция Memos строится вокруг идеи персонального «цифрового сада» (Digital Garden) и быстрой фиксации мыслей без сложной иерархии папок:
- Мгновенное сохранение на лету: Чтобы записать мысль или команду, не нужно создавать отдельный документ, выбирать категорию или настраивать свойства базы. Достаточно открыть поле ввода, набрать текст в формате Markdown и нажать Send.
- Умная организация через хэштеги: Любое слово с решеткой (например,
#docker,#nginx,#devops/ci) мгновенно становится тегом. В боковом меню автоматически строится дерево тегов с подсчетом записей, позволяя мгновенно фильтровать заметки в один клик. - Интерактивные чеклисты и вложения: Поддерживаются чекбоксы задач (
- [ ] задача), подсветка блоков исходного кода на десятках языков программирования, таблицы и загрузка скриншотов простым перетаскиванием (drag-and-drop). - Гибкие уровни приватности: Каждая заметка может иметь статус
Private(видна только вам),Protected(доступна авторизованным пользователям вашего инстанса) илиPublic(открыта для просмотра всем по прямой ссылке, что позволяет использовать Memos как личный публичный микроблог). - Тепловая карта активности: Наглядный визуальный календарь на главной странице (по аналогии с GitHub Contributions) мотивирует регулярно фиксировать полезный опыт и отслеживать продуктивность по дням.
Безопасность данных: В отличие от облачных сервисов, база заметок Memos никогда не покидает ваш сервер. Вы можете безопасно хранить внутренние IP-адреса серверов, токены доступа к тестовым стендам и служебные памятки без риска утечки в сторонние облака.
Архитектура и потребление ресурсов: всего 25–30 МБ RAM на Go и SQLite
Главное инженерное достоинство Memos — бескомпромиссная производительность. В то время как популярные аналоги на Node.js или Java (например, Nextcloud Notes или Trillium) требуют от 500 МБ до 1.5 ГБ оперативной памяти, Memos спроектирован на максимально эффективном технологическом стеке:
- Бэкенд на Go (Golang): Скомпилированный бинарный файл без тяжелых интерпретаторов потребляет минимальное количество процессорного времени и стартует за доли секунды.
- Встроенная СУБД SQLite: По умолчанию все данные хранятся в легковесном файле
memos_prod.dbс включенным режимом журналирования WAL (Write-Ahead Logging). Это обеспечивает параллельное чтение и запись без блокировок и не требует запуска отдельного тяжелого контейнера с PostgreSQL или MySQL. - Фронтенд на React: Быстрый и отзывчивый интерфейс без перегрузки тяжелыми библиотеками, идеально адаптированный как под десктопные мониторы, так и под мобильные экраны.
В рабочем режиме контейнер Memos потребляет всего 25–35 МБ оперативной памяти, что позволяет без проблем размещать его на самом базовом VDS с 1 ГБ RAM по соседству с другими полезными утилитами, например менеджером закладок Linkwarden или канбан-досками Vikunja.
Боевой манифест Docker Compose с лимитами ресурсов и привязкой к 127.0.0.1
Для развертывания сервиса создадим рабочую директорию на сервере под управлением Ubuntu или Debian. Обратите внимание: официальный образ распространяется в репозитории neosmemo/memos, и для боевой эксплуатации рекомендуется фиксировать проверенный стабильный тег stable.
Создайте рабочую директорию для хранения данных и перейдите в нее:
sudo mkdir -p /opt/memos/data
cd /opt/memos
Создайте файл docker-compose.yml со следующей проверенной конфигурацией. Обратите внимание на директиву портов 127.0.0.1:5230:5230: она изолирует порт сервиса от прямого доступа из интернета, направляя весь внешний трафик исключительно через обратный прокси с HTTPS:
services:
memos:
# Официальный стабильный образ от разработчиков
image: neosmemo/memos:stable
container_name: memos
restart: unless-stopped
volumes:
# Постоянное хранилище базы SQLite и загруженных медиафайлов
- ./data:/var/opt/memos
ports:
# Безопасная привязка к локальному хосту: порт закрыт от прямого доступа извне
- "127.0.0.1:5230:5230"
# Ограничение ресурсов для защиты сервера от утечек памяти
mem_limit: 256m
cpus: 0.5
Защита от обхода UFW: Прямая публикация портов вида 5230:5230 заставляет демон Docker вносить правила в таблицу iptables напрямую, игнорируя системный фаервол UFW. Привязка к адресу 127.0.0.1 полностью нейтрализует эту уязвимость.
Запустите контейнер в фоновом режиме:
sudo docker compose up -d
Проверьте, что сервис успешно запустился и отдает статус Up:
sudo docker compose ps
sudo docker compose logs -f memos
Настройка безопасного доступа через Nginx и Caddy с HTTPS
Для безопасного подключения через доменное имя (например, notes.example.com) и автоматического шифрования трафика по протоколу HTTPS настроим обратный прокси. Предварительно создайте в DNS-панели вашего домена запись типа A с именем поддомена (notes), указывающую на публичный IP-адрес вашего VDS.
Вариант 1: Конфигурация Nginx с Certbot
Если на вашем сервере используется классический Nginx (сгенерировать оптимизированный конфиг можно через наш генератор Nginx), установите веб-сервер и плагин Certbot:
sudo apt update && sudo apt install nginx python3-certbot-nginx -y
Создайте конфигурационный файл /etc/nginx/sites-available/memos.conf. Обратите внимание на поддержку WebSocket и увеличенный размер тела запроса client_max_body_size 50M, необходимый для комфортной загрузки фото и вложений:
server {
listen 80;
server_name notes.example.com;
# Максимальный размер загружаемых фото, аудио и документов
client_max_body_size 50M;
# Базовые заголовки безопасности
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
location / {
proxy_pass http://127.0.0.1:5230;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Поддержка постоянных соединений и интерактивных веб-сокетов
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 90s;
}
}
Активируйте виртуальный хост и проверьте синтаксис:
sudo ln -s /etc/nginx/sites-available/memos.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Выпустите бесплатный доверенный SSL-сертификат Let's Encrypt с автоматическим редиректом с HTTP на HTTPS:
sudo certbot --nginx -d notes.example.com --non-interactive --agree-tos -m admin@example.com --redirect
Работоспособность и срок действия сертификата можно моментально перепроверить через наш онлайн SSL-чекер.
Вариант 2: Автоматический HTTPS в Caddy 2
Если вы используете современный веб-сервер Caddy (создать правила можно в нашем генераторе Caddyfile), автоматический выпуск сертификатов настраивается всего в три строки в /etc/caddy/Caddyfile:
notes.example.com {
reverse_proxy 127.0.0.1:5230
}
Примените изменения командой sudo systemctl reload caddy.
Первоначальная настройка: права администратора и закрытие свободной регистрации
Откройте в браузере адрес https://notes.example.com. При первом входе Memos предложит зарегистрировать учетную запись. Важный факт: первый созданный пользователь автоматически наделяется правами главного администратора (роль Admin, в версиях до v0.26.0 именовалась как Host).
Порядок первоначальной настройки безопасности:
- Сгенерируйте стойкий мастер-пароль длиной от 20 символов с помощью нашего генератора паролей и завершите регистрацию.
- В левом нижнем углу интерфейса перейдите в раздел Settings (Настройки).
- Перейдите во вкладку System.
- Критический шаг: активируйте переключатель Disable user registration (Запретить регистрацию пользователей). Это предотвратит создание аккаунтов посторонними людьми на вашем публичном домене.
- Во вкладке Preferences выберите русский язык (Memos полностью локализован на русский язык) и настройте цветовую схему оформления (Auto / Light / Dark).
Многопользовательский режим: Если вам нужно выдать доступ коллегам или членам семьи, вы сможете создавать для них учетные записи вручную через панель администратора Settings → Members → Add Member даже при отключенной свободной регистрации.
Синхронизация с мобильными устройствами: приложение Moe Memos и токены доступа
Одной из ключевых причин популярности Memos является наличие развитой экосистемы клиентских приложений. Вам не нужно каждый раз открывать браузер на телефоне: сервис нативно интегрируется в мобильные операционные системы.
Подключение нативного клиента Moe Memos
Для iOS, iPadOS, macOS и Android разработано великолепное open-source приложение Moe Memos (доступно в App Store, Google Play и F-Droid). Оно поддерживает офлайн-режим, интерактивные виджеты для рабочего стола и системное меню «Поделиться» (Share Sheet).
Для безопасного подключения приложения без ввода основного пароля аккаунта используются персональные токены:
- В веб-интерфейсе Memos перейдите в Settings > Access Tokens.
- Нажмите кнопку Create, укажите понятное название (например,
iPhone Moe Memos) и срок действия токена (например, Never expire для постоянного личного устройства). - Скопируйте сгенерированный токен.
- Откройте приложение Moe Memos на телефоне, введите адрес вашего сервера
https://notes.example.comи вставьте токен в поле Access Token.
Теперь любая мысль, ссылка или скриншот, отправленные через виджет или приложение на смартфоне, моментально синхронизируются с вашим сервером на VDS.
Установка веб-версии как PWA
Если вы не хотите устанавливать сторонние программы, веб-версия Memos полностью поддерживает стандарт Progressive Web App (PWA). В браузере Safari на iPhone нажмите кнопку Поделиться > На экран «Домой», а в Chrome на Android — Установить приложение. Сервис будет запускаться в полноэкранном режиме с собственной иконкой точно так же, как нативное приложение.
Автоматизация и публикация заметок через REST API, curl и скрипты
Memos спроектирован с упором на API-first подход и документирован по стандарту OpenAPI. Это позволяет использовать сервис не только вручную, но и в качестве централизованного хранилища логов, отчетов и сниппетов из внешних скриптов автоматизации.
Публикация заметок через curl
Чтобы отправить новую заметку прямо из терминала Linux или bash-скрипта деплоя, достаточно выполнить один POST-запрос с заголовком авторизации:
curl -X POST https://notes.example.com/api/v1/memos \
-H "Authorization: Bearer ВАШ_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"content": "Успешно завершен ночной бэкап баз данных на S3 #devops #backups",
"visibility": "PRIVATE"
}'
Практические сценарии автоматизации
- Логирование статусов серверов: Встройте отправку заметок в скрипты резервного копирования или GitHub Actions. В конце пайплайна скрипт отправит красивую заметку со статусом деплоя и ссылкой на коммит.
- Быстрый ввод с десктопа через Raycast / Alfred: Назначьте глобальную горячую клавишу на ПК (например,
Alt + Space), чтобы во всплывающем окне набрать короткую мысль и за долю секунды отправить ее в Memos по API. - Исходящие вебхуки (Webhooks): В разделе Settings > Webhooks можно настроить отправку JSON-вебхука на сторонний сервер или наш собственный push-сервер Ntfy при создании заметок с определенными тегами.
Рекомендуемые VDS-провайдеры
Отказоустойчивые сервера с быстрыми NVMe и каналом до 1 Гбит/с
Timeweb Cloud — Скоростные NVMe VDS
Быстрые NVMe-диски и моментальный отклик позволяют запускать Memos вместе с Nginx даже на минимальном тарифе без задержек.
Selectel — Корпоративная надежность Tier III
Отказоустойчивая инфраструктура с гарантированным аптаймом для круглосуточного доступа к личной базе знаний из любой точки мира.
Beget — Простота и отказоустойчивость
Установка Docker в один клик, удобная панель управления сервером и бесплатное автоматическое создание ежедневных резервных копий.
Резервное копирование SQLite-базы, восстановление и безопасное обновление
Все ваши заметки, теги, списки задач и настройки хранятся в едином файле базы данных memos_prod.db, а загруженные изображения и вложения сохраняются непосредственно внутри структуры примонтированного тома /opt/memos/data. Благодаря архитектуре на базе SQLite процедура резервного копирования и миграции на новый сервер выполняется максимально просто.
Создание резервной копии базы данных
Так как SQLite использует режим WAL, простое копирование файла во время активной записи может создать поврежденный снимок. Для создания гарантированно целостной горячей копии прямо на лету используйте встроенную команду утилиты sqlite3:
# Горячий бэкап базы данных без остановки контейнера
sudo sqlite3 /opt/memos/data/memos_prod.db ".backup '/opt/memos-backup-$(date +%F).db'"
Для полного сохранения всех вложений и медиафайлов достаточно создать сжатый архив всей рабочей директории:
sudo tar -czf /opt/memos-full-backup-$(date +%F).tar.gz -C /opt/memos data
Автоматизация ежедневных бэкапов через Cron
Добавьте автоматическое создание архива в системный планировщик cron. Откройте crontab от имени root командой sudo crontab -e и добавьте строку (создание бэкапа каждую ночь в 03:00 и удаление архивов старше 14 дней):
Для автоматизации создадим безопасный скрипт бэкапа /opt/memos/backup.sh, который сначала выполняет атомарный снимок базы без блокировки, а затем упаковывает все файлы:
#!/bin/bash
BACKUP_DIR="/var/backups/memos"
DATE=$(date +%F)
mkdir -p "$BACKUP_DIR"
# 1. Горячий согласованный снимок SQLite БД
sqlite3 /opt/memos/data/memos_prod.db ".backup '$BACKUP_DIR/memos_$DATE.db'"
# 2. Архивирование медиафайлов и данных вместе со снимком БД
tar -czf "$BACKUP_DIR/memos_full_$DATE.tar.gz" -C /opt/memos data "$BACKUP_DIR/memos_$DATE.db" 2>/dev/null
rm -f "$BACKUP_DIR/memos_$DATE.db"
# 3. Удаление копий старше 14 дней
find "$BACKUP_DIR" -name "memos_full_*.tar.gz" -mtime +14 -delete
Сделайте скрипт исполняемым (sudo chmod +x /opt/memos/backup.sh) и добавьте его запуск в sudo crontab -e:
0 3 * * * /opt/memos/backup.sh >/dev/null 2>&1
Безопасное обновление Memos до новой версии
Разработчики Memos регулярно выпускают обновления с оптимизациями и новыми возможностями. Чтобы процедура обновления прошла без риска потери данных, всегда выполняйте предварительное резервное копирование:
# 1. Перейдите в рабочую директорию
cd /opt/memos
# 2. Создайте контрольную точку восстановления
sudo tar -czf /opt/memos-preupdate-$(date +%F).tar.gz -C /opt/memos data
# 3. Скачайте свежий стабильный образ и перезапустите контейнер
sudo docker compose pull
sudo docker compose up -d
# 4. Проверьте журналы контейнера на предмет успешного применения миграций
sudo docker compose logs -f memos
Итоги: идеальный баланс легковесности и приватности
Сервис Memos доказывает, что современное веб-приложение не обязано потреблять гигабайты памяти, чтобы быть удобным и функциональным. Развернув его на собственном VDS всего за 10–15 минут, вы получаете:
- 100% приватность личных мыслей, команд и паролей от посторонних глаз.
- Сверхбыстрый поиск и тегирование без тормозов и задержек.
- Кроссплатформенный доступ со смартфона, планшета и рабочего ноутбука через приложение Moe Memos или PWA.
- Мощный REST API для автоматизации сбора информации прямо из терминала.
Для комфортной работы связки Memos и Nginx прекрасно подойдет даже самый недорогой VDS с 1 ГБ оперативной памяти и быстрым NVMe-накопителем, доступный у надежных провайдеров из нашего каталога выше.