diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..d741e40 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 diff --git a/.gitea/workflows/container.yaml b/.gitea/workflows/container.yaml deleted file mode 100644 index e48b3fd..0000000 --- a/.gitea/workflows/container.yaml +++ /dev/null @@ -1,12 +0,0 @@ -name: Build Multiarch Container Image -on: [push] -jobs: - call-reusable-workflow: - uses: container/multiarch-build-workflow/.gitea/workflows/build.yaml@main - with: - repository: ${{ gitea.repository }} - ref_name: ${{ gitea.ref_name }} - sha: ${{ gitea.sha }} - registry_url: ${{ secrets.REGISTRY_URL }} - registry_user: ${{ secrets.REGISTRY_USER }} - registry_pw: ${{ secrets.REGISTRY_PW }} diff --git a/Containerfile b/Containerfile deleted file mode 100644 index b67fce1..0000000 --- a/Containerfile +++ /dev/null @@ -1,85 +0,0 @@ -FROM docker.io/alpine:3.19 as builder - -RUN apk --no-cache add \ - bash \ - coreutils \ - perl \ - make \ - automake \ - autoconf \ - gcc \ - git \ - curl \ - lua5.1-dev \ - musl-dev \ - pcre-dev \ - zlib-dev \ - lua5.1 \ - luarocks5.1 \ - openssl \ - openssl-dev \ - pcre-dev \ - zlib-dev \ - patch - -RUN ln -s /usr/bin/aclocal-1.16 /usr/bin/aclocal-1.15 -RUN ln -s /usr/bin/automake-1.16 /usr/bin/automake-1.15 - -ENV RESTY_VERSION=1.21.4.3 -ENV RESTY_SHA256_SUM=33a84c63cfd9e46b0e5c62eb2ddc7b8068bda2e1686314343b89fc3ffd24cdd3 - -RUN wget https://openresty.org/download/openresty-$RESTY_VERSION.tar.gz -RUN echo "$RESTY_SHA256_SUM openresty-$RESTY_VERSION.tar.gz" | sha256sum -c - || exit 1 -RUN tar xvf openresty-$RESTY_VERSION.tar.gz -RUN cd openresty-$RESTY_VERSION && \ - ./configure --with-pcre-jit --with-ipv6 --with-http_v2_module && \ - make && \ - make install - -ADD gin.patch /gin.patch -RUN git clone https://github.com/ostinelli/gin -ENV GIN_VERSION=cb35e87fa0671fcf25e5bce5cb9487dee8b497e2 - -WORKDIR /gin -RUN git checkout "$GIN_VERSION" -RUN patch -N -p1 < ../gin.patch -RUN luarocks-5.1 make - -WORKDIR / -RUN git clone https://github.com/koreader/koreader-sync-server.git -ENV SYNC_VERSION=14c64347627d07cf6e72552705bf1642a39a8908 -WORKDIR /koreader-sync-server -RUN git checkout "$SYNC_VERSION" - -FROM docker.io/thallian/confd-env:3.19-3.1.6.2 - -RUN addgroup syncer -RUN adduser -h /app -D -G syncer syncer - -COPY --from=builder /usr/local/openresty /usr/local/openresty -COPY --from=builder /usr/local/share/lua/5.1 /usr/local/share/lua/5.1 -COPY --from=builder /usr/local/lib/lua/5.1 /usr/local/lib/lua/5.1 -COPY --from=builder /usr/local/lib/luarocks/rocks-5.1 /usr/local/lib/luarocks/rocks-5.1 -COPY --from=builder /usr/local/bin/gin /usr/local/bin/gin -COPY --from=builder --chown=syncer:syncer /koreader-sync-server /app/server - -RUN ln -s /usr/local/openresty/nginx/sbin/nginx /usr/local/bin/nginx - -RUN apk --no-cache add \ - redis \ - openssl \ - libgcc \ - pcre \ - lua5.1 \ - unzip \ - zlib - -ADD /rootfs / - -ENV GIN_ENV production - -WORKDIR / - -EXPOSE 7200 -VOLUME /var/lib/redis/ - diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f60961e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM thallian/confd-env:latest + +ENV OPENRESTY_VERSION 1.11.2.4 + +RUN addgroup syncer +RUN adduser -h /app -D -G syncer syncer + +RUN apk --no-cache add tar redis make git libressl libssl1.0 perl gcc musl-dev pcre pcre-dev openssl-dev lua lua-dev unzip zlib zlib-dev curl luarocks libgcc + +WORKDIR /app + +RUN luarocks-5.1 install luasec +RUN luarocks-5.1 install luaposix +RUN luarocks-5.1 install redis-lua +RUN luarocks-5.1 install busted + +RUN mkdir /app/openresty +RUN wget -qO- https://openresty.org/download/openresty-$OPENRESTY_VERSION.tar.gz | tar -xz -C /app/openresty --strip 1 + +WORKDIR /app/openresty +RUN ./configure --prefix=/opt/openresty && make && make install +ENV PATH /opt/openresty/nginx/sbin:$PATH + +WORKDIR /app +RUN git clone https://github.com/ostinelli/gin +ADD /rootfs / + +RUN cd gin && patch -N -p1 < ../gin.patch +RUN cd gin && luarocks-5.1 make +ENV GIN_ENV production + +RUN git clone https://github.com/koreader/koreader-sync-server.git server +RUN chown -R syncer:syncer /app + +RUN ln -s /usr/lib/lua /usr/local/lib/lua +RUN ln -s /usr/share/lua/ /usr/local/share/lua + +RUN apk del tar make git gcc musl-dev pcre-dev openssl-dev lua-dev zlib-dev + +EXPOSE 7200 +VOLUME /var/lib/redis/ diff --git a/README.md b/README.md index 6a01b89..2a10bb4 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,19 @@ -[Koreader Sync Server](https://github.com/koreader/koreader-sync-server) to sync -[Koreader](https://github.com/koreader/koreader) devices. +[Koreader Sync Server](https://github.com/koreader/koreader-sync-server) to sync [Koreader](https://github.com/koreader/koreader) devices. # Volumes - `/var/lib/redis/` +- `/etc/ssl/nginx/:ro`: certificates must be here + +# Environment Variables +## CERT_NAME +- default: fullchain.pem + +Name of the certificate file. + +## KEY_NAME +- default: privkey.pem + +Name of the key file. # Ports - 7200 diff --git a/gin.patch b/rootfs/app/gin.patch similarity index 84% rename from gin.patch rename to rootfs/app/gin.patch index 9acbc0a..b3f87f7 100644 --- a/gin.patch +++ b/rootfs/app/gin.patch @@ -3,15 +3,10 @@ index b9601ec..55f4469 100644 --- a/gin-0.2.0-1.rockspec +++ b/gin-0.2.0-1.rockspec @@ -18,8 +18,9 @@ dependencies = { -- "lua = 5.1", -+ "lua = 5.1", - "ansicolors = 1.0.2-3", -- "busted = 2.0.rc10-0", -+ "busted = 2.0.0-1", -- "lua-cjson = 2.1.0-1", -+ "lua-cjson = 2.1.0.6-1", + "busted = 2.0.rc10-0", + "lua-cjson = 2.1.0-1", "luasocket = 3.0rc1-2", -+ "luasec = 0.9-1", ++ "luasec = 0.5-2", "luafilesystem = 1.6.3-1", - "luaposix = 33.3.1-1", + "luaposix = 33.4.0", @@ -49,4 +44,4 @@ index 5ef537a..21ec8f9 100644 + local ok, response_status, response_headers = http_request({ method = request.method, url = full_url, - source = ltn12.source.string(request.body), + source = ltn12.source.string(request.body), \ No newline at end of file diff --git a/rootfs/etc/fix-attrs.d/01-redis b/rootfs/etc/fix-attrs.d/01-redis new file mode 100644 index 0000000..3ad7eb2 --- /dev/null +++ b/rootfs/etc/fix-attrs.d/01-redis @@ -0,0 +1 @@ +/var/lib/redis/ true redis 0640 0750 \ No newline at end of file diff --git a/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/dependencies b/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/dependencies deleted file mode 100644 index 7ba7514..0000000 --- a/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/dependencies +++ /dev/null @@ -1 +0,0 @@ -confd diff --git a/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/type b/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/type deleted file mode 100644 index 5883cff..0000000 --- a/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/type +++ /dev/null @@ -1 +0,0 @@ -longrun diff --git a/rootfs/etc/s6-overlay/s6-rc.d/redis/type b/rootfs/etc/s6-overlay/s6-rc.d/redis/type deleted file mode 100644 index 5883cff..0000000 --- a/rootfs/etc/s6-overlay/s6-rc.d/redis/type +++ /dev/null @@ -1 +0,0 @@ -longrun diff --git a/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/koreader-sync b/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/koreader-sync deleted file mode 100644 index e69de29..0000000 diff --git a/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/redis b/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/redis deleted file mode 100644 index e69de29..0000000 diff --git a/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/run b/rootfs/etc/services.d/koreader-sync/run similarity index 77% rename from rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/run rename to rootfs/etc/services.d/koreader-sync/run index 6c5e348..295b349 100644 --- a/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/run +++ b/rootfs/etc/services.d/koreader-sync/run @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/with-contenv sh cd /app/server s6-setuidgid syncer gin start diff --git a/rootfs/etc/s6-overlay/s6-rc.d/redis/run b/rootfs/etc/services.d/redis/run similarity index 66% rename from rootfs/etc/s6-overlay/s6-rc.d/redis/run rename to rootfs/etc/services.d/redis/run index ef35afb..39fc60e 100644 --- a/rootfs/etc/s6-overlay/s6-rc.d/redis/run +++ b/rootfs/etc/services.d/redis/run @@ -1,3 +1,3 @@ -#!/bin/sh +#!/usr/bin/with-contenv sh exec s6-setuidgid redis redis-server /etc/redis.conf