full build test for branched version of mod

This commit is contained in:
thelamer 2019-06-13 08:42:27 -07:00
parent 6ae9c3f235
commit 77b3ae63d0
13 changed files with 104 additions and 843 deletions

View File

@ -1,53 +1,37 @@
FROM lsiobase/ubuntu:bionic
## Buildstage ##
FROM lsiobase/ubuntu:bionic as buildstage
# set version label
ARG BUILD_DATE
ARG VERSION
ARG CALIBREWEB_RELEASE
ARG CALIBRE_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="chbmb"
RUN \
echo "**** install build packages ****" && \
echo "**** Install packages ****" && \
apt-get update && \
apt-get install -y \
git \
python-pip && \
echo "**** install runtime packages ****" && \
apt-get install -y \
imagemagick \
python-minimal && \
echo "**** install calibre-web ****" && \
if [ -z ${CALIBREWEB_RELEASE+x} ]; then \
CALIBREWEB_RELEASE=$(curl -sX GET "https://api.github.com/repos/janeczku/calibre-web/releases/latest" \
xz-utils && \
echo "**** Fetch calibre bin ****" && \
if [ -z ${CALIBRE_RELEASE+x} ]; then \
CALIBRE_RELEASE=$(curl -sX GET "https://api.github.com/repos/kovidgoyal/calibre/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/calibre-web.tar.gz -L \
https://github.com/janeczku/calibre-web/archive/${CALIBREWEB_RELEASE}.tar.gz && \
CALIBRE_RELEASE=$(echo "${CALIBRE_RELEASE}" | sed 's/^v//g' ) && \
mkdir -p \
/app/calibre-web && \
/root-layer/app/calibre && \
curl -o \
/tmp/calibre.txz -L \
"https://github.com/kovidgoyal/calibre/releases/download/v${CALIBRE_RELEASE}/calibre-${CALIBRE_RELEASE}-x86_64.txz" && \
tar xf \
/tmp/calibre-web.tar.gz -C \
/app/calibre-web --strip-components=1 && \
cd /app/calibre-web && \
pip install --no-cache-dir -U -r \
requirements.txt && \
pip install --no-cache-dir -U -r \
optional-requirements.txt && \
echo "**** cleanup ****" && \
apt-get -y purge \
git \
python-pip && \
apt-get -y autoremove && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add local files
COPY root/ /
/tmp/calibre.txz \
-C /root-layer/app/calibre
# ports and volumes
EXPOSE 8083
VOLUME /books /config
# copy local files
COPY root/ /root-layer/
## Single layer deployed image ##
FROM scratch
# Add files from buildstage
COPY --from=buildstage /root-layer/ /

View File

@ -1,67 +0,0 @@
FROM lsiobase/ubuntu:arm64v8-bionic
# set version label
ARG BUILD_DATE
ARG VERSION
ARG CALIBREWEB_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="chbmb"
RUN \
echo "**** install build packages ****" && \
apt-get update && \
apt-get install -y \
g++ \
gcc \
git \
libffi-dev \
libjpeg-dev \
libxml2-dev \
libxslt1-dev \
python-pip \
zlib1g-dev && \
echo "**** install runtime packages ****" && \
apt-get install -y \
imagemagick \
python-minimal && \
echo "**** install calibre-web ****" && \
if [ -z ${CALIBREWEB_RELEASE+x} ]; then \
CALIBREWEB_RELEASE=$(curl -sX GET "https://api.github.com/repos/janeczku/calibre-web/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/calibre-web.tar.gz -L \
https://github.com/janeczku/calibre-web/archive/${CALIBREWEB_RELEASE}.tar.gz && \
mkdir -p \
/app/calibre-web && \
tar xf \
/tmp/calibre-web.tar.gz -C \
/app/calibre-web --strip-components=1 && \
cd /app/calibre-web && \
pip install --no-cache-dir -U -r \
requirements.txt && \
pip install --no-cache-dir -U -r \
optional-requirements.txt && \
echo "**** cleanup ****" && \
apt-get -y purge \
g++ \
gcc \
git \
libffi-dev \
libjpeg-dev \
libxml2-dev \
libxslt1-dev \
python-pip \
zlib1g-dev && \
apt-get -y autoremove && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add local files
COPY root/ /
# ports and volumes
EXPOSE 8083
VOLUME /books /config

View File

@ -1,67 +0,0 @@
FROM lsiobase/ubuntu:arm32v7-bionic
# set version label
ARG BUILD_DATE
ARG VERSION
ARG CALIBREWEB_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="chbmb"
RUN \
echo "**** install build packages ****" && \
apt-get update && \
apt-get install -y \
g++ \
gcc \
git \
libffi-dev \
libjpeg-dev \
libxml2-dev \
libxslt1-dev \
python-pip \
zlib1g-dev && \
echo "**** install runtime packages ****" && \
apt-get install -y \
imagemagick \
python-minimal && \
echo "**** install calibre-web ****" && \
if [ -z ${CALIBREWEB_RELEASE+x} ]; then \
CALIBREWEB_RELEASE=$(curl -sX GET "https://api.github.com/repos/janeczku/calibre-web/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/calibre-web.tar.gz -L \
https://github.com/janeczku/calibre-web/archive/${CALIBREWEB_RELEASE}.tar.gz && \
mkdir -p \
/app/calibre-web && \
tar xf \
/tmp/calibre-web.tar.gz -C \
/app/calibre-web --strip-components=1 && \
cd /app/calibre-web && \
pip install --no-cache-dir -U -r \
requirements.txt && \
pip install --no-cache-dir -U -r \
optional-requirements.txt && \
echo "**** cleanup ****" && \
apt-get -y purge \
g++ \
gcc \
git \
libffi-dev \
libjpeg-dev \
libxml2-dev \
libxslt1-dev \
python-pip \
zlib1g-dev && \
apt-get -y autoremove && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add local files
COPY root/ /
# ports and volumes
EXPOSE 8083
VOLUME /books /config

160
Jenkinsfile vendored
View File

@ -11,9 +11,9 @@ pipeline {
BUILDS_DISCORD=credentials('build_webhook_url')
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
EXT_GIT_BRANCH = 'master'
EXT_USER = 'janeczku'
EXT_REPO = 'calibre-web'
BUILD_VERSION_ARG = 'CALIBREWEB_RELEASE'
EXT_USER = 'kovidgoyal'
EXT_REPO = 'calibre'
BUILD_VERSION_ARG = 'CALIBRE_RELEASE'
LS_USER = 'linuxserver'
LS_REPO = 'docker-calibre-web'
CONTAINER_NAME = 'calibre-web'
@ -21,15 +21,8 @@ pipeline {
DEV_DOCKERHUB_IMAGE = 'lsiodev/calibre-web'
PR_DOCKERHUB_IMAGE = 'lspipepr/calibre-web'
DIST_IMAGE = 'ubuntu'
MULTIARCH='true'
CI='true'
CI_WEB='true'
CI_PORT='8083'
CI_SSL='false'
CI_DELAY='120'
CI_DOCKERENV='TZ=US/Pacific'
CI_AUTH='user:password'
CI_WEBPATH=''
MULTIARCH = 'false'
CI = 'false'
}
stages {
// Setup all the basic environment variables needed for the build
@ -38,7 +31,7 @@ pipeline {
script{
env.EXIT_STATUS = ''
env.LS_RELEASE = sh(
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':mod 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@ -130,10 +123,10 @@ pipeline {
}
}
}
// If this is a master build use live docker endpoints
// If this is a mod build use live docker endpoints
stage("Set ENV live build"){
when {
branch "master"
branch "mod"
environment name: 'CHANGE_ID', value: ''
}
steps {
@ -151,7 +144,7 @@ pipeline {
// If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){
when {
not {branch "master"}
not {branch "mod"}
environment name: 'CHANGE_ID', value: ''
}
steps {
@ -218,7 +211,7 @@ pipeline {
// Use helper containers to render templated files
stage('Update-Templates') {
when {
branch "master"
branch "mod"
environment name: 'CHANGE_ID', value: ''
expression {
env.CONTAINER_NAME != null
@ -229,15 +222,15 @@ pipeline {
set -e
TEMPDIR=$(mktemp -d)
docker pull linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=mod -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
docker pull linuxserver/doc-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=mod -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || \
[ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ] || \
[ "$(cat ${TEMPDIR}/${LS_REPO}/LICENSE | md5sum | cut -c1-8)" != "${LICENSE_TAG}" ]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f master
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f mod
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/LICENSE ${TEMPDIR}/repo/${LS_REPO}/
@ -269,7 +262,7 @@ pipeline {
// Exit the build if the Templated files were just updated
stage('Template-exit') {
when {
branch "master"
branch "mod"
environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true'
expression {
@ -365,89 +358,6 @@ pipeline {
}
}
}
// Take the image we just built and dump package versions for comparison
stage('Update-packages') {
when {
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
if [ "${MULTIARCH}" == "true" ]; then
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
else
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
fi
if [ "${DIST_IMAGE}" == "alpine" ]; then
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
apk info -v > /tmp/package_versions.txt && \
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
chmod 777 /tmp/package_versions.txt'
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
chmod 777 /tmp/package_versions.txt'
fi
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/
wait
git add package_versions.txt
git commit -m 'Bot Updating Package Versions'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process"
else
echo "false" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag is same as previous continue with build process"
fi
rm -Rf ${TEMPDIR}'''
script{
env.PACKAGE_UPDATED = sh(
script: '''cat /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}''',
returnStdout: true).trim()
}
}
}
// Exit the build if the package file was just updated
stage('PACKAGE-exit') {
when {
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: ''
}
steps {
script{
env.EXIT_STATUS = 'ABORTED'
}
}
}
// Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') {
when {
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: ''
expression {
params.PACKAGE_CHECK == 'true'
}
}
steps {
script{
env.EXIT_STATUS = 'ABORTED'
}
}
}
/* #######
Testing
####### */
@ -519,12 +429,12 @@ pipeline {
sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
'''
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:latest"
sh "docker push ${IMAGE}:latest"
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:mod"
sh "docker push ${IMAGE}:mod"
sh "docker push ${IMAGE}:${META_TAG}"
sh '''docker rmi \
${IMAGE}:${META_TAG} \
${IMAGE}:latest || :'''
${IMAGE}:mod || :'''
}
}
@ -554,32 +464,32 @@ pipeline {
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi'''
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-latest"
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-latest"
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-latest"
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-mod"
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-mod"
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-mod"
sh "docker push ${IMAGE}:amd64-${META_TAG}"
sh "docker push ${IMAGE}:arm32v7-${META_TAG}"
sh "docker push ${IMAGE}:arm64v8-${META_TAG}"
sh "docker push ${IMAGE}:amd64-latest"
sh "docker push ${IMAGE}:arm32v7-latest"
sh "docker push ${IMAGE}:arm64v8-latest"
sh "docker manifest push --purge ${IMAGE}:latest || :"
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v7-latest ${IMAGE}:arm64v8-latest"
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v7-latest --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8"
sh "docker push ${IMAGE}:amd64-mod"
sh "docker push ${IMAGE}:arm32v7-mod"
sh "docker push ${IMAGE}:arm64v8-mod"
sh "docker manifest push --purge ${IMAGE}:mod || :"
sh "docker manifest create ${IMAGE}:mod ${IMAGE}:amd64-mod ${IMAGE}:arm32v7-mod ${IMAGE}:arm64v8-mod"
sh "docker manifest annotate ${IMAGE}:mod ${IMAGE}:arm32v7-mod --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:mod ${IMAGE}:arm64v8-mod --os linux --arch arm64 --variant v8"
sh "docker manifest push --purge ${IMAGE}:${META_TAG} || :"
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
sh "docker manifest push --purge ${IMAGE}:latest"
sh "docker manifest push --purge ${IMAGE}:mod"
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
sh '''docker rmi \
${IMAGE}:amd64-${META_TAG} \
${IMAGE}:amd64-latest \
${IMAGE}:amd64-mod \
${IMAGE}:arm32v7-${META_TAG} \
${IMAGE}:arm32v7-latest \
${IMAGE}:arm32v7-mod \
${IMAGE}:arm64v8-${META_TAG} \
${IMAGE}:arm64v8-latest \
${IMAGE}:arm64v8-mod \
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
}
@ -588,7 +498,7 @@ pipeline {
// If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') {
when {
branch "master"
branch "mod"
expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
@ -600,17 +510,17 @@ pipeline {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to mod",\
"type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"target_commitish": "master",\
"target_commitish": "mod",\
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json
printf '","draft": false,"prerelease": true}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
}

0
LICENSE Executable file → Normal file
View File

217
README.md
View File

@ -1,213 +1,20 @@
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[linuxserverurl]: https://linuxserver.io
[forumurl]: https://forum.linuxserver.io
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring :-
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png?v=4&s=4000)][linuxserverurl]
* regular and timely application updates
* easy user mappings (PGID, PUID)
* custom base image with s6 overlay
* weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
* regular security updates
Find us at:
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [IRC](https://irc.linuxserver.io) - on freenode at `#linuxserver.io`. Our primary support channel is Discord.
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
# [linuxserver/calibre-web](https://github.com/linuxserver/docker-calibre-web)
[![](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn)
[![](https://images.microbadger.com/badges/version/linuxserver/calibre-web.svg)](https://microbadger.com/images/linuxserver/calibre-web "Get your own version badge on microbadger.com")
[![](https://images.microbadger.com/badges/image/linuxserver/calibre-web.svg)](https://microbadger.com/images/linuxserver/calibre-web "Get your own version badge on microbadger.com")
![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/calibre-web.svg)
![Docker Stars](https://img.shields.io/docker/stars/linuxserver/calibre-web.svg)
[![Build Status](https://ci.linuxserver.io/buildStatus/icon?job=Docker-Pipeline-Builders/docker-calibre-web/master)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-calibre-web/job/master/)
[![](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/calibre-web/latest/badge.svg)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/calibre-web/latest/index.html)
[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.
This software is a fork of library and licensed under the GPL v3 License.
[![calibre-web](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png)](https://github.com/janeczku/calibre-web)
## Supported Architectures
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `linuxserver/calibre-web` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
| Architecture | Tag |
| :----: | --- |
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
## Usage
Here are some example snippets to help you get started creating a container.
### docker
```
docker create \
--name=calibre-web \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-p 8083:8083 \
-v <path to data>:/config \
-v <path to calibre library>:/books \
--restart unless-stopped \
linuxserver/calibre-web
```
### docker-compose
Compatible with docker-compose v2 schemas.
```
---
version: "2"
services:
calibre-web:
image: linuxserver/calibre-web
container_name: calibre-web
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- <path to data>:/config
- <path to calibre library>:/books
ports:
- 8083:8083
restart: unless-stopped
```
## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function |
| :----: | --- |
| `-p 8083` | WebUI |
| `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London. |
| `-v /config` | Where calibre-web stores the internal database and config. |
| `-v /books` | Where your calibre database is locate. |
## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
```
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
```
## Contact information:-
| Type | Address/Details |
| :---: | --- |
| Discord | [Discord](https://discord.gg/YWrKVTn) |
| Forum | [Linuserver.io forum][forumurl] |
&nbsp;
## Application Setup
&nbsp;
Webui can be found at `http://your-ip:8083`
The code in this branch is not meant for direct consumption it is a modification layer to inject the calibre binary and dependancies into the x86 variant of `linuxserver/calibre-web`
On the initial setup screen, enter `/books` as your calibre library location.
The following line is only in this repo for release messaging:
**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://<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;
}
```
## Support Info
* 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" }}' calibre-web`
* image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/calibre-web`
## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers:
### Via Docker Run/Create
* Update the image: `docker pull linuxserver/calibre-web`
* Stop the running container: `docker stop calibre-web`
* Delete the container: `docker rm calibre-web`
* Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* Start the new container: `docker start calibre-web`
* You can also remove the old dangling images: `docker image prune`
### Via Docker Compose
* Update all images: `docker-compose pull`
* or update a single image: `docker-compose pull calibre-web`
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d calibre-web`
* You can also remove the old dangling images: `docker image prune`
### Via Watchtower auto-updater (especially useful if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once calibre-web
```
* You can also remove the old dangling images: `docker image prune`
## Building locally
If you want to make local modifications to these images for development purposes or just to customize the logic:
```
git clone https://github.com/linuxserver/docker-calibre-web.git
cd docker-calibre-web
docker build \
--no-cache \
--pull \
-t linuxserver/calibre-web:latest .
```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```
docker run --rm --privileged multiarch/qemu-user-static:register --reset
```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions
* **02.06.19:** - Rebase to Ubuntu Bionic & add Gdrive support.
* **23.03.19:** - Switching to new Base images, shift to arm32v7 tag.
* **23.02.19:** - Rebase to alpine 3.9, use repo version of imagemagick.
* **11.02.19:** - Add pipeline logic and multi arch.
* **03.01.19:** - Remove guest user from default app.db.
* **16.08.18:** - Rebase to alpine 3.8.
* **03.07.18:** - New build pushed, all versions below `67` have [vulnerability](https://github.com/janeczku/calibre-web/issues/534).
* **05.01.18:** - Deprecate cpu_core routine lack of scaling.
* **06.12.17:** - Rebase to alpine 3.7.
* **27.11.17:** - Use cpu core counting routine to speed up build time.
* **24.07.17:** - Curl version for imagemagick.
* **17.07.17:** - Initial release.
- { date: "01.01.50:", desc: "I am the release message for this custom branch" }

View File

@ -3,14 +3,15 @@
# jenkins variables
project_name: docker-calibre-web
external_type: github_stable
release_type: stable
release_tag: latest
ls_branch: master
release_type: prerelease
release_tag: mod
ls_branch: mod
skip_package_check: true
repo_vars:
- EXT_GIT_BRANCH = 'master'
- EXT_USER = 'janeczku'
- EXT_REPO = 'calibre-web'
- BUILD_VERSION_ARG = 'CALIBREWEB_RELEASE'
- EXT_USER = 'kovidgoyal'
- EXT_REPO = 'calibre'
- BUILD_VERSION_ARG = 'CALIBRE_RELEASE'
- LS_USER = 'linuxserver'
- LS_REPO = 'docker-calibre-web'
- CONTAINER_NAME = 'calibre-web'
@ -18,12 +19,5 @@ repo_vars:
- DEV_DOCKERHUB_IMAGE = 'lsiodev/calibre-web'
- PR_DOCKERHUB_IMAGE = 'lspipepr/calibre-web'
- DIST_IMAGE = 'ubuntu'
- MULTIARCH='true'
- CI='true'
- CI_WEB='true'
- CI_PORT='8083'
- CI_SSL='false'
- CI_DELAY='120'
- CI_DOCKERENV='TZ=US/Pacific'
- CI_AUTH='user:password'
- CI_WEBPATH=''
- MULTIARCH = 'false'
- CI = 'false'

View File

@ -1,216 +0,0 @@
adduser3.116ubuntu1
apt1.6.10
apt-utils1.6.10
base-files10.1ubuntu2.4
base-passwd3.5.44
bash4.4.18-2ubuntu1.1
bsdutils1:2.31.1-0.4ubuntu3.3
bzip21.0.6-8.1
ca-certificates20180409
coreutils8.28-1ubuntu1
curl7.58.0-2ubuntu3.7
dash0.5.8-2.10
dbus1.12.2-1ubuntu1
debconf1.5.66ubuntu1
debianutils4.8.4
diffutils1:3.6-1
dpkg1.19.0.5ubuntu2.1
e2fsprogs1.44.1-1ubuntu1.1
fdisk2.31.1-0.4ubuntu3.3
file1:5.32-2ubuntu0.2
findutils4.6.0+git+20170828-2
fontconfig2.12.6-0ubuntu2
fontconfig-config2.12.6-0ubuntu2
fonts-dejavu-core2.37-1
fonts-droid-fallback1:6.0.1r16-1.1
fonts-noto-mono20171026-2
gcc-8-base8.3.0-6ubuntu1~18.04
ghostscript9.26~dfsg+0-0ubuntu0.18.04.9
gpgv2.2.4-1ubuntu1.2
grep3.1-2
gsfonts1:8.11+urwcyr1.0.7~pre44-4.4
gzip1.6-5ubuntu1
hicolor-icon-theme0.17-2
hostname3.20
imagemagick-6-common8:6.9.7.4+dfsg-16ubuntu6.4
imagemagick-6.q168:6.9.7.4+dfsg-16ubuntu6.4
imagemagick8:6.9.7.4+dfsg-16ubuntu6.4
init-system-helpers1.51
krb5-locales1.16-2ubuntu0.1
libacl12.2.52-3build1
libapparmor12.12-4ubuntu5.1
libapt-inst2.01.6.10
libapt-pkg5.01.6.10
libasn1-8-heimdal7.5.0+dfsg-1
libattr11:2.4.47-2build1
libaudit11:2.8.2-1ubuntu1
libaudit-common1:2.8.2-1ubuntu1
libavahi-client30.7-3.1ubuntu1.2
libavahi-common30.7-3.1ubuntu1.2
libavahi-common-data0.7-3.1ubuntu1.2
libblkid12.31.1-0.4ubuntu3.3
libbsd00.8.7-1
libbz2-1.01.0.6-8.1
libc62.27-3ubuntu1
libcairo21.15.10-2ubuntu0.1
libcap-ng00.7.7-3.1
libc-bin2.27-3ubuntu1
libcom-err21.44.1-1ubuntu1.1
libcups22.2.7-1ubuntu2.6
libcupsfilters11.20.2-0ubuntu3.1
libcupsimage22.2.7-1ubuntu2.6
libcurl47.58.0-2ubuntu3.7
libdatrie10.2.10-7
libdb5.35.3.28-13.1ubuntu1.1
libdbus-1-31.12.2-1ubuntu1
libdebconfclient00.213ubuntu1
libdjvulibre213.5.27.1-8
libdjvulibre-text3.5.27.1-8
libexpat12.2.5-3
libext2fs21.44.1-1ubuntu1.1
libfdisk12.31.1-0.4ubuntu3.3
libffi63.2.1-8
libfftw3-double33.3.7-1
libfontconfig12.12.6-0ubuntu2
libfreetype62.8.1-2ubuntu2
libgcc11:8.3.0-6ubuntu1~18.04
libgcrypt201.8.1-4ubuntu1.1
libglib2.0-02.56.4-0ubuntu0.18.04.2
libglib2.0-data2.56.4-0ubuntu0.18.04.2
libgmp102:6.1.2+dfsg-2
libgnutls303.5.18-1ubuntu1.1
libgomp18.3.0-6ubuntu1~18.04
libgpg-error01.27-6
libgraphite2-31.3.11-2
libgs99.26~dfsg+0-0ubuntu0.18.04.9
libgs9-common9.26~dfsg+0-0ubuntu0.18.04.9
libgssapi3-heimdal7.5.0+dfsg-1
libgssapi-krb5-21.16-2ubuntu0.1
libharfbuzz0b1.7.2-1ubuntu1
libhcrypto4-heimdal7.5.0+dfsg-1
libheimbase1-heimdal7.5.0+dfsg-1
libheimntlm0-heimdal7.5.0+dfsg-1
libhogweed43.4-1
libhx509-5-heimdal7.5.0+dfsg-1
libicu6060.2-3ubuntu3
libidn111.33-2.1ubuntu1.2
libidn2-02.0.4-1.1build2
libijs-0.350.35-13
libilmbase122.2.0-11ubuntu2
libjbig02.1-3.1build1
libjbig2dec00.13-6
libjpeg88c-2ubuntu8
libjpeg-turbo81.5.2-0ubuntu5.18.04.1
libk5crypto31.16-2ubuntu0.1
libkeyutils11.5.9-9.2ubuntu2
libkrb5-26-heimdal7.5.0+dfsg-1
libkrb5-31.16-2ubuntu0.1
libkrb5support01.16-2ubuntu0.1
liblcms2-22.9-1ubuntu0.1
libldap-2.4-22.4.45+dfsg-1ubuntu1.2
libldap-common2.4.45+dfsg-1ubuntu1.2
liblqr-1-00.4.2-2.1
libltdl72.4.6-2
liblz4-10.0~r131-2ubuntu3
liblzma55.2.2-1.3
libmagic11:5.32-2ubuntu0.2
libmagickcore-6.q16-38:6.9.7.4+dfsg-16ubuntu6.4
libmagickcore-6.q16-3-extra8:6.9.7.4+dfsg-16ubuntu6.4
libmagickwand-6.q16-38:6.9.7.4+dfsg-16ubuntu6.4
libmagic-mgc1:5.32-2ubuntu0.2
libmount12.31.1-0.4ubuntu3.3
libncurses56.1-1ubuntu1.18.04
libncursesw56.1-1ubuntu1.18.04
libnetpbm102:10.0-15.3build1
libnettle63.4-1
libnghttp2-141.30.0-1ubuntu1
libopenexr222.2.0-11.1ubuntu1
libp11-kit00.23.9-2
libpam0g1.1.8-3.6ubuntu2.18.04.1
libpam-modules1.1.8-3.6ubuntu2.18.04.1
libpam-modules-bin1.1.8-3.6ubuntu2.18.04.1
libpam-runtime1.1.8-3.6ubuntu2.18.04.1
libpango-1.0-01.40.14-1ubuntu0.1
libpangocairo-1.0-01.40.14-1ubuntu0.1
libpangoft2-1.0-01.40.14-1ubuntu0.1
libpaper11.1.24+nmu5ubuntu1
libpaper-utils1.1.24+nmu5ubuntu1
libpcre32:8.39-9
libpixman-1-00.34.0-2
libpng16-161.6.34-1ubuntu0.18.04.2
libprocps62:3.3.12-3ubuntu1.1
libpsl50.19.1-5build1
libpython2.7-minimal2.7.15-4ubuntu4~18.04
libpython2.7-stdlib2.7.15-4ubuntu4~18.04
libpython-stdlib2.7.15~rc1-1
libreadline77.0-3
libroken18-heimdal7.5.0+dfsg-1
librtmp12.4+20151223.gitfa8646d.1-1
libsasl2-22.1.27~101-g0780600+dfsg-3ubuntu2
libsasl2-modules2.1.27~101-g0780600+dfsg-3ubuntu2
libsasl2-modules-db2.1.27~101-g0780600+dfsg-3ubuntu2
libseccomp22.4.1-0ubuntu0.18.04.2
libselinux12.7-2build2
libsemanage12.7-2build2
libsemanage-common2.7-2build2
libsepol12.7-1
libsmartcols12.31.1-0.4ubuntu3.3
libsqlite3-03.22.0-1
libss21.44.1-1ubuntu1.1
libssl1.11.1.1-1ubuntu2.1~18.04.1
libstdc++68.3.0-6ubuntu1~18.04
libsystemd0237-3ubuntu10.21
libtasn1-64.13-2
libthai00.1.27-2
libthai-data0.1.27-2
libtiff54.0.9-5ubuntu0.2
libtinfo56.1-1ubuntu1.18.04
libudev1237-3ubuntu10.21
libunistring20.9.9-0ubuntu2
libuuid12.31.1-0.4ubuntu3.3
libwind0-heimdal7.5.0+dfsg-1
libwmf0.2-70.2.8.4-12
libx11-62:1.6.4-3ubuntu0.2
libx11-data2:1.6.4-3ubuntu0.2
libxau61:1.0.8-1
libxcb11.13-2~ubuntu18.04
libxcb-render01.13-2~ubuntu18.04
libxcb-shm01.13-2~ubuntu18.04
libxdmcp61:1.1.2-3
libxext62:1.3.3-1
libxml22.9.4+dfsg1-6.1ubuntu1.2
libxrender11:0.9.10-1
libzstd11.3.3+dfsg-2ubuntu1
locales2.27-3ubuntu1
login1:4.5-1ubuntu2
lsb-base9.20170808ubuntu1
mawk1.3.3-17ubuntu3
mime-support3.60ubuntu1
mount2.31.1-0.4ubuntu3.3
multiarch-support2.27-3ubuntu1
ncurses-base6.1-1ubuntu1.18.04
ncurses-bin6.1-1ubuntu1.18.04
netpbm2:10.0-15.3build1
openssl1.1.0g-2ubuntu4.3
passwd1:4.5-1ubuntu2
perl-base5.26.1-6ubuntu0.3
poppler-data0.4.8-2
procps2:3.3.12-3ubuntu1.1
publicsuffix20180223.1310-1
python2.7.15~rc1-1
python2.72.7.15-4ubuntu4~18.04
python2.7-minimal2.7.15-4ubuntu4~18.04
python-minimal2.7.15~rc1-1
readline-common7.0-3
sed4.4-2
sensible-utils0.0.12
shared-mime-info1.9-2
sysvinit-utils2.88dsf-59.10ubuntu1
tar1.29b-2ubuntu0.1
tzdata2019a-0ubuntu0.18.04
ubuntu-keyring2018.09.18.1~18.04.0
ucf3.0038
util-linux2.31.1-0.4ubuntu3.3
xdg-user-dirs0.17-1ubuntu1
xz-utils5.2.2-1.3
zlib1g1:1.2.11.dfsg-0ubuntu2

View File

@ -2,75 +2,26 @@
# project information
project_name: calibre-web
project_url: "https://github.com/janeczku/calibre-web"
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png"
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_blurb: |
[{{ project_name|capitalize }}]({{ project_url }}) 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.
full_custom_readme: |
{% raw -%}
[linuxserverurl]: https://linuxserver.io
[forumurl]: https://forum.linuxserver.io
This software is a fork of library and licensed under the GPL v3 License.
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png?v=4&s=4000)][linuxserverurl]
# supported architectures
available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
## Contact information:-
# container parameters
common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}"
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." }
param_usage_include_vols: true
param_volumes:
- { vol_path: "/config", vol_host_path: "<path to data>", desc: "Where calibre-web stores the internal database and config." }
- { vol_path: "/books", vol_host_path: "<path to calibre library>", desc: "Where your calibre database is locate." }
param_usage_include_ports: true
param_ports:
- { external_port: "8083", internal_port: "8083", port_desc: "WebUI" }
| Type | Address/Details |
| :---: | --- |
| Discord | [Discord](https://discord.gg/YWrKVTn) |
| Forum | [Linuserver.io forum][forumurl] |
# optional container parameters
opt_param_usage_include_env: false
opt_param_usage_include_vols: false
opt_param_usage_include_ports: false
opt_param_device_map: false
opt_cap_add_param: false
optional_block_1: false
&nbsp;
&nbsp;
# application setup block
app_setup_block_enabled: true
app_setup_block: |
Webui can be found at `http://your-ip:8083`
The code in this branch is not meant for direct consumption it is a modification layer to inject the calibre binary and dependancies into the x86 variant of `linuxserver/calibre-web`
On the initial setup screen, enter `/books` as your calibre library location.
The following line is only in this repo for release messaging:
**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://<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;
}
```
# changelog
changelogs:
- { date: "02.06.19:", desc: "Rebase to Ubuntu Bionic & add Gdrive support." }
- { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." }
- { date: "23.02.19:", desc: "Rebase to alpine 3.9, use repo version of imagemagick." }
- { date: "11.02.19:", desc: "Add pipeline logic and multi arch." }
- { date: "03.01.19:", desc: "Remove guest user from default app.db." }
- { date: "16.08.18:", desc: "Rebase to alpine 3.8." }
- { date: "03.07.18:", desc: "New build pushed, all versions below `67` have [vulnerability](https://github.com/janeczku/calibre-web/issues/534)." }
- { date: "05.01.18:", desc: "Deprecate cpu_core routine lack of scaling." }
- { date: "06.12.17:", desc: "Rebase to alpine 3.7." }
- { date: "27.11.17:", desc: "Use cpu core counting routine to speed up build time." }
- { date: "24.07.17:", desc: "Curl version for imagemagick." }
- { date: "17.07.17:", desc: "Initial release." }
- { date: "01.01.50:", desc: "I am the release message for this custom branch" }
{%- endraw %}

Binary file not shown.

View File

@ -1,38 +0,0 @@
#!/usr/bin/with-contenv bash
# create symlinks for database and log
[[ ! -f /config/app.db ]] && \
cp /defaults/app.db /config/app.db
[[ -f /app/calibre-web/app.db ]] && \
rm /app/calibre-web/app.db
[[ ! -L /app/calibre-web/app.db ]] && \
ln -s /config/app.db /app/calibre-web/app.db
# create symlinks for log
[[ ! -f /config/calibre-web.log ]] && \
touch /config/calibre-web.log
[[ -f /app/calibre-web/calibre-web.log ]] && \
rm /app/calibre-web/calibre-web.log
[[ ! -L /app/calibre-web/calibre-web.log ]] && \
ln -s /config/calibre-web.log /app/calibre-web/calibre-web.log
# create Google drive client_secrets.json file
[[ ! -f /config/client_secrets.json ]] && \
echo "{}" > /config/client_secrets.json
[[ -f /app/calibre-web/client_secrets.json ]] &&
rm /app/calibre-web/client_secrets.json
[[ ! -L /app/calibre-web/client_secrets.json ]] &&
ln -s /config/client_secrets.json /app/calibre-web/client_secrets.json
# create Google drive symlinks for database
[[ ! -f /config/gdrive.db ]] && \
cp /app/calibre-web/gdrive.db /config/gdrive.db
[[ -f /app/calibre-web/gdrive.db ]] && \
rm /app/calibre-web/gdrive.db
[[ ! -L /app/calibre-web/gdrive.db ]] && \
ln -s /config/gdrive.db /app/calibre-web/gdrive.db
# permissions
chown -R abc:abc \
/config \
/app/calibre-web

View File

@ -0,0 +1,9 @@
#!/usr/bin/with-contenv bash
if [ ! -e /usr/bin/calibre-server ]; then
/app/calibre/calibre_postinstall
fi
if [ ! -L /usr/lib/x86_64-linux-gnu/libGL.so.1 ]; then
apt update && apt install -y libgl1-mesa-glx
fi

View File

@ -1,6 +0,0 @@
#!/usr/bin/with-contenv bash
cd /app/calibre-web || exit
exec \
s6-setuidgid abc python /app/calibre-web/cps.py