Skip to content

Setup_uk

SeNS edited this page Sep 23, 2025 · 3 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