Finding a good self-hosted Markdown note-taking app can be challenging, but with the recent surge in self-hosting apps, Many Notes could finally be the solution you're looking for.

Whether you're setting up a personal wiki, managing project ideas, or just tracking daily reflections, Many Notes will provide a distraction-free space where you can focus on your tasks without any clutter.
What is Many Notes?
Many Notes is a simple markdown note-taking app designed for ease of use. Quickly create or import your vaults to organize your thoughts effortlessly. Vaults are straightforward storage containers for files. Many Notes allows you to store all files in a single vault or split them into separate ones as needed.
Many Notes Core Features
- Multiple users: Protect your files behind authentication
- Multiple vaults per user: Choose how to organize your files
- OAuth support: Authenticate using one of the supported providers
- File search: Quickly find what you are looking for
- Tree view explorer: Fast navigation with relevant actions in the context menu
- Smart 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
- Import/export vaults: Easily back up and restore your vaults
- Light/dark theme: Automatically selected based on your OS setting
- Mobile friendly: Provides a similar experience to the desktop

Install Many Notes using Docker Compose
Setting up Many Notes is straightforward: simply choose between the Docker and non-Docker options and follow the guide. The Docker method is recommended as it is faster and easier to set up. Additionally, you have a few customization options to tailor the app to your preferences.
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
└── DockerfileNext, 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-dataFinally, 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:8080You can follow the development, report issues, or make suggestions on the official Many Notes GitHub page. All feedback is appreciated, and if you find Many Notes useful, consider leaving a star on GitHub. Happy self-hosting!
Hosthatch
High performance compute VMs, with dedicated CPU allocations and extremely high IOPS NVMe disks. Deploy in 16 edge locations, and deliver consistently high-performance to your users, regardless of where they are located.


Discussion