2025-01-27 19:51:06 +00:00
2025-01-27 13:56:50 +00:00
2025-01-27 19:51:06 +00:00
2025-01-26 19:54:29 +00:00
2025-01-27 18:32:22 +00:00
2025-01-26 18:57:20 +00:00
2025-01-26 19:54:29 +00:00
2025-01-26 18:57:20 +00:00
2025-01-24 19:57:11 +00:00
2024-07-09 16:30:39 +01:00
2024-07-09 16:30:39 +01:00
2024-07-09 16:30:39 +01:00
2024-12-09 15:17:33 +00:00
2024-07-09 16:30:39 +01:00
2025-01-27 18:21:42 +00:00
2025-01-27 18:21:42 +00:00
2024-07-09 16:16:16 +01:00
2025-01-23 01:00:21 +00:00
2025-01-26 18:56:54 +00:00
2025-01-26 20:42:34 +00:00
2025-01-27 19:48:36 +00:00
2024-07-09 20:14:22 +01:00
2025-01-26 19:54:29 +00:00
2025-01-19 16:39:53 +00:00
2024-07-09 16:30:39 +01:00

Latest version PHP version License

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

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.

Screenshots

Screenshot Light theme

Screenshot Dark theme

Features

  • Multiple users
  • Multiple vaults per user
  • OAuth support
  • File search
  • Tree view explorer with context menu
  • Smart markdown editor
  • Import/export vaults
  • Light/dark theme (automatically selected by your OS setting)
  • Mobile friendly

Installation (Docker)

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

First, create a new directory called many-notes with the following structure:

many-notes/
├── database/database.sqlite
├── storage-logs/
├── storage-private/
├── storage-public/
├── storage-sessions/
├── compose.yaml
└── Dockerfile

Next, add this to the Dockerfile file:

FROM brufdev/many-notes:latest
USER root
ARG UID
ARG GID
RUN docker-php-serversideup-set-id www-data $UID:$GID && \
    docker-php-serversideup-set-file-permissions --owner $UID:$GID --service nginx
USER www-data

Finally, add this to the compose.yaml file:

services:
  php:
    build:
      context: .
      args:
        UID: USER_ID # change id
        GID: GROUP_ID # change id
    restart: unless-stopped
    volumes:
      - ./database/database.sqlite:/var/www/html/database/database.sqlite
      - ./storage-logs:/var/www/html/storage/logs
      - ./storage-private:/var/www/html/storage/app/private
      - ./storage-public:/var/www/html/storage/app/public
      - ./storage-sessions:/var/www/html/storage/framework/sessions
    ports:
      - 80:8080

Many Notes must have the necessary permissions to access the shared paths. Since this image runs with an unprivileged user, the host user IDs must be added during the build phase. Make sure to update the IDs to match the host user IDs. 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
  - ASSET_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 OAuth providers

Many Notes supports a convenient way to authenticate with OAuth providers. Typically, these credentials may be retrieved by creating a "developer application" within the dashboard of the service you wish to use. Many Notes currently supports authentication via Facebook, Twitter, LinkedIn, Google, GitHub, GitLab, Bitbucket, Slack, Authentik, Keycloak, and Zitadel. You can enable multiple providers simultaneously by adding the corresponding environment variables.

For example, to enable GitHub OAuth, add:

environment:
  - GITHUB_CLIENT_ID=CLIENT_ID # change id
  - GITHUB_CLIENT_SECRET=CLIENT_SECRET # change secret
  - GITHUB_REDIRECT_URI=http://localhost/oauth/github/callback # change domain and provider

Authentik, Keycloak, and Zitadel providers require additional configuration. Read the OAuth documentation for more information.

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
  - MAIL_FROM_ADDRESS=hello@example.com
  - MAIL_FROM_NAME="Many Notes"

License

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

Description
Markdown note-taking app
Readme MIT 8.1 MiB
Languages
PHP 61.4%
Blade 29.8%
JavaScript 6.6%
CSS 2.2%