{"id":13674564,"url":"https://github.com/muety/mininote","last_synced_at":"2025-04-07T08:20:56.728Z","repository":{"id":49413349,"uuid":"105077195","full_name":"muety/mininote","owner":"muety","description":"📔 A simple, self-hosted, encrypted Markdown note-taking editor","archived":false,"fork":false,"pushed_at":"2023-01-09T09:29:36.000Z","size":939,"stargazers_count":249,"open_issues_count":5,"forks_count":54,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-05-21T01:06:04.256Z","etag":null,"topics":["devtools","hacktoberfest","markdown","nodejs","note-taking","notes","self-hosted","vuejs","wiki"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/muety.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"muety","liberapay":"muety","custom":["https://www.paypal.com/donate/?hosted_button_id=UMLX3AG4923JJ","https://www.buymeacoffee.com/n1try"]}},"created_at":"2017-09-27T22:48:54.000Z","updated_at":"2024-04-23T13:22:39.000Z","dependencies_parsed_at":"2023-02-08T09:46:07.579Z","dependency_job_id":null,"html_url":"https://github.com/muety/mininote","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muety%2Fmininote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muety%2Fmininote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muety%2Fmininote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muety%2Fmininote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/muety","download_url":"https://codeload.github.com/muety/mininote/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247615385,"owners_count":20967184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devtools","hacktoberfest","markdown","nodejs","note-taking","notes","self-hosted","vuejs","wiki"],"created_at":"2024-08-02T11:00:53.807Z","updated_at":"2025-04-07T08:20:56.699Z","avatar_url":"https://github.com/muety.png","language":"Vue","funding_links":["https://github.com/sponsors/muety","https://liberapay.com/muety","https://www.paypal.com/donate/?hosted_button_id=UMLX3AG4923JJ","https://www.buymeacoffee.com/n1try","https://liberapay.com/muety/"],"categories":["Software"],"sub_categories":["Note-taking \u0026 Editors"],"readme":"# ![](webapp/public/favicon-32x32.png) MiniNote\n![GitHub package.json version](https://badges.fw-web.space/github/package-json/v/muety/mininote?style=flat-square)\n![](https://badges.fw-web.space/github/license/muety/mininote?style=flat-square)\n![GitHub code size in bytes](https://badges.fw-web.space/github/languages/code-size/muety/mininote?style=flat-square)\n![GitHub last commit](https://badges.fw-web.space/github/last-commit/muety/mininote?style=flat-square)\n[![](https://badges.fw-web.space/liberapay/receives/muety.svg?logo=liberapay\u0026style=flat-square)](https://liberapay.com/muety/)\n\n---\n\nA simple, self-hosted, encrypted Markdown note-taking app built with [Vue 3](https://v3.vuejs.org), and [Express](http://expressjs.com). Check out the **[hosted demo](https://apps.muetsch.io/mininote)**!\n\n![](https://i.imgur.com/Y9TFu6w.png)\n\n\n## ⚙️ Requirements\n* NodeJS \u003e= `22.12.0 LTS`\n\n## ⌨️ How to run?\n**💡 Since version 1.0.0, TLS encryption is mandatory for hosts other than `localhost`, as required for `window.crypto.subtle` (see [#73](https://github.com/muety/mininote/issues/73#issuecomment-1057782171)).**\n\nWhen either only using MiniNote locally or running it behind a reverse proxy, which terminates TLS instead, you can leave out the HTTPS / TLS part of the setup. \n\n```bash\n# 1. Clone the repo\n$ git clone https://github.com/muety/mininote\n\n# 2. Install backend dependencies\n$ yarn\n\n# 3. Install frontend dependencies and build\n$ cd webapp \u0026\u0026 yarn \u0026\u0026 yarn build \u0026\u0026 cd ..\n\n# 4. Obtain or create a TLS certifiate\n# See https://www.linode.com/docs/guides/create-a-self-signed-tls-certificate/\n# Skip for localhost or with reverse proxy\n\n# 4. Set environment variables for TLS cert and key\n# Skip for localhost or with reverse proxy\n$ export HTTPS_CERT='path/to/your/mininote.crt'\n$ export HTTPS_KEY='path/to/your/mininote.key'\n\n# Run\n$ yarn start\n```\n\n## 🐳 How to run with Docker?\n```bash\n# 1. Obtain or create TLS certificate (see above)\n\n# 2. Create a persistent volume\n$ docker volume create mininote-data\n\n# 3. Run the container\n$ docker run \\\n    -d \\\n    -p 3000:3000 \\\n    -v mininote-data:/app/data \\\n    -v path/to/your/mininote.crt:/etc/mininote.crt:ro \\\n    -v path/to/your/mininote.key:/etc/mininote.key:ro \\\n    -e HTTPS_CERT=/etc/mininote.crt \\\n    -e HTTPS_KEY=/etc/mininote.key \\\n    --name mininote \\\n    ghcr.io/muety/mininote:latest\n```\n\n## 🔒 Encryption\nMiniNote features encryption, i.e. every note's title and content are encrypted on the client-side (i.e. in your browser) using symmetric AES-GCM provided by the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API). However, a notebook's password is used to derive the encryption key. That is, encryption is [only as strong as your password](https://crypto.stackexchange.com/questions/42538/is-password-based-aes-encryption-secure-at-all). Moreover, although notes are sent to the server encryptedly, this cannot be considered _true_ end-to-end encryption, since the server technically has a chance to log your password the moment you create a new notebook in the first place. MiniNote aims for a decent level of security, but does not claim to be NSA-proof. \n\n## 🧑‍💻 Contributing\nFeel free to contribute! All contributions that add value to the project are welcome. However, please be aware that you are not done after having opened a PR. In order to keep quality high, it is expected that you implement change requests and react to comments within an adequate time, until your code is merged. Otherwise your PRs will be closed after a while, sorry!\n\n## 📓 License\nMIT @ [Ferdinand Mütsch](https://muetsch.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuety%2Fmininote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuety%2Fmininote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuety%2Fmininote/lists"}