diff --git a/Dockerfile b/Dockerfile index 129558a..bee29c0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -FROM lsiobase/alpine.nginx:3.5 -MAINTAINER sparklyballs +FROM lsiobase/alpine.python:3.6 +MAINTAINER sparklyballs/chbmb # set version label ARG BUILD_DATE @@ -19,9 +19,7 @@ RUN \ # install runtime packages apk add --no-cache \ - py2-lxml \ - py2-pip \ - python2 && \ + imagemagick && \ # install calibre-web mkdir -p \ @@ -35,23 +33,18 @@ RUN \ cd /app/calibre-web && \ pip install --no-cache-dir -U -r \ requirements.txt && \ - -# install pip packages - pip install --no-cache-dir -U \ - gunicorn \ - Wand && \ + pip install --no-cache-dir -U -r \ + optional-requirements.txt && \ # cleanup apk del --purge \ build-dependencies && \ rm -rf \ - /etc/services.d/php-fpm \ - /etc/logrotate.d/php-fpm7 \ /tmp/* # add local files COPY root/ / # ports and volumes -EXPOSE 80 +EXPOSE 8083 VOLUME /books /config diff --git a/READMETEMPLATE.md b/READMETEMPLATE.md index 95e29a1..b015e17 100644 --- a/READMETEMPLATE.md +++ b/READMETEMPLATE.md @@ -2,7 +2,7 @@ [forumurl]: https://forum.linuxserver.io [ircurl]: https://www.linuxserver.io/irc/ [podcasturl]: https://www.linuxserver.io/podcast/ -[appurl]: www.example.com +[appurl]: https://github.com/janeczku/calibre-web [hub]: https://hub.docker.com/r/example/example/ [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] @@ -12,23 +12,24 @@ The [LinuxServer.io][linuxserverurl] team brings you another container release f * [IRC][ircurl] on freenode at `#linuxserver.io` * [Podcast][podcasturl] covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! -# +# linuxserver/calibre-web -Provide a short, concise description of the application. No more than two SHORT paragraphs. Link to sources where possible and include an image illustrating your point if necessary. Point users to the original applications website, as that's the best place to get support - not here. +[Calibre-Web](https://github.com/janeczku/calibre-web) is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. -Our Plex container has immaculate docs so follow that if in doubt for layout. +This software is a fork of library and licensed under the GPL v3 License. -`IMPORTANT, replace all instances of with the correct dockerhub repo (ie linuxserver/plex) and information (ie, plex)` +[![Calibre-Web](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png)][appurl] ## Usage ``` docker create \ - --name= \ + --name=calibre-web \ -v :/config \ + -v :/books \ -e PGID= -e PUID= \ - -p 1234:1234 \ - + -p 8083:8083 \ + linuxserver/calibre-web ``` ## Parameters @@ -40,12 +41,13 @@ http://192.168.x.x:8080 would show you what's running INSIDE the container on po -* `-p 1234` - the port(s) -* `-v /config` - explain what lives here +* `-p 8083` - calibre-web gui port +* `-v /config` - where calibre-web stores it's database +* `-v /books` - where your calibre database is located * `-e PGID` for GroupID - see below for explanation * `-e PUID` for UserID - see below for explanation -It is based on alpine linux with s6 overlay, for shell access whilst the container is running do `docker exec -it /bin/bash`. +It is based on alpine linux with s6 overlay, for shell access whilst the container is running do `docker exec -it calibre-web /bin/bash`. ### User / Group Identifiers @@ -60,22 +62,39 @@ In this instance `PUID=1001` and `PGID=1001`. To find yours use `id user` as bel ## Setting up the application -Insert a basic user guide here to get a n00b up and running with the software inside the container. DELETE ME +Webui can be found at `http://:8083` + +On the initial setup screen, enter `/books` as your calibre library location. + +**Default admin login:** +*Username:* admin +*Password:* admin123 + +To reverse proxy with our Letsencrypt docker container use the following location block: +``` + location /calibre-web { + proxy_pass http://: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; + } +``` ## Info -* Shell access whilst the container is running: `docker exec -it /bin/bash` -* To monitor the logs of the container in realtime: `docker logs -f ` +* Shell access whilst the container is running: `docker exec -it calibre-web /bin/bash` +* To monitor the logs of the container in realtime: `docker logs -f calibre-web` * container version number -`docker inspect -f '{{ index .Config.Labels "build_version" }}' ` +`docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre-web` * image version number -`docker inspect -f '{{ index .Config.Labels "build_version" }}' ` +`docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre-web` ## Versions -+ **dd.MM.yy:** This is the standard Version type now. ++ **07.06.17:** Initial release diff --git a/root/defaults/app.db b/root/defaults/app.db new file mode 100644 index 0000000..453fca2 Binary files /dev/null and b/root/defaults/app.db differ diff --git a/root/defaults/default b/root/defaults/default deleted file mode 100644 index 3424bea..0000000 --- a/root/defaults/default +++ /dev/null @@ -1,26 +0,0 @@ -upstream wsgi-server { - server 127.0.0.1:8083; -} - -server { - listen 80 default_server; - root /config/www; - index index.html; - - # Serve static files - location ^~ /static/ { - root /app/calibre-web/cps/; - } - - # Proxy connections to the application server - location / { - proxy_pass http://wsgi-server; - proxy_redirect off; - 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-Forwarded-Host $server_name; - proxy_set_header X-Real-IP $remote_addr; - - } -} diff --git a/root/defaults/gunicorn.conf.py b/root/defaults/gunicorn.conf.py deleted file mode 100644 index 782764f..0000000 --- a/root/defaults/gunicorn.conf.py +++ /dev/null @@ -1,6 +0,0 @@ -import os - -workers = 1 -bind = "127.0.0.1:8083" -user = 'abc' -loglevel = 'info' diff --git a/root/defaults/wsgi.py b/root/defaults/wsgi.py deleted file mode 100644 index 1622da4..0000000 --- a/root/defaults/wsgi.py +++ /dev/null @@ -1,6 +0,0 @@ -import os -import sys - -base_path = os.path.dirname(os.path.abspath(__file__)) -sys.path.append(os.path.join(base_path, 'vendor')) -from cps import web diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config index 411c0a2..5105a76 100644 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/cont-init.d/30-config @@ -1,12 +1,13 @@ #!/usr/bin/with-contenv bash -# copy config -[[ ! -e /app/calibre-web/gunicorn.conf.py ]] && \ - cp /defaults/gunicorn.conf.py /app/calibre-web/gunicorn.conf.py +# put database in /config +[[ ! -e /config/app.db ]] && \ + cp /defaults/app.db /config/app.db \ -[[ ! -e /app/calibre-web/wsgi.py ]] && \ - cp /defaults/wsgi.py /app/calibre-web/wsgi.py +# link to /app/calibre-web/app.db +ln -s /config/app.db /app/calibre-web/app.db -# permissions +# permissions chown -R abc:abc \ - /app/calibre-web + /config \ + /app/calibre-web diff --git a/root/etc/services.d/calibre-web/run b/root/etc/services.d/calibre-web/run index 519ed5b..9df1c90 100644 --- a/root/etc/services.d/calibre-web/run +++ b/root/etc/services.d/calibre-web/run @@ -3,5 +3,5 @@ cd /app/calibre-web || exit exec \ - s6-setuidgid abc /usr/bin/gunicorn \ - -c /app/calibre-web/gunicorn.conf.py wsgi:web.app + s6-setuidgid abc python /app/calibre-web/cps.py +