Browse Source

koreader-highlight-joplin-server:3.0.1

John 1 year ago
parent
commit
e4fc15bb2a

+ 67 - 0
.github/workflows/koreader-highlight-joplin-server.yml

@@ -0,0 +1,67 @@
+name: koreader-highlight-joplin-server
+
+on:
+  push:
+    paths:
+    - 'koreader-highlight-joplin-server/Dockerfile'
+    - 'koreader-highlight-joplin-server/root/**'
+  workflow_dispatch:
+
+jobs:
+  job1:
+    name: buildx tag
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v3
+
+      - name: 'Set env'
+        run: |
+          echo "JOPLIN_VER=$(echo `grep -n "JOPLIN_VER=" koreader-highlight-joplin-server/Dockerfile`|awk -F= '{print $2}')" >> $GITHUB_ENV
+
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v2
+        with:
+          platforms: all
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v2
+        with:
+          version: latest
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v2
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+
+      - name: Login to GHCR
+        uses: docker/login-action@v2
+        with:
+          registry: ghcr.io
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Build and push
+        uses: docker/build-push-action@v3
+        with:
+          context: ./koreader-highlight-joplin-server
+          file: ./koreader-highlight-joplin-server/Dockerfile
+          platforms: linux/amd64,linux/arm64
+          push: true
+          tags: |
+            johngong/koreader-highlight-joplin-server:latest
+            johngong/koreader-highlight-joplin-server:${{ env.JOPLIN_VER }}
+            ghcr.io/gshang2017/koreader-highlight-joplin-server:latest
+            ghcr.io/gshang2017/koreader-highlight-joplin-server:${{ env.JOPLIN_VER }}
+
+      - name: Docker Hub Description
+        uses: peter-evans/dockerhub-description@v3
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+          repository: johngong/koreader-highlight-joplin-server
+          short-description: koreader-highlight-joplin-server:${{ env.JOPLIN_VER }},koreader标注导出joplin服务器。
+          readme-filepath: ./koreader-highlight-joplin-server/README.md

+ 43 - 0
koreader-highlight-joplin-server/Dockerfile

