Obsidian — это мощная система для работы с заметками на основе Markdown, которая хранит данные локально. Развертывание Obsidian в Docker позволяет создать переносимую, изолированную среду для работы с вашими заметками, которую можно легко развернуть на любом компьютере или сервере и получить доступ с любого места.
Предварительные требования
Перед началом работы убедитесь, что у вас установлены:
- Docker Engine (версия 20.10.0 или новее)
- Docker Compose (версия 1.29.0 или новее, если планируете использовать compose)
- Доступ к терминалу/командной строке
- Минимум 2 ГБ оперативной памяти (рекомендуется 4 ГБ+ для комфортной работы)
Варианты развертывания Obsidian в Docker
Существует несколько подходов к запуску Obsidian в Docker:
- Официального образа нет: На момент написания статьи официального Docker-образа Obsidian не существует.
- Использование Wine: Запуск Windows-версии Obsidian через Wine в Linux-контейнере.
- Веб-доступ через VNC: Создание виртуального рабочего стола с установленным Obsidian.
- Обходные решения: Использование markdown-редакторов с похожим функционалом.
В этом руководстве мы сосредоточимся на наиболее практичном варианте — создании контейнера с графическим интерфейсом через VNC.
Создание Docker-образа для Obsidian
1. Подготовка Dockerfile
Создайте новую директорию для проекта и внутри нее файл Dockerfile
:
# Используем базовый образ с Ubuntu FROM ubuntu:22.04 # Установка необходимых зависимостей RUN apt-get update && apt-get install -y \ wget \ tar \ libgtk-3-0 \ libnotify4 \ libnss3 \ libxss1 \ libxtst6 \ xdg-utils \ libatspi2.0-0 \ libuuid1 \ libsecret-1-0 \ xvfb \ x11vnc \ fluxbox \ && rm -rf /var/lib/apt/lists/* # Создаем пользователя для запуска приложения RUN useradd -m -u 1000 obsidian USER obsidian WORKDIR /home/obsidian # Скачиваем и распаковываем Obsidian RUN wget https://github.com/obsidianmd/obsidian-releases/releases/download/v1.4.16/Obsidian-1.4.16.AppImage \ && chmod +x Obsidian-1.4.16.AppImage # Устанавливаем переменные среды ENV DISPLAY=:0 ENV SCREEN_RESOLUTION=1280x720x16 # Копируем скрипт запуска COPY --chown=obsidian:obsidian entrypoint.sh /home/obsidian/entrypoint.sh RUN chmod +x /home/obsidian/entrypoint.sh # Точка монтирования для данных Obsidian VOLUME /home/obsidian/obsidian-data EXPOSE 5900 ENTRYPOINT ["/home/obsidian/entrypoint.sh"]
2. Создание скрипта запуска (entrypoint.sh)
Создайте файл entrypoint.sh
в той же директории:
#!/bin/bash # Запускаем Xvfb в фоновом режиме Xvfb :0 -screen 0 $SCREEN_RESOLUTION -ac +extension GLX +render -noreset & # Запускаем оконный менеджер fluxbox & # Запускаем VNC сервер x11vnc -passwd obsidian -display :0 -forever -noxdamage & # Запускаем Obsidian ./Obsidian-1.4.16.AppImage --no-sandbox --disable-gpu
Не забудьте сделать скрипт исполняемым:
chmod +x entrypoint.sh
3. Сборка Docker-образа
Выполните команду для сборки образа:
docker build -t obsidian-docker .
Это создаст образ с именем obsidian-docker
.
Запуск контейнера с Obsidian
Запуск через docker run
docker run -d \ --name obsidian \ -p 5900:5900 \ -v /path/to/your/vault:/home/obsidian/obsidian-data \ obsidian-docker
Использование Docker Compose
Создайте файл docker-compose.yml
:
version: '3.8' services: obsidian: image: obsidian-docker build: . container_name: obsidian ports: - "5900:5900" volumes: - /path/to/your/vault:/home/obsidian/obsidian-data environment: - SCREEN_RESOLUTION=1920x1080x16 restart: unless-stopped
Запустите контейнер:
docker-compose up -d
Подключение к Obsidian через VNC
После запуска контейнера вы можете подключиться к нему с помощью VNC-клиента:
- Установите VNC-клиент (например, TigerVNC, RealVNC или Remmina)
- Подключитесь к
localhost:5900
- Используйте пароль «obsidian» (как указано в entrypoint.sh)
Настройка хранилища (vault) Obsidian
- При первом запуске Obsidian предложит создать или открыть хранилище
- Укажите путь
/home/obsidian/obsidian-data
- Все ваши заметки будут сохраняться в смонтированную директорию на хосте
Оптимизация работы
Увеличение производительности
Добавьте эти параметры в ваш docker-compose.yml
или команду docker run
:
environment: - SCREEN_RESOLUTION=1920x1080x16 - OBSIDIAN_DISABLE_GPU=true shm_size: '1gb'
Автоматический запуск при загрузке
Добавьте в docker-compose.yml
:
restart: unless-stopped
Резервное копирование
Добавьте второй том для автоматического бэкапа:
volumes: - /path/to/your/vault:/home/obsidian/obsidian-data - /path/to/backups:/home/obsidian/backups
Решение проблем
1. Проблемы с графикой
Если Obsidian работает медленно или с ошибками, попробуйте:
- Добавить флаг
--disable-gpu
в команду запуска - Увеличить размер shared memory:
--shm-size="1gb"
2. Проблемы с монтированием томов
Убедитесь, что:
- Путь к хранилищу существует на хосте
- У вас есть права на запись в эту директорию
- Используйте абсолютные пути в настройках томов
3. Обновление Obsidian
Для обновления:
- Остановите контейнер
- Обновите версию AppImage в Dockerfile
- Пересоберите образ
- Запустите контейнер заново
Альтернативные подходы
1. Использование веб-версии Obsidian через браузер
Вы можете настроить веб-сервер с синхронизацией вашего хранилища и доступом через браузер.
2. Использование markdown-редакторов с похожим функционалом
Рассмотрите альтернативы, которые проще запускать в Docker:
- Joplin
- Trilium Notes
- Standard Notes
Безопасность
Важные моменты безопасности:
- Не используйте простые пароли для VNC
- Не открывайте порт 5900 в интернет без защиты
- Регулярно обновляйте образ и приложение
- Используйте VPN для удаленного доступа
Развертывание Obsidian в Docker требует некоторых усилий, но предоставляет гибкость и переносимость. Этот подход особенно полезен для:
- Разработчиков, работающих в изолированных средах
- Пользователей, которым нужно быстро развернуть Obsidian на разных машинах
- Тех, кто хочет иметь резервные копии своих заметок в контейнеризованной среде
Дальнейшие шаги для улучшения вашей установки:
- Настройка автоматического бэкапа хранилища
- Интеграция с облачными хранилищами
- Настройка плагинов для вашего рабочего процесса
Теперь у вас есть полностью функциональная среда Obsidian, работающая в Docker, которую можно легко переносить между системами и развертывать по мере необходимости.