• Stars
    star
    225
  • Rank 177,187 (Top 4 %)
  • Language Vue
  • License
    MIT License
  • Created about 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📔 A simple, self-hosted, encrypted Markdown note-taking editor

MiniNote

GitHub package.json version GitHub code size in bytes GitHub last commit


A simple, self-hosted, encrypted Markdown note-taking app built with Vue 3, and Express. Check out the hosted demo!

⚠️ Breaking Changes

With the release of version 1.0.0, encryption was introduced. However, due to this non-trivial change, this release is not backwards-compatible with previous versions. Attempting to run version 1.0.0 with a database created with an earlier version will cause the application to crash.

Currently, no automated migration is provided, sorry. To migrate to 1.0.0, you will need to run two parallel instances and manually copy your notes.

⚙️ Requirements

  • NodeJS >= 16.14.0 LTS

⌨️ How to run?

💡 Since version 1.0.0, TLS encryption is mandatory for hosts other than localhost, as required for window.crypto.subtle (see #73).

When 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.

# 1. Clone the repo
$ git clone https://github.com/muety/mininote

# 2. Install backend dependencies
$ yarn

# 3. Install frontend dependencies and build
$ cd webapp && yarn && yarn build && cd ..

# 4. Obtain or create a TLS certifiate
# See https://www.linode.com/docs/guides/create-a-self-signed-tls-certificate/
# Skip for localhost or with reverse proxy

# 4. Set environment variables for TLS cert and key
# Skip for localhost or with reverse proxy
$ export HTTPS_CERT='path/to/your/mininote.crt'
$ export HTTPS_KEY='path/to/your/mininote.key'

# Run
$ yarn start

🐳 How to run with Docker?

# 1. Obtain or create TLS certificate (see above)

# 2. Create a persistent volume
$ docker volume create mininote-data

# 3. Run the container
$ docker run \
    -d \
    -p 3000:3000 \
    -v mininote-data:/app/data \
    -v path/to/your/mininote.crt:/etc/mininote.crt:ro \
    -v path/to/your/mininote.key:/etc/mininote.key:ro \
    -e HTTPS_CERT=/etc/mininote.crt \
    -e HTTPS_KEY=/etc/mininote.key \
    --name mininote \
    ghcr.io/muety/mininote:latest

🔒 Encryption

MiniNote 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. However, a notebook's password is used to derive the encryption key. That is, encryption is only as strong as your password. 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.

🧑‍💻 Contributing

Feel 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!

📓 License

MIT @ Ferdinand Mütsch

More Repositories

1

wakapi

📊 A minimalist, self-hosted WakaTime-compatible backend for coding statistics
Go
2,534
star
2

telepush

🤖 A simple bot to translate JSON HTTP requests into Telegram push messages
Go
449
star
3

mailwhale

🐳 A bring-your-own-SMTP-server mail relay with REST API and web UI
Go
245
star
4

anchr

⚓️ Anchr provides you with a toolbox for tiny tasks on the internet, especially bookmark collections
JavaScript
181
star
5

website-watcher

🕵️‍♀️ Naively watch websites for changes on regular intervals.
Python
54
star
6

telegram-expense-bot

A bot that helps you manage and track your daily expenses.
JavaScript
48
star
7

anchr-android

📱 Android client for Anchr.io link collections, built with Flutter
Dart
43
star
8

telegram-payment-bot

How to create a basic Telegram bot with Payments
JavaScript
42
star
9

telegram-bot-tutorial

How to create a basic Telegram bot
JavaScript
38
star
10

http-server-benchmarks

Some simple benchmarks of different HTTP servers in different languages
Java
27
star
11

http2-serverpush-proxy

A simple standalone reverse proxy that automatically enables server-push for assets related to a HTTP response.
JavaScript
26
star
12

gitcount

A command-line tool to estimate the time spent on a git project, based on a very simple heuristic
Go
25
star
13

safe-browse-url-lookup

A simplified NodeJS wrapper for Google's Safe Browsing API v4 to check whether a URL is malicious or not. See https://developers.google.com/safe-browsing/v4/ for more information.
JavaScript
19
star
14

kitsquid

🐙 Alternative course catalog for Karlsruhe Institute of Technology
Go
15
star
15

linkeddata-trivia

Auto-generated trivia questions based on DBPedia data.
JavaScript
15
star
16

hashcode-2018

Solution for Google Hash Code 2018 Qualification Round
Python
14
star
17

tello

Keyboard interface to control a DJI Tello drone with your PC
Go
13
star
18

talkycars-thesis

A Distributed Platform Approach to Cooperative Perception based on Celluar-V2X Communication
Python
10
star
19

telegram-paypalme-bot

A bot that help you easily request money from friends.
JavaScript
9
star
20

go-graphql-sse-example

Basic example application using Go + GraphQL Subscriptions + Server-Sent Events + MongoDB + VueJS
Go
8
star
21

caddy-remote-host

Caddy v2 plugin to match a request's client IP against a host name (similar to remote_ip)
Go
7
star
22

tg-chat-classification

Naive-Bayes based classification of Telegram chat messages.
Python
6
star
23

caddy-pirsch-plugin

A Caddy v2 plugin to track requests in Pirsch analytics
Go
5
star
24

popular-movies-android

Project 1 from Udacity Android Developer Nanodegree
Java
5
star
25

halite-bot-java

My rule-based solution for the Halite AI competition
Java
4
star
26

quiznerd-android

🤓 A multiplayer coding quiz game for developers. Challenge your friends, compete in matches and test your skills in various programming languages.
Java
4
star
27

winscp2filezilla

A tool that migrates your saved servers from WinSCP to FileZilla.
Go
4
star
28

kit-lod16-knowledge-panel

Linked Open Data-based knowledge panel built during a seminar at Karlsruhe Institute of Technology
Java
4
star
29

broilerplate

A template project for new Go web backend applications
Go
3
star
30

readme-guestbook

A GitHub action to create a guestbook in your README from repository issues
JavaScript
3
star
31

express-request-limit

Express middleware to limit the request rate to specific routes, based on client IP address.
JavaScript
2
star
32

xyz-reader-android

Project 5 from Udacity Android Developer Nanodegree
Java
2
star
33

muetsch.io

My personal website and blog
Stylus
2
star
34

muety.github.io

HTML
1
star
35

baking-time-android

Project 3 from Udacity Android Developer Nanodegree
Java
1
star
36

hashcode-2021

Google HashCode 2021 Solutions
Java
1
star
37

telegram-bot-sdk

A JavaScript SDK to interact with the Telegram Bot API (https://core.telegram.org/bots/api) from your Node.js application.
JavaScript
1
star
38

operation-go

My solutions to the Operation Go hacking game by gocode.io
Go
1
star
39

srvctl

A mini tool to quickly perform certain actions on a server
PHP
1
star