Self-host Memos: установка и настройка заметок

Установите Memos — самохостинг заметок без подписок и трекинга. Пошаговое руководство: Docker, настройка, безопасность, интеграции. Полный контроль над данными.

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор16 января 2026 г.

Подготовка окружения

Создайте директорию для 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.

Первоначальная настройка: создание учетной записи и интерфейс

  1. Создание аккаунта: При первом открытии вас встретит экран регистрации. Введите имя пользователя, пароль и email. Это будет администратор.

  2. Интерфейс: Вы попадете в главный интерфейс.

    • Контент: Кнопка + для создания новой заметки. Поддерживается Markdown, вставка изображений (drag-and-drop), код.
    • Ресурсы: Вкладка для хранения файлов и изображений.
    • Архив: Удаленные заметки (перемещаются сюда до полного удаления).
    • Настройки: Нажмите на аватар в правом верхнем углу.
  3. Базовая настройка:

    • В Настройках -> Общие вы можете изменить название, описание блога.
    • В Пользователях можно создать аккаунты для других пользователей.

Интеграция с другими службами

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 телом.

2. Nextcloud

Nextcloud поддерживает интеграцию через WebDAV или плагины.

  1. Создайте в Memos папку, которую хотите синхронизировать.
  2. В 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:

  1. Создайте скрипт 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
  1. Дайте права на выполнение: chmod +x backup_memos.sh.
  2. Добавьте в cron: crontab -e, добавьте строку: 0 2 * * 0 /home/user/memos/backup_memos.sh (запуск каждый воскресенье в 2:00).

Расширенные возможности

Плагины

Memos имеет встроенную систему плагинов (с версии 0.16+).

  1. Перейдите в Настройки -> Плагины.
  2. Установка: Введите ссылку на репозиторий плагина (GitHub). Например, плагин для экспорта.
  3. Написание своих: Используйте JS/HTML/CSS. Простая структура позволяет добавить кастомные кнопки или виджеты.

Темы (CSS)

Memos поддерживает кастомизацию через CSS.

  1. В Настройки -> Пользовательский CSS вставьте код.
  2. Пример темной темы (полный код обычно публикуется в сообществе):
    :root {
      --bg-color: #1a1a1a;
      --text-color: #e0e0e0;
    }
    

Автоматизация (Webhooks)

Используйте Settings -> System -> Webhooks. При создании или изменении заметки Memos может отправлять POST-запрос на указанный URL. Это полезно для:

  • Отправки уведомлений в Slack/Discord.
  • Логирования действий.
  • Триггера внешних скриптов.

Заключение

Вы развернули Memos — мощную, приватную систему для заметок. Основные преимущества получены:

  1. Полный контроль: Данные не покидают ваш сервер.
  2. Масштабируемость: Docker позволяет легко обновлять (просто docker compose pull && docker compose up -d) или мигрировать.
  3. Гибкость: От простого текста до интеграций с умным домом через API.

Следующие шаги:

  • Исследуйте официальный GitHub Memos для новостей и описаний API.
  • Посетите сообщество [Discord / Reddit] для поддержки и готовых плагинов.
  • Настройте регулярные бэкапы — это критично для самостостоятельного хостинга.

Управляйте своими данными сами. Удачи в использовании Memos!

Поделиться:TelegramX / TwitterVK