From 3fec3110981f500e935a4615a32bed1ddfebe88f Mon Sep 17 00:00:00 2001 From: Damir Dulic Date: Wed, 11 Mar 2026 14:40:11 +0000 Subject: [PATCH 1/4] Fix Dockerfile ports to match updated default (8080 -> 8000) --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2b89af7..5359007 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ SUPERNOTE_STORAGE_DIR=/data \ SUPERNOTE_CONFIG_DIR=/data/config \ SUPERNOTE_HOST=0.0.0.0 \ - SUPERNOTE_PORT=8080 + SUPERNOTE_PORT=8000 # Create a non-root user RUN groupadd -g 1000 -r supernote && useradd -u 1000 -r -g supernote supernote @@ -32,7 +32,7 @@ RUN mkdir -p /data /data/config && \ # Switch to non-root user USER supernote -EXPOSE 8080 +EXPOSE 8000 VOLUME ["/data"] From b67a6a3bde3d6798d26be875ef3dbd806dd84d2a Mon Sep 17 00:00:00 2001 From: Damir Dulic Date: Wed, 11 Mar 2026 14:45:13 +0000 Subject: [PATCH 2/4] Add Docker Compose example, fix README ports and broken server docs link --- README.md | 28 ++++++++++++++++++++++------ docker-compose.yml | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 docker-compose.yml diff --git a/README.md b/README.md index ede1b3b..a6594f5 100644 --- a/README.md +++ b/README.md @@ -55,16 +55,16 @@ supernote serve ```bash # Create the initial admin account -supernote admin user add you@example.com --url http://localhost:8080 +supernote admin user add you@example.com --url http://localhost:8000 # Authenticate your CLI -supernote cloud login you@example.com --url http://localhost:8080 +supernote cloud login you@example.com --url http://localhost:8000 ``` ### 3. Connect Your Device 1. On your Supernote, go to **Settings > Sync > Private Cloud**. -2. Enter your server URL (e.g., `http://192.168.1.5:8080`). +2. Enter your server URL (e.g., `http://192.168.1.5:8000`). 3. Log in with the email and password you created in Step 2. 4. Tap **Sync** to begin processing your notes. @@ -130,13 +130,29 @@ The notebook parser is a fork and slightly lighter dependency version of [supern ### Run with Docker +The pre-built image is published to the GitHub Container Registry: + +```bash +# Pull and run the latest image +docker run -d \ + -p 8000:8000 \ + -p 8001:8001 \ + -v supernote-data:/data \ + -e SUPERNOTE_GEMINI_API_KEY="your-api-key" \ + -e SUPERNOTE_JWT_SECRET="your-secret" \ + ghcr.io/ddulic/supernote:latest +``` + +Or build from source: + ```bash -# Build & Run server docker build -t supernote . -docker run -d -p 8080:8080 -v $(pwd)/storage:/storage supernote serve +docker run -d -p 8000:8000 -v supernote-data:/data supernote ``` -See [Server Documentation](https://github.com/allenporter/supernote/blob/main/supernote/server/README.md) for details. +For a full setup with Docker Compose, see [docker-compose.yml](docker-compose.yml). + +See [Server Documentation](supernote/server/README.md) for details. ### Developer API diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ca44d45 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,36 @@ +--- +services: + supernote: + image: ghcr.io/ddulic/supernote:latest + # Alternatively, build from source: + # build: . + restart: unless-stopped + ports: + - "8000:8000" # Main server + - "8001:8001" # MCP server + volumes: + - supernote-data:/data + environment: + # AI Provider — set one of the following: + SUPERNOTE_GEMINI_API_KEY: "" # Google Gemini API key + # SUPERNOTE_MISTRAL_API_KEY: "" # Mistral AI API key (alternative) + + # Security — generate with: openssl rand -hex 32 + SUPERNOTE_JWT_SECRET: "" + + # Storage & server + SUPERNOTE_STORAGE_DIR: /data + SUPERNOTE_CONFIG_DIR: /data/config + SUPERNOTE_HOST: 0.0.0.0 + SUPERNOTE_PORT: "8000" + SUPERNOTE_MCP_PORT: "8001" + + # Optional: set the public-facing base URL (e.g. behind a reverse proxy) + # SUPERNOTE_BASE_URL: "https://supernote.example.com" + # SUPERNOTE_MCP_BASE_URL: "https://mcp.example.com" + + # Optional: enable user self-registration + # SUPERNOTE_ENABLE_REGISTRATION: "true" + +volumes: + supernote-data: From 7a94ee56cd21dff9ac1f9f718e3685cc42645400 Mon Sep 17 00:00:00 2001 From: Damir Dulic Date: Wed, 11 Mar 2026 14:48:29 +0000 Subject: [PATCH 3/4] Fix GHCR image URL to allenporter/supernote, remove invalid JWT secret env var --- README.md | 3 +-- docker-compose.yml | 5 +---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a6594f5..9080bec 100644 --- a/README.md +++ b/README.md @@ -139,8 +139,7 @@ docker run -d \ -p 8001:8001 \ -v supernote-data:/data \ -e SUPERNOTE_GEMINI_API_KEY="your-api-key" \ - -e SUPERNOTE_JWT_SECRET="your-secret" \ - ghcr.io/ddulic/supernote:latest + ghcr.io/allenporter/supernote:latest ``` Or build from source: diff --git a/docker-compose.yml b/docker-compose.yml index ca44d45..77bbbf5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ --- services: supernote: - image: ghcr.io/ddulic/supernote:latest + image: ghcr.io/allenporter/supernote:latest # Alternatively, build from source: # build: . restart: unless-stopped @@ -15,9 +15,6 @@ services: SUPERNOTE_GEMINI_API_KEY: "" # Google Gemini API key # SUPERNOTE_MISTRAL_API_KEY: "" # Mistral AI API key (alternative) - # Security — generate with: openssl rand -hex 32 - SUPERNOTE_JWT_SECRET: "" - # Storage & server SUPERNOTE_STORAGE_DIR: /data SUPERNOTE_CONFIG_DIR: /data/config From 009366564f11b9153ad4c60382e2f24ed96f33d6 Mon Sep 17 00:00:00 2001 From: Damir Dulic Date: Wed, 11 Mar 2026 15:14:07 +0000 Subject: [PATCH 4/4] Remove broken server README link --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 9080bec..3567b35 100644 --- a/README.md +++ b/README.md @@ -151,8 +151,6 @@ docker run -d -p 8000:8000 -v supernote-data:/data supernote For a full setup with Docker Compose, see [docker-compose.yml](docker-compose.yml). -See [Server Documentation](supernote/server/README.md) for details. - ### Developer API Integrate Supernote into your own Python applications: