diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index d741e40..0000000 --- a/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -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 new file mode 100644 index 0000000..e48b3fd --- /dev/null +++ b/.gitea/workflows/container.yaml @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..b67fce1 --- /dev/null +++ b/Containerfile @@ -0,0 +1,85 @@ +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 deleted file mode 100644 index f60961e..0000000 --- a/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -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 2a10bb4..6a01b89 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,8 @@ -[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/rootfs/app/gin.patch b/gin.patch similarity index 84% rename from rootfs/app/gin.patch rename to gin.patch index b3f87f7..9acbc0a 100644 --- a/rootfs/app/gin.patch +++ b/gin.patch @@ -3,10 +3,15 @@ index b9601ec..55f4469 100644 --- a/gin-0.2.0-1.rockspec +++ b/gin-0.2.0-1.rockspec @@ -18,8 +18,9 @@ dependencies = { - "busted = 2.0.rc10-0", - "lua-cjson = 2.1.0-1", +- "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", "luasocket = 3.0rc1-2", -+ "luasec = 0.5-2", ++ "luasec = 0.9-1", "luafilesystem = 1.6.3-1", - "luaposix = 33.3.1-1", + "luaposix = 33.4.0", @@ -44,4 +49,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), \ No newline at end of file + source = ltn12.source.string(request.body), diff --git a/rootfs/etc/fix-attrs.d/01-redis b/rootfs/etc/fix-attrs.d/01-redis deleted file mode 100644 index 3ad7eb2..0000000 --- a/rootfs/etc/fix-attrs.d/01-redis +++ /dev/null @@ -1 +0,0 @@ -/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 new file mode 100644 index 0000000..7ba7514 --- /dev/null +++ b/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/dependencies @@ -0,0 +1 @@ +confd diff --git a/rootfs/etc/services.d/koreader-sync/run b/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/run similarity index 77% rename from rootfs/etc/services.d/koreader-sync/run rename to rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/run index 295b349..6c5e348 100644 --- a/rootfs/etc/services.d/koreader-sync/run +++ b/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/run @@ -1,4 +1,4 @@ -#!/usr/bin/with-contenv sh +#!/bin/sh cd /app/server s6-setuidgid syncer gin start diff --git a/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/type b/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/type new file mode 100644 index 0000000..5883cff --- /dev/null +++ b/rootfs/etc/s6-overlay/s6-rc.d/koreader-sync/type @@ -0,0 +1 @@ +longrun diff --git a/rootfs/etc/services.d/redis/run b/rootfs/etc/s6-overlay/s6-rc.d/redis/run similarity index 66% rename from rootfs/etc/services.d/redis/run rename to rootfs/etc/s6-overlay/s6-rc.d/redis/run index 39fc60e..ef35afb 100644 --- a/rootfs/etc/services.d/redis/run +++ b/rootfs/etc/s6-overlay/s6-rc.d/redis/run @@ -1,3 +1,3 @@ -#!/usr/bin/with-contenv sh +#!/bin/sh exec s6-setuidgid redis redis-server /etc/redis.conf diff --git a/rootfs/etc/s6-overlay/s6-rc.d/redis/type b/rootfs/etc/s6-overlay/s6-rc.d/redis/type new file mode 100644 index 0000000..5883cff --- /dev/null +++ b/rootfs/etc/s6-overlay/s6-rc.d/redis/type @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..e69de29