Skip to content

Setup_ru

SeNS edited this page Sep 23, 2025 · 4 revisions

Установка и настройка TinyOPDS

Системные требования

Минимальные требования

  • Для небольших библиотек (до 50 000 книг):
    • Процессор: ARM Cortex-A53 1 ГГц или x86/x64 1 ГГц
    • Память: 1 ГБ ОЗУ
    • Дисковое пространство: 100 МБ + размер базы данных
    • ОС: Windows 10 версия 1903+, Windows 11, Windows 7 SP1/8/8.1 (требуется установка .NET 4.8), Linux, macOS 10.12+
    • .NET Framework: 4.8 (для Windows)
    • Работает даже на Raspberry Pi Zero 2 W

Рекомендуемые требования

  • Для больших библиотек (500 000+ книг):
    • Процессор: многоядерный 2+ ГГц
    • Память: минимум 4 ГБ ОЗУ
    • Дисковое пространство: 500 МБ + размер базы данных
    • SSD диск для быстрого сканирования

Примечание: Размер базы данных составляет примерно 3-4 МБ на 1000 книг. Для библиотеки из 500 000 книг база данных займёт около 1,7 ГБ.

Поддержка платформ

Платформа GUI версия CLI версия Поддержка Wine
Windows ✅ Полная поддержка ✅ Полная поддержка Н/Д
Linux ✅ Полная поддержка (через Mono) ✅ Полная поддержка ✅ Полная поддержка
macOS ❌ Не поддерживается* ✅ Полная поддержка ✅ Полная поддержка

Примечание для macOS: GUI версия не может работать нативно на macOS из-за несовместимости WinForms с 64-битным Mono. Используйте CLI версию или Wine для GUI функциональности.

Установка GUI версии

Windows

  1. Скачайте последнюю версию с GitHub Releases
  2. Распакуйте архив в любую папку
  3. Для Windows 7 SP1, 8, 8.1 - установите .NET Framework 4.8, если его нет
  4. Запустите TinyOPDS.exe

Программа полностью портативна и не требует установки. Все настройки сохраняются в файле TinyOPDS.config в папке программы.

Примечание: Windows 10 версии 1903 и выше, а также Windows 11, уже включают .NET Framework 4.8.

Linux

Установка Mono

Ubuntu/Debian:

sudo apt update
sudo apt install mono-complete

Fedora/CentOS/RHEL:

sudo dnf install mono-complete

Arch Linux:

sudo pacman -S mono

openSUSE:

sudo zypper install mono-complete

Запуск TinyOPDS

# Сделать файл исполняемым
chmod +x TinyOPDS.exe

# Запуск через Mono
mono TinyOPDS.exe

macOS

Важно: GUI версия не работает нативно на macOS из-за несовместимости WinForms с 64-битным Mono. У вас есть три варианта:

  1. Использовать CLI версию (рекомендуется)
  2. Использовать Wine для запуска GUI версии
  3. Настроить параметры на Windows/Linux и скопировать файл конфигурации

Вариант 1: CLI версия (рекомендуется)

Установка зависимостей:

# Установка Homebrew, если его нет
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Установка Mono
brew install mono

# ВАЖНО: Установка свежего SQLite для избежания сбоев
brew install sqlite

Запуск CLI версии:

# Перейти в папку программы
cd /path/to/tinyopds

# Сканировать библиотеку
mono TinyOPDSCLI.exe scan

# Запустить сервер
mono TinyOPDSCLI.exe start

Примечание SQLite: Системный SQLite macOS имеет проблемы совместимости с Mono.Data.Sqlite. Установка SQLite через Homebrew решает сбои при сканировании.

Вариант 2: Wine (для GUI)

# Установка Wine через Homebrew
brew install --cask wine-stable

# Запуск GUI версии
wine TinyOPDS.exe

# Создание ярлыка приложения (опционально)
echo '#!/bin/bash
cd "$(dirname "$0")"
wine TinyOPDS.exe 2>/dev/null &' > TinyOPDS.app/Contents/MacOS/TinyOPDS
chmod +x TinyOPDS.app/Contents/MacOS/TinyOPDS

Запуск с Wine (альтернативный метод)

Wine позволяет запускать Windows версию на Linux и macOS с полной GUI функциональностью.

Установка Wine

Linux:

# Ubuntu/Debian
sudo apt install wine wine32

# Fedora
sudo dnf install wine

# Arch
sudo pacman -S wine

macOS:

brew install --cask wine-stable

Запуск TinyOPDS с Wine

