November 11, 2019

Семейный сервер для хранения книг

Довольно давно у меня была задача сделать сервер (удобный) для централизованного хранения книг для всей семьи (и родственников) из-за того, что частенько книжные интересы у нас пересекаются и она и та же книга покупается дважды (иногда и трижды). Поделюсь, как я ее решил:

Интрефейс Calibre-web

Для локального хранения и преобразования из различных форматов использую известную и по-моему единственную программу Calibre. Для использования базы Calibre через web есть несколько решений, я, мне кажется, выбрал самое достойное, calibre-web.

Далее расскажу как я его настраивал:

  • Устанавливать решил на Synology, поэтому единственный путь это docker контейнер (правда в библиотеке приложений Synology есть несколько реализаций web версии Calibre, но они все убогие более чем полностью). Нашел уже готовый контейнер от известных изготовителей: linuxserver/calibre-web.
  • Настройка очень простая:
docker create \
  --name=calibre-web \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Moscow \
  -e DOCKER_MODS=linuxserver/calibre-web:calibre \
  -p 8083:8083 \
  -v <path to data>:/config \
  -v <path to calibre library>:/books \
  --restart unless-stopped \
  linuxserver/calibre-web
  • Но есть несколько нюансов, стоит обратить внимание на папку:
- v <path to calibre library>:/books \

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

  • Далее после запуска контейнера сервер Calibre-web на по адресу http://your-ip:8083
  • При первом запуске указывается calibre library location: /books (не забываем про то, что в папке уже должна лежать библиотека Calibre)

Отдельная интересная история, как я настирывал Caddy для работы с Calibre-web, там тоже один маленький нюанс:

https://books.abramenko.me {
    tls vaxann@gmail.com
    gzip
    proxy / http://192.168.1.84:8083 {
        transparent
    }
}
http://books.abramenko.me {
    redir https://books.abramenko.me{uri}
}

Это запись transparent.

К слову официальная конфигурация для NginX, немного сложнее, но из нее понятно зачем нужен transparent :

location / {
	proxy_pass              http://your-ip:8083;
	proxy_set_header        Host            $http_host;
	proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header        X-Scheme        $scheme;
	proxy_set_header        X-Script-Name   /calibre-web;
}

В целом это все, если интересны подробности, задавайте вопросы в комментариях.