many-notes

brufdevMIT活跃维护

一款用 PHP 写的极简 Markdown 笔记 Web 应用,支持 Docker 自托管和 PWA,适合搭建私有的知识库或团队协作文档。

Markdown note-taking web application designed for simplicity

v0.18.1发布于 2026-10-22 13:49 UTC1,097star46fork同步于 2026-11-10 05:56 UTC

怎么上手

从 README 代码块原样提取,可能是其中一种安装方式
docker compose up -d
硬件要求按 README 关键词推断
有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v0.18.1
  1. v0.18.1最新正式版2026-10-22 · 2026-10-22 13:49 UTC

    Update your image as soon as possible, especially if your instance is exposed to the internet.

    Security

    • Update PHP to 8.4.27 to fix two critical remote code execution vulnerabilities (CVE-2026-109618, CVE-2026-109619)
  2. v0.18.02026-09-01 · 2026-09-01 14:33 UTC
    查看更新说明

    New features

    • Authenticate with any provider that supports OpenID Connect discovery #140
    • Configure several OpenID Connect providers at the same time
    • Open the new vault right after creating it #141
    • Renaming a node to a name a sibling already uses is now rejected
    • A moved node is now suffixed when the destination folder already has that name

    Fixes

    • Note content is now kept on disk when renaming or moving a node
    • Name validation errors are now shown under the note title input
    • Name validation errors now name the character that is not allowed
    • Template list now refreshes when templates change
    • Vault list now refreshes after deleting a vault #141
    • Cursor no longer jumps when autocompleting in task lists
    • Panels no longer close on mobile when creating a folder
    • OAuth authentication failures are now logged #140
    • Adjust Starter Vault structure

    Maintenance

    • Extract the node name collision logic from CreateVaultNode
    • Cover vault name collisions with tests
    • Improve debugging and troubleshooting instructions #140
  3. v0.17.02026-08-26 · 2026-08-26 17:43 UTC
    查看更新说明

    Security

    • Prevent cross-vault access to nodes reported by @Karthik
    • Enforce upload size limits when importing files

    New features

    • Files pasted or dropped into a note are now uploaded and linked automatically
    • Add indent and outdent buttons to the editor toolbar
    • Images dragged from the tree view are now inserted as Markdown images
    • Add Auth0 SSO provider
    • Add spellcheck toggle to the user menu
    • Add support for mailto Markdown links
    • Render HTTP errors as a proper page

    Editor

    • Improve link and image insertion

    Interface

    • Rework the user menu with an avatar, the user email and reorganized actions
    • Highlight the About item in user menu when an update is available
    • Rework the about modal and add a sponsor link

    Improvements

    • Skip unused vault queries on partial reloads, reducing queries when opening and closing notes

    Fixes

    • Remove extra space around images in the editor
    • Fix counts of repeated links, backlinks and tags
    • Return to the last visited note after signing in
    • Fix infinite redirect loop in SSO authentication under certain conditions
    • Update all backlinks on the same line when renaming a note
    • Backlink updates are now applied for the user who triggered them
    • Resolve vault and node names consistently across MySQL, PostgreSQL and SQLite
    • Prevent horizontal scroll in the editor caused by long words
    • Keep the opened file in sync when it is moved or renamed
    • Apply link, backlink and tag broadcasts only to the opened file
    • Expand the tree view when opening a file from links, search and recent files
    • Discard stale search results from overlapping requests
    • Discard failed note save responses after switching files
    • Preserve local authentication setting when saving admin settings
    • Fix mismatched transaction error when opening a note
    • Only add files to recent files Pinia store

    Maintenance

    • Upgrade to Laravel 13, Inertia 3 and Vite 8
    • Update dependencies
    • Replace Axios with Inertia useHttp
    • Enforce frontend code style and types in CI

    Thanks to @Karthik for responsibly disclosing the vulnerability.

  4. v0.16.22026-06-13 · 2026-06-13 11:56 UTC
    查看更新说明

    Fixes

    • Fix internal links with spaces not opening from the editor #129
    • Fix payload size error when broadcasting large notes #132

    Maintenance

    • Update dependencies
  5. v0.16.12026-05-26 · 2026-05-26 12:56 UTC
    查看更新说明

    Fixes

    • Resolve GROUP BY clause error in PostgreSQL

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Many Notes is a Markdown note-taking web application designed for simplicity! Easily create or import your vaults and organize your thoughts right away.

    It uses a database to power its features, but your files are also saved in the filesystem, giving you full control over your vault structure and ensuring easy access and portability.

    Vaults are simply storage containers for your files, and Many Notes lets you choose to keep all your files in one vault or organize them into separate vaults.

    [!IMPORTANT]
    It is recommended to run Many Notes behind a reverse proxy serving the application with HTTPS. This not only secures your traffic but also gives you access to additional features like PWA support or copying to clipboard from code blocks.

    Preview

    Screenshot Light theme

    Features

    • Multiple users: Protect your files behind authentication
    • Multiple vaults per user: Choose how to organize your files
    • OpenID Connect and OAuth: Authenticate with most login providers
    • Collaboration: Invite other users to access your vaults
    • Broadcasting: Real-time, live-updating user interfaces
    • File search: Experience a fast and typo-tolerant search
    • Tree view explorer: Fast navigation with relevant actions in the context menu
    • Advanced Markdown editor: Write your Markdown notes faster
    • Automatic saving: Focus on writing; saving is automatic
    • Templates: Maintain consistent formatting for your notes
    • Links/backlinks/tags: Improve note organization by connecting related notes
    • Export to PDF: Convert your Markdown notes into shareable PDFs
    • Import/export vaults: Easily back up and restore your vaults
    • Automatic update check: Notifies you when a new version is available
    • Starter vault: Helps you get started with Many Notes
    • Light/dark theme: Automatically selected based on your system settings
    • Progressive Web App: Provides a native app-like experience

    Support

    If you find this project useful, consider supporting its development:

    Installation

    Choose your preferred method to install Many Notes:

    • Docker with volumes, for a simpler installation (read below)
    • Docker with bind mounts, for easy access to shared paths from the host (read here)
    • Docker with a different database, if you prefer not to use SQLite (read here)

    Docker with volumes

    Read the upgrading guide if you are upgrading from a previous version.

    Create a compose.yaml file with:

    services:
      php:
        image: brufdev/many-notes:latest
        restart: unless-stopped
        environment:
          - APP_URL=http://localhost # address used to access the application
        volumes:
          - database:/var/www/html/database/sqlite
          - logs:/var/www/html/storage/logs
          - private:/var/www/html/storage/app/private
          - typesense:/var/www/html/typesense
        ports:
          - 80:8080
    
    volumes:
      database:
      logs:
      private:
      typesense:
    

    Make sure to change the address used to access the application. Feel free to change anything else if you know what you're doing, and read the customization section below before continue. Then run:

    docker compose up -d
    

    Customization

    You can customize Many Notes by adding environment variables to the compose.yaml file.

    Custom URL (default: http://localhost)

    If you change the default port from 80 or use a reverse proxy with a custom URL, make sure to configure the application URL accordingly. For example, if you change the port to 8080, add:

    environment:
      - APP_URL=http://localhost:8080
    

    Custom timezone (default: UTC)

    Check all available timezones here. For example, if you want to set the timezone to Amsterdam, add:

    environment:
      - APP_TIMEZONE=Europe/Amsterdam
    

    Custom upload size limit (default: 500M)

    Increase the upload size limit to allow for the import of larger files. For example, if you want to increase the limit to 1 GB, add:

    environment:
      - PHP_POST_MAX_SIZE=1G
      - PHP_UPLOAD_MAX_FILE_SIZE=1G
    

    Enable OpenID Connect and OAuth providers

    Many Notes authenticates with OpenID Connect, so it works with most login providers, such as Pocket ID, Keycloak, Authentik, Entra ID, Auth0, Okta, or Google.

    For example, to enable Pocket ID, add:

    environment:
      - OIDC_NAME=Pocket ID # name shown on the login button
      - OIDC_CLIENT_ID=CLIENT_ID # change id
      - OIDC_CLIENT_SECRET=CLIENT_SECRET # change secret
      - OIDC_REDIRECT_URI=http://localhost/oauth/oidc/callback # change domain
      - OIDC_BASE_URL=https://your-pocketid-url # change url
    

    You can enable several OpenID Connect providers at the same time. Dedicated providers are also available for services like GitHub, GitLab, and Slack. Read the OAuth documentation for both.

    Local authentication (default: true)

    Disable local authentication by configuring an OAuth provider and specifying a URL to redirect after logout. For example, to use Pocket ID as the only authentication method, add:

    environment:
      # enabling the OpenID Connect provider:
      - OIDC_NAME=Pocket ID # name shown on the login button
      - OIDC_CLIENT_ID=CLIENT_ID # change id
      - OIDC_CLIENT_SECRET=CLIENT_SECRET # change secret
      - OIDC_REDIRECT_URI=http://localhost/oauth/oidc/callback # change domain
      - OIDC_BASE_URL=https://your-pocketid-url # change url
      # disabling local authentication:
      - OIDC_POST_LOGOUT_REDIRECT_URI=https://your-pocketid-url/logout # change URL
      - SETTINGS_LOCAL_AUTH_ENABLED=false
    

    Custom email service

    Configure an email service to send registration and password reset emails by adding:

    environment:
      - MAIL_MAILER=smtp
      - MAIL_HOST=127.0.0.1
      - MAIL_PORT=2525
      - MAIL_USERNAME=null
      - MAIL_PASSWORD=null
      - MAIL_ENCRYPTION=null
      - [email protected]
      - MAIL_FROM_NAME="Many Notes"
    

    Frequently Asked Questions

    Read the FAQs to find the answers to the most common questions.

    Contributing

    If you're interested in contributing to Many Notes, please read the contributing guide before submitting a pull request.

    License

    This project is licensed under the MIT License. See the LICENSE file for the full license text.