# Базовый запуск
wine TinyOPDS.exe

# Запуск без вывода в консоль
wine TinyOPDS.exe 2>/dev/null

# Запуск в фоне
nohup wine TinyOPDS.exe > /dev/null 2>&1 &

Создание ярлыков рабочего стола

Linux (.desktop файл):

[Desktop Entry]
Name=TinyOPDS
Comment=OPDS сервер книг
Exec=wine /path/to/TinyOPDS.exe
Icon=/path/to/icon.png
Terminal=false
Type=Application
Categories=Network;

macOS (Automator приложение):

  1. Откройте Automator
  2. Создайте новое Приложение
  3. Добавьте действие "Выполнить сценарий оболочки"
  4. Введите: cd /path/to/tinyopds && wine TinyOPDS.exe 2>/dev/null
  5. Сохраните как TinyOPDS.app

Установка консольной версии как службы

TinyOPDSCLI может быть установлен как системная служба для автоматического запуска при загрузке системы.

Важно: Перед установкой службы рекомендуется сначала настроить все параметры через GUI версию (TinyOPDS.exe), затем использовать готовый файл конфигурации TinyOPDS.config для консольной версии.

Windows

Консольная версия использует SC.EXE для регистрации Windows службы:

# Открыть командную строку от имени администратора

# Установить службу
TinyOPDSCLI.exe install

# Запустить службу
TinyOPDSCLI.exe start

# Остановить службу
TinyOPDSCLI.exe stop

# Удалить службу
TinyOPDSCLI.exe uninstall

Особенности Windows службы:

  • Устанавливается с автоматическим запуском (delayed-auto)
  • Запускается под LocalSystem
  • Настроена политика восстановления (перезапуск при сбое)
  • Логи сохраняются в файл TinyOPDS.log в папке программы

Linux

Установщик автоматически определяет систему инициализации (systemd или init.d):

# Требуются права root
sudo mono TinyOPDSCLI.exe install

# Управление службой
sudo mono TinyOPDSCLI.exe start
sudo mono TinyOPDSCLI.exe stop
sudo mono TinyOPDSCLI.exe uninstall

Systemd (современные дистрибутивы)

При установке создаётся файл /etc/systemd/system/tinyopds.service:

[Unit]
Description=TinyOPDS OPDS сервер
After=network.target

[Service]
Type=simple
User=tinyopds
Group=tinyopds
WorkingDirectory=/opt/tinyopds
Environment="TINYOPDS_SERVICE=1"
ExecStart=/usr/bin/mono /opt/tinyopds/TinyOPDSCLI.exe start
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Расположение файлов:

  • Данные: /var/lib/tinyopds/
  • Логи: /var/log/tinyopds/
  • Конфигурация: в папке программы

Init.d (старые дистрибутивы)

Создаётся скрипт /etc/init.d/tinyopds со стандартной поддержкой команд init.d (сам скрипт поддерживает status, но TinyOPDSCLI.exe не имеет этой команды)

macOS

Использует launchd для управления службой:

# ВАЖНО: Сначала установите SQLite
brew install sqlite

# Установка (требует sudo для системной службы)
sudo mono TinyOPDSCLI.exe install

# Или установка для текущего пользователя (без sudo)
mono TinyOPDSCLI.exe install

# Управление службой
mono TinyOPDSCLI.exe start
mono TinyOPDSCLI.exe stop
mono TinyOPDSCLI.exe uninstall

Системная служба (LaunchDaemon)

При установке с правами root создаётся /Library/LaunchDaemons/com.senssoft.tinyopds.plist:

  • Запускается при загрузке системы
  • Работает в фоне для всех пользователей
  • Логи: /usr/local/var/log/tinyopds/

Пользовательская служба (LaunchAgent)

При установке без root создаётся ~/Library/LaunchAgents/com.senssoft.tinyopds.plist:

  • Запускается при входе пользователя
  • Работает только для текущего пользователя
  • Логи: ~/Library/Logs/TinyOPDS/

Особенности macOS службы:

  • Автоматический перезапуск при сбое
  • 5 секунд задержки между перезапусками
  • Поддержка Apple Silicon (M1/M2) и Intel
  • Требует Homebrew SQLite для стабильности

Первоначальная настройка

1. Настройка библиотеки

  1. Запустите TinyOPDS (GUI или CLI)
  2. Для GUI: Перейдите на вкладку "Сканер"
  3. Укажите путь к папке с книгами
  4. Нажмите "Начать сканирование" или используйте mono TinyOPDSCLI.exe scan

