stanislavvv / fb2_srv_pseudostatic

opds server over fb2 in zips for microcomputers
The Unlicense
0 stars 0 forks source link

fb2_srv pseudostatic

NIH-проект

Сиё есть сервер opds для кучи fb2 в нескольких zip. Предназначено для запуска на одноплатниках.

Поскольку предыдущий проект (fb2_srv) на Orange PI 3 LTS оказался очень медленным (неудивительно, вобщем-то), решил, что вместо БД проще сделать статическую структуру, которую и отдавать.

ВНИМАНИЕ: структура .zip.lists не совместима с fb2_srv!

структура каталогов псевдостатики

"псевдо" — потому что один и тот же файл будет использован как для opds, так и для html и перед отправкой преобразуется в нужный формат.

AuthorCut и SeqCut — первые 2 символа от соответствующих ID, AuthorCut2 и SeqCut2 — вторые 2 символа. Используется для уменьшения числа файлов в каталоге.

процедура подготовки данных

Общая процедура:

datachew.py new_lists  # или lists, если требуется обновить все файлы .list
datachew.py stage1
datachew.py stage2
datachew.py stage3
datachew.py stage4

Параметры datachew.py:

Процесс создания индексов разбит на стадии stage1stage4 вместо единой команды для уменьшения пикового потребления памяти на микрокомпьютере (вместо почти 2ГБ - не более 0.5ГБ)

запуск

обычный запуск

Для тестовых целей есть opds.py. Если его уже недостаточно - правим прилагаемый fb2_srv.service и, возможно, gunicorn.sh (потребуется, соответственно, gunicorn) для соответствия, как минимум, пользователя и рабочего каталога и далее:

sudo cp -f fb2_srv.service /etc/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable fb2_srv.service
sudo systemctl start fb2_srv.service

После чего сервис запустится. Если не править gunicorn.sh — запустится с настройками прода и будет слушать 0.0.0.0:8000

запуск в докере

Собираем образ (если не править Makefile - имя образа fb2srv-pseudostatic:latest):

make dockerbuild

Запускаем через docker-compose:

cp -f docker-compose.yml.example docker-compose.yml
docker-compose up

В docker-compose.yml.example прописан необходимый проброс порта 8000 и проброс каталога с данными ./data (рекомендую поправить на реальное местонахождение, а не симлинк, как у меня).