Self-hosted управление знаниями: Полное руководство по Siyuan | Home-Hosted

Установите и настройте Siyuan — приватное, полностью открытое ПО для управления личными знаниями в вашем хомелабе. Подробная инструкция с Docker, настройками и советами по безопасности.

Не указано

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

Обновите системные пакеты и установите Docker с Docker Compose. Убедитесь, что служба Docker запущена.

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
docker --version
docker-compose --version

Создание директории для данных

Создайте папку для хранения данных Siyuan и перейдите в неё. Измените права доступа, чтобы текущий пользователь мог записывать данные.

sudo mkdir -p /opt/siyuan
sudo chown -R $(whoami):$(whoami) /opt/siyuan
cd /opt/siyuan

Создание файла docker-compose.yml

Создайте файл docker-compose.yml в директории /opt/siyuan. В этом файле укажите образ контейнера, порты и путь к volume для хранения данных.

version: '3.8'

services:
  siyuan:
    image: siyuan-note/siyuan:latest
    container_name: siyuan
    restart: unless-stopped
    ports:
      - "6806:6806"
    volumes:
      - ./data:/home/siyuan/Documents/siyuan
    environment:
      - SIYUAN_WORKSPACE=/home/siyuan/Documents/siyuan
    networks:
      - siyuan_net

networks:
  siyuan_net:
    driver: bridge

Запуск контейнера Siyuan

Запустите контейнер в фоновом режиме с помощью Docker Compose и проверьте его статус.

docker-compose up -d
docker-compose ps

Настройка брандмауэра

Если на сервере активен брандмауэр UFW, разрешите входящие соединения на порту 6806.

sudo ufw allow 6806/tcp
sudo ufw reload

Первоначальная настройка через веб-интерфейс

Откройте браузер и перейдите по адресу http://<ваш-ip>:6806. Установите пароль администратора и создайте первый блокнот (Workspace).

Настройка шифрования и синхронизации

Для защиты данных в разделе настроек блокнота (Workspace Settings) включите шифрование и задайте пароль. Для синхронизации между устройствами настройте внешний сервис (например, WebDAV) или локальную синхронизацию.

Настройка обратного прокси (Nginx) для HTTPS

Для безопасного доступа настройте Nginx как reverse proxy. Создайте конфигурационный файл для вашего домена и настройте SSL сертификат (например, через Let's Encrypt).

server {
    listen 80;
    server_name siyuan.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name siyuan.example.com;

    ssl_certificate /etc/letsencrypt/live/siyuan.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/siyuan.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:6806;
        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 systemctl reload nginx

Создание скрипта резервного копирования

Создайте bash-скрипт для автоматического бэкапа данных в архив с указанием даты и удалением старых бэкапов (старше 30 дней).

#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/backup/siyuan"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/siyuan_data_$DATE.tar.gz -C /opt/siyuan data/
# Удаляем бэкапы старше 30 дней
find $BACKUP_DIR -name "siyuan_data_*.tar.gz" -mtime +30 -delete

Настройка автоматического бэкапа через Cron

Сделайте скрипт бэкапа исполняемым и добавьте задание в планировщик задач (cron) для выполнения раз в день.

chmod +x /opt/siyuan/backup.sh
sudo crontab -e
# Добавить строку:
0 3 * * * /opt/siyuan/backup.sh