2. Настройка сервера

  1. Для GUI: Перейдите на вкладку "Сервер"
  2. Если у вашего компьютера несколько сетевых карт, выберите подходящий сетевой интерфейс
  3. Установите порт (по умолчанию 8080)
  4. Нажмите "Запустить сервер" или используйте mono TinyOPDSCLI.exe start

Примечание: По умолчанию сервер слушает на всех сетевых интерфейсах. Выбор конкретного интерфейса нужен только при наличии нескольких сетевых карт.

3. Проверка работы

Откройте браузер и перейдите по адресу:

  • Локальный доступ: http://localhost:8080/
  • По сети: http://[ваш-ip]:8080/
  • OPDS каталог: http://[ваш-ip]:8080/opds

Файлы конфигурации

Рекомендация: Для консольной версии сначала настройте все параметры через GUI версию, затем скопируйте файл TinyOPDS.config в папку с TinyOPDSCLI.exe. Если оба исполняемых файла находятся в одной папке, они автоматически используют общий файл конфигурации.

Windows

  • Настройки: TinyOPDS.config
  • База данных: books.sqlite в папке программы
  • Логи: TinyOPDS.log в папке программы

Linux/macOS

  • Настройки: TinyOPDS.config
  • База данных: books.sqlite в папке программы
  • Логи программы: TinyOPDS.log в папке программы
  • Логи службы: /var/log/tinyopds/ (Linux) или ~/Library/Logs/TinyOPDS/ (macOS)

Обновление

  1. Остановите службу/программу
  2. Сохраните копию базы данных books.sqlite
  3. Замените файлы программы на новую версию
  4. Запустите программу/службу

База данных совместима между версиями и не требует конвертации.

Решение проблем

macOS нативный GUI не работает

GUI версия не может работать нативно на macOS из-за того, что реализация WinForms в Mono несовместима с 64-битным режимом. Вы увидите эту ошибку:

WARNING: The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all

Решения:

  1. Используйте CLI версию (полностью функциональна)
  2. Запустите GUI версию с Wine
  3. Настройте на Windows/Linux и скопируйте файл конфигурации

Сбои SQLite на macOS

Если вы испытываете сбои при сканировании на macOS, установите SQLite от Homebrew:

brew install sqlite

Это решает проблемы совместимости между Mono.Data.Sqlite и системным SQLite macOS.

Служба не запускается

Windows:

# Проверить статус службы
sc query TinyOPDS

# Просмотр логов в просмотрщике событий
eventvwr.msc

Linux:

# Для systemd
sudo systemctl status tinyopds
sudo journalctl -u tinyopds -f

# Для init.d
sudo service tinyopds status
tail -f /var/log/tinyopds/*.log

macOS:

# Проверить статус
launchctl list | grep tinyopds

# Просмотр логов
tail -f ~/Library/Logs/TinyOPDS/*.log
# или для системной службы
tail -f /usr/local/var/log/tinyopds/*.log

Ошибка "Порт уже используется"

Измените порт в настройках или найдите процесс, использующий порт:

# Linux/macOS
lsof -i :8080

# Windows
netstat -ano | findstr :8080

Медленное сканирование

  • Используйте SSD для базы данных
  • Выполните начальное сканирование на мощном компьютере
  • Скопируйте готовую базу данных на целевое устройство

Безопасность

Ограничение доступа

  1. Используйте HTTP авторизацию (вкладка "Авторизация")
  2. Настройте брандмауэр для ограничения доступа по IP
  3. Используйте VPN для удалённого доступа

Резервное копирование

Регулярно сохраняйте копии:

  • База данных: books.sqlite
  • Конфигурация: *.config файлы

Дополнительные возможности

Автоматическое сканирование

Для Linux/macOS можно настроить задание cron:

# Добавить в crontab
0 3 * * * mono /path/to/TinyOPDSCLI.exe scan

Работа за прокси/NAT

Для доступа из интернета:

  1. Настройте проброс портов на роутере
  2. Используйте сервис динамического DNS
  3. Или настройте обратный прокси (nginx/Apache)

Известные ограничения

  • macOS GUI: Нативный GUI не поддерживается из-за ограничений Mono WinForms. Используйте CLI или Wine.
  • Большие библиотеки: Начальное сканирование 500 000+ книг может занять несколько часов в зависимости от оборудования.
  • Использование памяти: Примерно 1 ГБ ОЗУ на 200 000 книг при сканировании.

Clone this wiki locally