From 884dd434196d4a4c8164d9f8c2c4de3fbf86cd05 Mon Sep 17 00:00:00 2001 From: ange Date: Sat, 3 Feb 2024 20:22:38 +0100 Subject: [PATCH] feat: lazylibrarian --- lazylibrarian/.env | 6 ++++++ lazylibrarian/Dockerfile | 17 +++++++++++++++++ lazylibrarian/compose.yaml | 36 ++++++++++++++++++++++++++++++++++++ lazylibrarian/config.ini | 4 ++++ lazylibrarian/install_site | 1 + lazylibrarian/nginx.conf | 29 +++++++++++++++++++++++++++++ 6 files changed, 93 insertions(+) create mode 100644 lazylibrarian/.env create mode 100644 lazylibrarian/Dockerfile create mode 100644 lazylibrarian/compose.yaml create mode 100644 lazylibrarian/config.ini create mode 120000 lazylibrarian/install_site create mode 100644 lazylibrarian/nginx.conf diff --git a/lazylibrarian/.env b/lazylibrarian/.env new file mode 100644 index 0000000..ce897e5 --- /dev/null +++ b/lazylibrarian/.env @@ -0,0 +1,6 @@ +BASE_URL=lazylibrarian. +EMAIL= +MEDIA_PATH= + +PUID=1000 +PGID=1000 diff --git a/lazylibrarian/Dockerfile b/lazylibrarian/Dockerfile new file mode 100644 index 0000000..4c5f963 --- /dev/null +++ b/lazylibrarian/Dockerfile @@ -0,0 +1,17 @@ +FROM docker.io/python:3.12-slim as base +ENV DEBIAN_FRONTEND=noninteractive +WORKDIR /app/ + +FROM base as build +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + && rm -rf /var/lib/apt/lists/* +ARG LL='https://gitlab.com/LazyLibrarian/LazyLibrarian.git' +RUN git clone --depth 1 "$LL" . + +FROM base +COPY --from=build /app/ . +EXPOSE 5299 +RUN pip install --no-cache-dir . +CMD ["python", "LazyLibrarian.py", "--datadir", "/config", "--nolaunch"] diff --git a/lazylibrarian/compose.yaml b/lazylibrarian/compose.yaml new file mode 100644 index 0000000..8d9100c --- /dev/null +++ b/lazylibrarian/compose.yaml @@ -0,0 +1,36 @@ +--- +services: + install_site: + build: install_site + environment: + - BASE_URL + - EMAIL + volumes: + - ./nginx.conf:/web/lazylibrarian.conf + - sites:/sites/ + - certs:/etc/letsencrypt/ + - certbotroot:/var/www/certbot/ + - /var/run/docker.sock:/var/run/docker.sock + + lazilibrarian: + build: . + user: "$PUID:PGID" + restart: unless-stopped + volumes: + - config:/config/ + - $MEDIA_PATH:/data/ + networks: + - nginx + +volumes: + sites: + external: true + certs: + external: true + certbotroot: + external: true + config: + +networks: + nginx: + external: true diff --git a/lazylibrarian/config.ini b/lazylibrarian/config.ini new file mode 100644 index 0000000..144be74 --- /dev/null +++ b/lazylibrarian/config.ini @@ -0,0 +1,4 @@ +[General] +logdir = /config/log +destination_dir = /data/media/books +download_dir = /data/torrents diff --git a/lazylibrarian/install_site b/lazylibrarian/install_site new file mode 120000 index 0000000..846f55c --- /dev/null +++ b/lazylibrarian/install_site @@ -0,0 +1 @@ +../_nginx/install_site \ No newline at end of file diff --git a/lazylibrarian/nginx.conf b/lazylibrarian/nginx.conf new file mode 100644 index 0000000..d6d49d7 --- /dev/null +++ b/lazylibrarian/nginx.conf @@ -0,0 +1,29 @@ +server { + listen 80; + listen [::]:80; + server_name $BASE_URL; + + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl; + listen [::]:443 ssl; + server_name $BASE_URL; + + ssl_certificate /etc/letsencrypt/live/$BASE_URL/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/$BASE_URL/privkey.pem; + + location / { + proxy_pass http://lazylibrarian:5299; + + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $http_connection; + proxy_redirect off; + proxy_http_version 1.1; + } +}