selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Notesnook Sync Server logo

Self-host Notesnook Sync Server

3.3.27

Self-hosted sync backend for Notesnook encrypted notes

BetaOpen SourceAGPL-3.0
Docker ComposeCompose file & guide
docker compose up
Updated4 months ago
LanguageC#
Setup difficultyAdvanced
Stars
947
Port
5264 (Notesnook sync API server)
Requires
MinIO (S3-compatible storage), MongoDB
Docker
streetwriters/notesnook-sync
Notesnook Sync Server screenshot 1Notesnook Sync Server screenshot 2Notesnook Sync Server screenshot 3Notesnook Sync Server screenshot 4

What is Notesnook Sync Server?

Notesnook Sync Server is the backend infrastructure for Notesnook, an open-source, end-to-end encrypted note-taking application. The sync server handles authentication, note synchronization, real-time messaging (SSE), attachment storage via S3-compatible APIs, and public note publishing (Monograph). It is licensed under AGPL-3.0 and can be self-hosted using Docker Compose, which orchestrates MongoDB, MinIO, and multiple .NET/Node.js services. The project is in alpha/beta stage with self-hosting documented but without official support. Users must configure required environment variables including API secrets and public URLs. Optional services include a themes server, CORS proxy, and inbox API for third-party integrations like Zapier. The sync server works with Notesnook clients (desktop, web, mobile) from version 3.0.18 onwards.

Should you self-host Notesnook Sync Server?

Notesnook Sync Server scores 48/100 on selfhost.directory (how scoring works) and ranks #43 of 81 in Notes & Editors. It has 947 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in C#.

Its closest alternative on selfhost.directory is Memos (86/100, 64 139 stars). It scores higher overall, so compare the two before you pick. See Notesnook Sync Server vs Memos side by side.

Features

  • Attachment storage
  • Cross-device synchronization
  • Custom themesOptional service (extras profile).
  • End-to-end encryption
  • External Database SupportDocumented in examples/ directory.
  • Inbox APIOptional service (extras profile).
  • Open source (AGPL-3.0)
  • Public note publishing (Monograph)
  • SMS 2FA via TwilioRequires Twilio credentials.
  • Two-factor authenticationEmail 2FA requires SMTP configuration; otherwise users must use authenticator app.

Notesnook Sync Server README

How to install Notesnook Sync Server

Install Notesnook Sync Server with Docker Compose

Docker and Docker Compose
Environment variables
See .env for all configuration options. Required: INSTANCE_NAME, NOTESNOOK_API_SECRET, DISABLE_SIGNUPS, AUTH_SERVER_PUBLIC_URL, NOTESNOOK_APP_PUBLIC_URL, MONOGRAPH_PUBLIC_URL, ATTACHMENTS_SERVER_PUBLIC_URL, NOTESNOOK_API_PUBLIC_URL
wget https://raw.githubusercontent.com/streetwriters/notesnook-sync-server/master/docker-compose.yml
wget https://raw.githubusercontent.com/streetwriters/notesnook-sync-server/master/.env

Edit .env and set at least NOTESNOOK_API_SECRET. See .env for all configuration options.

Then start the stack:

docker compose up

Sets up MongoDB, MinIO/S3, and all Notesnook services. Optional services with `--profile extras`.

