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