@@ -0,0 +1,43 @@
+FROM alpine:3.20
+
+ARG S6_VER=3.2.0.0
+ARG JOPLIN_VER=3.0.1
+
+ENV UID=1000
+ENV GID=1000
+ENV TZ=Asia/Shanghai
+ENV JOPLIN_SYNC_PATH=
+ENV JOPLIN_SYNC_USERNAME=
+ENV JOPLIN_SYNC_PASSWORD=
+ENV HOME=/config
+ENV SOCAT_TCP_LISTEN_PORT=41185
+ENV S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0
+
+COPY --chmod=755 root /
+
+RUN  apk add --no-cache shadow bash ca-certificates tzdata wget npm socat inotify-tools jq \
+# install s6-overlay
+&& if [ "$(uname -m)" = "x86_64" ];then s6_arch=x86_64;elif [ "$(uname -m)" = "aarch64" ];then s6_arch=aarch64;elif [ "$(uname -m)" = "armv7l" ];then s6_arch=arm; fi \
+&& wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-noarch.tar.xz \
+&& tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz \
+&& wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.xz \
+&& tar -C / -Jxpf /tmp/s6-overlay-${s6_arch}.tar.xz \
+&& wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-symlinks-noarch.tar.xz \
+&& tar -C / -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz \
+&& wget -P /tmp https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-symlinks-arch.tar.xz \
+&& tar -C / -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz \
+#create koreader user
+&& useradd -u 1000 -U -d /config -s /bin/false koreader \
+&& usermod -G users koreader \
+&& mkdir -p /config /usr/local/joplin \
+&& chown -R koreader:koreader /config /usr/local/joplin \
+# install joplin
+&& NPM_CONFIG_PREFIX=/usr/local/joplin npm install -g joplin@${JOPLIN_VER} \
+&& npm cache clean --force \
+&& ln -s /usr/local/joplin/bin/joplin /usr/local/bin/joplin \
+# clear
+&& rm -rf /var/cache/apk/* /tmp/*
+
+VOLUME /config
+EXPOSE 41185
+ENTRYPOINT [ "/init" ]

+ 114 - 0
koreader-highlight-joplin-server/README.md

@@ -0,0 +1,114 @@
+## 群晖nas自用
+
+### GitHub:
+
+[https://github.com/gshang2017/docker](https://github.com/gshang2017/docker)
+
+### 感谢以下项目:
+
+[https://github.com/koreader/koreader](https://github.com/koreader/koreader "https://github.com/koreader/koreader")                 
+[https://github.com/laurent22/joplin](https://github.com/laurent22/joplin "https://github.com/laurent22/joplin")  
+
+### 版本:
+
+|名称|版本|说明|
+|:-|:-|:-|
+|koreader-highlight-joplin-server|3.0.1|amd64;arm64v8|
+
+#### 同步说明:
+
+* 导出标注1分钟后自动同步。
+
+### docker命令行设置:
+
+1. 下载镜像
+
+    |镜像源|命令|
+    |:-|:-|
+    |DockerHub|docker pull johngong/koreader-highlight-joplin-server:latest|
+    |GitHub|docker pull ghcr.io/gshang2017/koreader-highlight-joplin-server:latest|
+
+2. 创建anki容器
+
+        docker create \
+           --name=koreader-highlight-joplin-server \
+           -p 41185:41185 \
+           -v /配置文件位置:/config \
+           -e UID=1000 \
+           -e GID=1000 \
+           -e JOPLIN_SYNC_PATH=joplin同步服务器地址 \
+           -e JOPLIN_SYNC_USERNAME=joplin用户名 \
+           -e JOPLIN_SYNC_PASSWORD=joplin密码 \           
+           --restart unless-stopped \
+           johngong/koreader-highlight-joplin-server:latest
+
+3. 运行
+
+       docker start koreader-highlight-joplin-server
+
+4. 停止
+
+       docker stop koreader-highlight-joplin-server
+
+5. 删除容器
+
+       docker rm koreader-highlight-joplin-server
+
+6. 删除镜像
+
+       docker image rm johngong/koreader-highlight-joplin-server:latest
+
+### 变量:
+
+|参数|说明|
+|:-|:-|
+| `--name=koreader-highlight-joplin-server` |容器名|
+| `-p 41185:41185` |koreader-highlight-joplin-server监听端口|
+| `-v /同步文件位置:/config` |koreader-highlight-joplin-server配置文件位置|
+| `-e UID=1000` |uid设置,默认为1000|
+| `-e GID=1000` |gid设置,默认为1000|
+| `-e TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai|
+| `-e JOPLIN_SYNC_PATH=` |joplin同步服务器地址|
+| `-e JOPLIN_SYNC_USERNAME=` |joplin用户名|
+| `-e JOPLIN_SYNC_PASSWORD=` |joplin密码|
+| `-e HOME=/config` |用户主目录|
+| `-e SOCAT_TCP_LISTEN_PORT=41185` |koreader-highlight-joplin-server监听端口|
+
+### 群晖docker设置:
+
+1. 卷
+
+|参数|说明|
+|:-|:-|
+| `/同步文件位置:/config` |koreader-highlight-joplin-server配置文件位置|
+
+2. 端口
+
+|参数|说明|
+|:-|:-|
+| `本地端口1:41185` |koreader-highlight-joplin-server监听端口|
+
+3. 环境变量
+
+|参数|说明|
+|:-|:-|
+| `UID=1000` |uid设置,默认为1000|
+| `GID=1000` |gid设置,默认为1000|
+| `TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai|
+| `JOPLIN_SYNC_PATH=` |joplin同步服务器地址|
+| `JOPLIN_SYNC_USERNAME=` |joplin用户名|
+| `JOPLIN_SYNC_PASSWORD=` |joplin密码|
+| `HOME=/config` |用户主目录|
+| `SOCAT_TCP_LISTEN_PORT=41185` |koreader-highlight-joplin-server监听端口|
+
+### 客户端设置:
+
+* koreader
+
+1. 导出标注-选择格式与服务-Joplin
+2. 设置Joplin的IP和端口 [http://ip:本地端口1](http://ip:本地端口1 "http://ip:本地端口1")
+3. 设置认证信息(/config/.config/joplin/settings.json里api.token或者/config/token.txt)
+
+### 详见:
+
+[https://github.com/koreader/koreader/wiki/Joplin](https://github.com/koreader/koreader/wiki/Joplin "https://github.com/koreader/koreader/wiki/Joplin")

+ 28 - 0
koreader-highlight-joplin-server/root/etc/cont-init.d/koreader-highlight-joplin-server.sh

@@ -0,0 +1,28 @@
+#! /usr/bin/with-contenv bash
+#检查log-clipper.txt文件(inotify需要)
+if [ ! -e "/config/.config/joplin/log-clipper.txt" ]; then
+  mkdir -p $HOME/.config/joplin/
+  touch $HOME/.config/joplin/log-clipper.txt
+  chown -R koreader:koreader $HOME
+fi
+
+#配置joplin同步服务器
+if [ -n "$JOPLIN_SYNC_PATH" ] && [ -n "$JOPLIN_SYNC_USERNAME" ] && [ -n "$JOPLIN_SYNC_PASSWORD" ] ; then
+  su -p koreader -s /bin/bash -c "joplin config sync.target 9"
+  su -p koreader -s /bin/bash -c "joplin config sync.9.path $JOPLIN_SYNC_PATH"
+  su -p koreader -s /bin/bash -c "joplin config sync.9.username $JOPLIN_SYNC_USERNAME"
+  su -p koreader -s /bin/bash -c "joplin config sync.9.password $JOPLIN_SYNC_PASSWORD"
+fi
+
+#设置时区
+ln -sf /usr/share/zoneinfo/$TZ /etc/localtime
+echo $TZ > /etc/timezone
+
+#更改文件夹权限
+chown -R koreader:koreader $HOME
+chown -R koreader:koreader /usr/local/joplin/
+
+#提取token到token.txt
+if [ -e "/config/.config/joplin/settings.json" ]; then
+  cat /config/.config/joplin/settings.json |jq -r '."api.token"' > /config/token.txt
+fi

+ 7 - 0
koreader-highlight-joplin-server/root/etc/services.d/inotify/run

@@ -0,0 +1,7 @@
+#! /usr/bin/with-contenv bash
+
+# 启动inotify
+while inotifywait -e close -e modify $HOME/.config/joplin/log-clipper.txt; do
+    inotifywait -m $HOME/.config/joplin/log-clipper.txt -t 60
+    su -p koreader -s /bin/bash -c "joplin sync"
+done

+ 4 - 0
koreader-highlight-joplin-server/root/etc/services.d/joplin/run

@@ -0,0 +1,4 @@
+#! /usr/bin/with-contenv bash
+
+# 启动joplin
+exec s6-setuidgid koreader joplin server start

+ 4 - 0
koreader-highlight-joplin-server/root/etc/services.d/socat/run

@@ -0,0 +1,4 @@
+#! /usr/bin/with-contenv bash
+
+# 启动socat
+exec s6-setuidgid koreader socat tcp-listen:$SOCAT_TCP_LISTEN_PORT,reuseaddr,fork tcp:localhost:41184