How to configure Notesnook Sync Server

  • ATTACHMENTS_SERVER_PUBLIC_URLhttp://localhost:9000This is the public URL for the S3 attachments server (minio). It'll be used by the Notesnook clients for uploading/downloading attachments.

    This is the public URL for the S3 attachments server (minio). It'll be used by the Notesnook clients for uploading/downloading attachments.

  • AUTH_SERVER_PUBLIC_URLhttp://localhost:8264This is the public URL for the Authentication server. Used for generating email confirmation & password reset URLs.

    This is the public URL for the Authentication server. Used for generating email confirmation & password reset URLs.

  • CORS_PROXY_ALLOWED_ORIGINS*Allowed origins for the CORS proxy (* for all origins)

    Allowed origins for the CORS proxy (* for all origins)

  • CORS_PROXY_PUBLIC_URLhttp://localhost:3001Public URL for the CORS proxy service

    Public URL for the CORS proxy service

  • DISABLE_SIGNUPSfalseUse this flag to disable creation of new accounts on your instance

    Use this flag to disable creation of new accounts on your instance

    values: true/false

  • INBOX_API_PUBLIC_URLhttp://localhost:5181Public URL for the Inbox API service

    Public URL for the Inbox API service

  • INSTANCE_NAMEself-hosted-notesnook-instanceName of your self hosted instance. Used in the client apps for identification purposes

    Name of your self hosted instance. Used in the client apps for identification purposes

  • KNOWN_PROXIESAdd known proxies for incoming HTTP requests

    Add known proxies for incoming HTTP requests

  • MINIO_ROOT_PASSWORDCustom password for the root Minio account. Must be greater than 8 characters in length.

    Custom password for the root Minio account. Must be greater than 8 characters in length.

  • MINIO_ROOT_USERCustom username for the root Minio account. Must be greater than 3 characters in length.

    Custom username for the root Minio account. Must be greater than 3 characters in length.

  • MONGODB_CONNECTION_STRINGMongoDB connection string for notesnook database (external MongoDB example)

    MongoDB connection string for notesnook database (external MongoDB example)

  • MONGODB_CONNECTION_STRING_IDENTITYMongoDB connection string for identity database (external MongoDB example)

    MongoDB connection string for identity database (external MongoDB example)

  • MONOGRAPH_PUBLIC_URLhttp://localhost:6264This is the public URL for the monograph frontend

    This is the public URL for the monograph frontend

  • NOTESNOOK_API_PUBLIC_URLhttp://localhost:5264This is the public URL for the Notesnook sync API (browser-reachable; used by Monograph)

    This is the public URL for the Notesnook sync API (browser-reachable; used by Monograph)

  • NOTESNOOK_API_SECRETThis secret is used for generating, validating, and introspecting auth tokens. It must be a randomly generated token (preferably >32 characters).

    This secret is used for generating, validating, and introspecting auth tokens. It must be a randomly generated token (preferably >32 characters).

  • NOTESNOOK_APP_PUBLIC_URLhttps://app.notesnook.comThis is the public URL for the web app, and is used by the backend for creating redirect URLs

    This is the public URL for the web app, and is used by the backend for creating redirect URLs

  • NOTESNOOK_CORS_ORIGINSAdd the origins for which you want to allow CORS. Leave it empty to allow all origins to access your server.

    Add the origins for which you want to allow CORS. Leave it empty to allow all origins to access your server.

  • SMTP_HOSTHost on which the the SMTP connection is running

    Host on which the the SMTP connection is running

  • SMTP_PASSWORDPassword for the SMTP connection

    Password for the SMTP connection

  • SMTP_PORTPort on which the the SMTP connection is running

    Port on which the the SMTP connection is running

  • SMTP_USERNAMEUsername for the SMTP connection (most time it is the email address of your account)

    Username for the SMTP connection (most time it is the email address of your account)

  • THEMES_REPO_URLhttps://github.com/streetwriters/notesnook-themes.gitGit repository URL for the Themes server

    Git repository URL for the Themes server

  • THEMES_SERVER_PUBLIC_URLhttp://localhost:9200Public URL for the Themes server

    Public URL for the Themes server

  • TWILIO_ACCOUNT_SIDTwilio account SID is required for sending SMS with 2FA codes

    Twilio account SID is required for sending SMS with 2FA codes

  • TWILIO_AUTH_TOKENTwilio account auth is required for sending SMS with 2FA codes

    Twilio account auth is required for sending SMS with 2FA codes

  • TWILIO_SERVICE_SIDThe unique string that we created to identify the Service resource

    The unique string that we created to identify the Service resource

More in Backend as a Service

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…