so-novel Docker & Self-Hosted Deployment

GitHub

Java cli & content-export repository by @freeok. Model Context Protocol (MCP) server & tools with 7.1k stars.

1. Pull Image (DOCKERHUB) docker pull freeok/so-novel:latest
2. Docker Run (1-Click Launch) docker run -d --name so-novel -p 7765:7765 --restart always freeok/so-novel:latest
3. Podman Run podman run -d --name so-novel -p 7765:7765 --restart always freeok/so-novel:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/freeok/so-novel:latest
5. ORAS Pull (OCI Artifact) oras pull freeok/so-novel:latest
Dockerfile
# 246.3 MB,Javet 的 native 库(libjavet.so)是为 glibc 构建的动态链接库,而 eclipse-temurin:21-jre-alpine 基于 Alpine Linux,使用 musl libc(一种轻量级替代品)。Alpine 缺少 glibc 的动态链接器 ld-linux-x86-64.so.2,导致加载失败
# FROM eclipse-temurin:21-jre-alpine

# 构建阶段。基于 Ubuntu,326.5 MB
FROM eclipse-temurin:21-jre-jammy

WORKDIR /sonovel

COPY app.jar config.ini ./
COPY rules/ rules/

EXPOSE 7765

ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS \
  -XX:+UseZGC \
  -XX:+ZGenerational \
  -Dfile.encoding=UTF-8 \
  -Duser.timezone=GMT+08 \
  -jar app.jar"]