Self-host Memos: установка и настройка заметок
Установите Memos — самохостинг заметок без подписок и трекинга. Пошаговое руководство: Docker, настройка, безопасность, интеграции. Полный контроль над данными.
Подготовка окружения
Создайте директорию для Memos и поддиректорию для хранения данных. Это обеспечит изолированность и сохранность данных при обновлении контейнера.
mkdir -p ~/memos/data
cd ~/memosСоздание docker-compose.yml
Создайте файл конфигурации Docker Compose. Он определяет, какой образ использовать, куда монтировать данные и какие порты открывать.
version: "3.0"
services:
memos:
image: neosmemo/memos:latest
container_name: memos
restart: unless-stopped
ports:
- "5230:5230"
volumes:
- ./data:/app/memos/data
environment:
- TZ=Europe/MoscowЗапуск контейнера
Запустите контейнер в фоновом режиме. Docker автоматически скачает необходимый образ, если он отсутствует локально.
docker compose up -dПроверка работы
Убедитесь, что контейнер запущен и работает без ошибок, проверив список запущенных контейнеров и логи.
docker compose ps
docker compose logs -fПервоначальная настройка
Откройте браузер и перейдите по адресу http://<IP_сервера>:5230. Создайте учетную запись администратора (первый зарегистрированный пользователь автоматически получает права администратора).
http://<IP_сервера>:5230Настройка обратного прокси (Nginx)
Для безопасного доступа через HTTPS и скрытия порта 5230 настройте Nginx. Создайте конфигурационный файл и перенаправьте трафик на контейнер Memos.
sudo nano /etc/nginx/sites-available/memos.conf
# Содержимое файла:
server {
server_name your-domain.com;
location / {
proxy_pass http://localhost: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;
}
}
# Активация конфига:
sudo ln -s /etc/nginx/sites-available/memos.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxУстановка SSL сертификата
Используйте Certbot для получения бесплатного SSL сертификата Let's Encrypt и автоматического обновления конфигурации Nginx.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.comНастройка резервного копирования
Создайте скрипт для автоматического бэкапа данных и добавьте его в cron для регулярного выполнения. Это защитит от потери данных.
# Скрипт backup_memos.sh:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/path/to/backups"
cd ~/memos
docker compose stop
tar -czf $BACKUP_DIR/memos_data_$DATE.tar.gz ./data
docker compose start
find $BACKUP_DIR -name "memos_data_*.tar.gz" -mtime +7 -delete
# Добавление в cron (еженедельный запуск):
crontab -e
# Добавить: 0 2 * * 0 /home/user/memos/backup_memos.shКак self-host Memos — открытая альтернатива заметкам с полным контролем над данными
Введение
Управление личными заметками — это фундамент для продуктивности. Облачные сервисы предлагают удобство, но часто ценой контроля над данными. Self-host (развертывание на собственном сервере) решает эту проблему, обеспечивая конфиденциальность, отказ от зависимости от сторонних компаний и полную настройку под свои нужды.
Memos — это мощное, современное,开源 приложение для заметок с чистым интерфейсом, поддержкой Markdown, синхронизацией между устройствами и активным сообществом. В отличие от некоторых аналогов, Memos легок в развертывании, требует минимальных ресурсов и идеально подходит для самостоительного использования.
Этот гайд проведет вас через весь процесс: от выбора хоста до настройки безопасности и интеграций.
Требования к системе и подготовка окружения
Минимальные требования
- CPU: 1 ядро (x86_64 или ARM64).
- RAM: 512 MB (рекомендуется 1+ GB).
- Дисковое пространство: 2 GB (для системы и данных).
- OS: Любая Linux-дистрибуция с Docker (Ubuntu 22.04/24.04, Debian 11/12, Alpine и т.д.), Windows/macOS через Docker Desktop.
- Сеть: Публичный IP-адрес (если нужен доступ извне) или доступ к локальной сети.
Подготовка окружения
Для Memos мы будем использовать Docker Compose. Это стандарт индустрии, обеспечивающий изолированность, легкую обновляемость и управление зависимостями.
1. Установка Docker и Docker Compose
Если Docker еще не установлен, следуйте официальным инструкциям для вашей ОС.
Для Ubuntu/Debian:
# Обновление пакетов
sudo apt update && sudo apt upgrade -y
# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Перелогиньтесь или выполните: newgrp docker
# Установка Docker Compose (интегрирован в Docker v20+)
sudo apt install docker-compose-plugin
Проверка установки:
docker --version
docker compose version
2. Подготовка структуры папок Создадим отдельную директорию для проекта, чтобы хранить конфигурацию и данные.
mkdir ~/memos && cd ~/memos
mkdir data # Папка для данных Memos (база данных SQLite)
Пошаговая установка Memos через Docker Compose
Memos хранит все данные в файле SQLite, что упрощает развертывание — не требуется отдельный сервер баз данных (хотя PostgreSQL тоже поддерживается).
1. Создание файла docker-compose.yml
В папке ~/memos создайте файл docker-compose.yml и вставьте следующее содержимое. Комментарии объясняют каждую строку.
version: "3.0"
services:
memos:
image: neosmemo/memos:latest # Официальный образ
container_name: memos
restart: unless-stopped # Автоматический перезапуск при сбоях или перезагрузке
ports:
- "5230:5230" # Хост:Контейнер. Порт 5230 стандартный для Memos.
volumes:
- ./data:/app/memos/data # Монтируем папку данных для сохранения заметок между перезапусками.
environment:
- TZ=Europe/Moscow # Установка часового пояса (замените на свой).
# - MEMOS_DRIVER=postgres # Раскомментируйте, если используете PostgreSQL.
# - MEMOS_DSN=... # Конфигурация DSN для PostgreSQL.
# healthcheck: # Для оркестраторов типа Docker Swarm.
# test: ["CMD", "curl", "-f", "http://localhost:5230/api/v1/health/check"]
# interval: 30s
# timeout: 10s
# retries: 3
# start_period: 40s
2. Запуск контейнера
Выполните команду в папке с docker-compose.yml:
docker compose up -d
-d(detached) запускает контейнер в фоновом режиме.- Docker автоматически скачает образ
neosmemo/memos:latestи запустит контейнер.
3. Проверка работы Убедитесь, что контейнер работает:
docker compose ps
Вы должны видеть статус Up.
Также проверьте логи на наличие ошибок:
docker compose logs -f
4. Первоначальный доступ
Откройте браузер и перейдите по адресу:
http://<IP_вашего_сервера>:5230
Если вы устанавливаете на локальную машину, используйте http://localhost:5230.
Первоначальная настройка: создание учетной записи и интерфейс
-
Создание аккаунта: При первом открытии вас встретит экран регистрации. Введите имя пользователя, пароль и email. Это будет администратор.
-
Интерфейс: Вы попадете в главный интерфейс.
- Контент: Кнопка
+для создания новой заметки. Поддерживается Markdown, вставка изображений (drag-and-drop), код. - Ресурсы: Вкладка для хранения файлов и изображений.
- Архив: Удаленные заметки (перемещаются сюда до полного удаления).
- Настройки: Нажмите на аватар в правом верхнем углу.
- Контент: Кнопка
-
Базовая настройка:
- В Настройках -> Общие вы можете изменить название, описание блога.
- В Пользователях можно создать аккаунты для других пользователей.
Интеграция с другими службами
Memos не существует в вакууме. Вот как связать его с другими инструментами.
1. Obsidian (через плагин или API)
Memos имеет REST API.
- Способ A (Плагин): Установите в Obsidian плагин "Memos Sync" (если доступен) или используйте "Templater" с шаблонами.
- Способ B (Напрямую): Используйте Obsidian URI или плагины для запросов к API.
- Пример API:
POST http://your-memos-url/api/v1/memoс JSON телом.
- Пример API:
2. Nextcloud
Nextcloud поддерживает интеграцию через WebDAV или плагины.
- Создайте в Memos папку, которую хотите синхронизировать.
- В Nextcloud используйте плагин "External sites" или синхронизацию через файловый менеджер, если вы монтируете папку Memos в общую директорию (требует редактирования Docker Compose).
3. Telegram бот (для быстрого добавления заметок)
Создайте простого Telegram бота, который отправляет сообщения в Memos через API.
- API Endpoint:
POST /api/v1/memo - Тело запроса (JSON):
{ "content": "Текст из Telegram", "visibility": "PUBLIC" } - Авторизация: Используйте токен пользователя (находится в настройках профиля Memos).
Безопасность и резервное копирование
Для публичного доступа ваш самописный сервер должен быть защищен.
1. Настройка обратного прокси (Nginx) и HTTPS
Почему? Для работы по HTTPS (SSL-сертификат), скрытия порта :5230 и статической загрузки статики.
Шаг 1: Установка Nginx
sudo apt install nginx certbot python3-certbot-nginx -y
Шаг 2: Настройка Nginx
Создайте конфиг: sudo nano /etc/nginx/sites-available/memos.conf.
server {
server_name your-domain.com; # Замените на ваш домен или IP
location / {
proxy_pass http://localhost:5230; # Прокси на контейнер Memos
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;
# Для Websocket (если планируется использовать)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Активируйте конфиг:
sudo ln -s /etc/nginx/sites-available/memos.conf /etc/nginx/sites-enabled/
sudo nginx -t # Проверка синтаксиса
sudo systemctl restart nginx
Шаг 3: Установка SSL (HTTPS)
sudo certbot --nginx -d your-domain.com
Certbot автоматически обновит конфиг Nginx и получит бесплатный сертификат Let's Encrypt.
2. Резервное копирование
Поскольку данные хранятся в папке ./data, достаточно копировать ее.
Ручное копирование (раз в неделю):
# Архивирование папки данных
tar -czvf memos_backup_$(date +%F).tar.gz ~/memos/data/
# Пример копирования на удаленное хранилище
scp memos_backup_*.tar.gz user@remote-server:/backups/
Автоматизация через Cron:
- Создайте скрипт
backup_memos.shв папке~/memos:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/path/to/backups"
cd ~/memos
docker compose stop # Останавливаем контейнер для чистого бэкапа
tar -czf $BACKUP_DIR/memos_data_$DATE.tar.gz ./data
docker compose start
# Удаляем бэкапы старше 7 дней
find $BACKUP_DIR -name "memos_data_*.tar.gz" -mtime +7 -delete
- Дайте права на выполнение:
chmod +x backup_memos.sh. - Добавьте в cron:
crontab -e, добавьте строку:0 2 * * 0 /home/user/memos/backup_memos.sh(запуск каждый воскресенье в 2:00).
Расширенные возможности
Плагины
Memos имеет встроенную систему плагинов (с версии 0.16+).
- Перейдите в Настройки -> Плагины.
- Установка: Введите ссылку на репозиторий плагина (GitHub). Например, плагин для экспорта.
- Написание своих: Используйте JS/HTML/CSS. Простая структура позволяет добавить кастомные кнопки или виджеты.
Темы (CSS)
Memos поддерживает кастомизацию через CSS.
- В Настройки -> Пользовательский CSS вставьте код.
- Пример темной темы (полный код обычно публикуется в сообществе):
:root { --bg-color: #1a1a1a; --text-color: #e0e0e0; }
Автоматизация (Webhooks)
Используйте Settings -> System -> Webhooks.
При создании или изменении заметки Memos может отправлять POST-запрос на указанный URL. Это полезно для:
- Отправки уведомлений в Slack/Discord.
- Логирования действий.
- Триггера внешних скриптов.
Заключение
Вы развернули Memos — мощную, приватную систему для заметок. Основные преимущества получены:
- Полный контроль: Данные не покидают ваш сервер.
- Масштабируемость: Docker позволяет легко обновлять (просто
docker compose pull && docker compose up -d) или мигрировать. - Гибкость: От простого текста до интеграций с умным домом через API.
Следующие шаги:
- Исследуйте официальный GitHub Memos для новостей и описаний API.
- Посетите сообщество [Discord / Reddit] для поддержки и готовых плагинов.
- Настройте регулярные бэкапы — это критично для самостостоятельного хостинга.
Управляйте своими данными сами. Удачи в использовании Memos!