{"id":13455596,"url":"https://github.com/Athlon1600/notepad","last_synced_at":"2025-03-24T08:33:12.658Z","repository":{"id":88403094,"uuid":"383964057","full_name":"Athlon1600/notepad","owner":"Athlon1600","description":":page_facing_up: A very clever application for storing notes securely. Built with Vue + Node.js + Express","archived":false,"fork":false,"pushed_at":"2024-04-14T02:54:06.000Z","size":701,"stargazers_count":10,"open_issues_count":0,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-04-14T10:57:34.861Z","etag":null,"topics":["aes","correct-horse-battery-staple","encryption","notepad","online-notepad","pastebin","scrypt","textpad"],"latest_commit_sha":null,"homepage":"https://notepad.mx/","language":"JavaScript","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/Athlon1600.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-07-08T01:10:02.000Z","updated_at":"2024-04-15T16:16:50.268Z","dependencies_parsed_at":"2024-04-15T16:16:33.124Z","dependency_job_id":"80f11473-e8b9-415b-bc5f-4f5180cfe376","html_url":"https://github.com/Athlon1600/notepad","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fnotepad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fnotepad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fnotepad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athlon1600%2Fnotepad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Athlon1600","download_url":"https://codeload.github.com/Athlon1600/notepad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245235683,"owners_count":20582287,"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":["aes","correct-horse-battery-staple","encryption","notepad","online-notepad","pastebin","scrypt","textpad"],"created_at":"2024-07-31T08:01:07.832Z","updated_at":"2025-03-24T08:33:12.652Z","avatar_url":"https://github.com/Athlon1600.png","language":"JavaScript","readme":"# Notepad\n\n![GitHub](https://img.shields.io/github/license/athlon1600/notepad)\n![GitHub last commit](https://img.shields.io/github/last-commit/athlon1600/notepad)\n![Docker Pulls](https://img.shields.io/docker/pulls/athlon1600/notepad)\n\nA simple web-based notepad for writing and securely storing notes online.\nUseful for easy sharing of text between people or devices.\n\n- No registration process. You use a passphrase as your login.\n- Fully encrypted at client-side. No one can read your notes, except you.\n- Extremely minimal and lightweight\n\n## :star: Demo\n\nExact version of this application:\n\n- https://notepad.mx\n\n\n## :whale2: Deploy using Docker\n\nRent a server for free at [linode.com](https://www.linode.com/lp/refer/?r=cee8aa429cd4cbb5a6e6d1ebfd8986f661d8ef4e)\n\nInstall Docker 19+ on your new server:\n\n```shell\ncurl -sSL https://get.docker.com/ | sh\n```\n\nand then run:\n\n```shell\ngit clone https://github.com/Athlon1600/notepad.git\ncd notepad\ndocker compose up -d\n```\n\n:heavy_check_mark: Application will be running on port 3000\n\nAlternatively, you may run:\n\n```shell\ndocker run -d -p 3000:3000 athlon1600/notepad\n```\n\nSee our Docker Hub page here:  \nhttps://hub.docker.com/r/athlon1600/notepad\n\n## :hammer: Deployment to Production (manual)\n\nRent a server for free at [linode.com](https://www.linode.com/lp/refer/?r=cee8aa429cd4cbb5a6e6d1ebfd8986f661d8ef4e)\n\nDeploy this whole thing to production in three lines:\n\n```shell\ngit clone https://github.com/Athlon1600/notepad.git\ncd notepad\nnpm run build \u0026\u0026 npm run start\n```\n\nThis will build Vue frontend first, and then move the resulting bundle to the `/public` directory\nof the backend application from which the frontend will be served from.\n\n:heavy_check_mark: Application will then be available on port 3000\n\n## :globe_with_meridians: Caddy Server\n\nIf you want HTTPS support out of the box, you should install Caddy:\n\n```shell\nwget -qO- https://github.com/caddyserver/caddy/releases/download/v2.8.4/caddy_2.8.4_linux_amd64.tar.gz | tar -xz \u0026\u0026 rm -f caddy_2.8.4_linux_amd64.tar.gz LICENSE README.md \u0026\u0026 chmod +x caddy \u0026\u0026 mv caddy /usr/local/bin/caddy\n```\n\nBe sure to modify `backend/etc/Caddyfile` replacing `notepad.mx` with your own domain,\nand then run:\n\n```shell\ncaddy start --config ./backend/etc/Caddyfile \n```\n\n## :closed_lock_with_key: How it works\n\n- You login using a passphrase which produces a hash value of 32 bytes (or 64 characters in hex)\n- First 16 bytes is your **authentication key**  used in API calls when sending data back and forth\n- Next 16 bytes is your **encryption key** used to encrypt that text data\n- Encryption key never leaves your browser.\n- All the notes are stored as encrypted files inside `storage/{storage_key}` where storage_key = `md5(authentication_key)`\n\nSee the drawing below:\n\n![scrypt](https://github.com/Athlon1600/notepad/assets/1063088/aed67aae-bd10-4917-a149-fc2db0ad1d17)\n\nThis makes it so that no one besides you know the contents of your notes, or where they are stored on the server.\n\n![storage](https://i.imgur.com/cXgoRLX.png)\n\n## :arrows_counterclockwise: Sharing Notes between instances\n\nNotes created on one server are compatible with all other deployments of this application,\nas long as passphrases are hashed using the same salt (`notepad.mx` by default as defined\ninside `frontend/src/config.js`).\n\nThis makes it possible to import notes from one server to another, or host a backup mirror instance in case the main\ninstance gets shut down.\n\nYou can download all the notes created on the main **notepad.mx** instance here:\n\n- https://notepad.mx/archive.tar.gz\n\nextract everything to `backend/storage`, and now everyone using your application has access to those notes too.\n\nThere is also a command that does all that for you automatically:\n\n```shell\ndocker compose exec -it backend sh -c \"sh backend/bin/sync.sh\"\n```\n\n## Troubleshooting\n\n\u003e ERROR in [prerender-spa-plugin] Unable to prerender all routes!  \n\u003e ERROR in Failed to launch chrome!  \n\u003e error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory\n\nMake sure your system has all the necessary dependencies installed. See this link - https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#chrome-doesnt-launch-on-linux\n\n## To-do list\n\n- rewrite frontend to use TypeScript\n- use websockets to better support multiple sessions editing same document scenarios\n- add option to use Redis for storing notes\n- ability to use this app via command line\n- update the editor to allow subdivision of long text into multiple subsections via linebreaks\n\n## Versions\n\nIf you want to continue using v1, go here:  \nhttps://github.com/Athlon1600/notepad/tree/v1.0.0-rc.1\n\n## External Links\n\n- https://hub.docker.com/r/athlon1600/notepad\n- https://ricmoo.github.io/scrypt-js/\n- http://aes.online-domain-tools.com/\n- https://www.proxynova.com/tools/brute-force-calculator\n","funding_links":[],"categories":["JavaScript","置顶"],"sub_categories":["07、安全与隐私工具"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAthlon1600%2Fnotepad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAthlon1600%2Fnotepad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAthlon1600%2Fnotepad/lists"}