{"id":50885923,"url":"https://github.com/kbennett2000/my-keep","last_synced_at":"2026-06-15T17:01:33.976Z","repository":{"id":363927095,"uuid":"1265467343","full_name":"kbennett2000/my-keep","owner":"kbennett2000","description":"Self-hosted, fully-offline notes app inspired by Google Keep — notes, checklists, labels, colours, and image attachments. Node + SQLite + React in one Docker container.","archived":false,"fork":false,"pushed_at":"2026-06-11T00:38:02.000Z","size":2500,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T01:11:05.735Z","etag":null,"topics":["docker","express","google-keep","home-server","keep-clone","nodejs","note-taking","notes","offline-first","react","self-hosted","selfhosted","sqlite"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kbennett2000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-10T19:57:46.000Z","updated_at":"2026-06-11T00:38:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kbennett2000/my-keep","commit_stats":null,"previous_names":["kbennett2000/my-keep"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/kbennett2000/my-keep","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbennett2000%2Fmy-keep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbennett2000%2Fmy-keep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbennett2000%2Fmy-keep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbennett2000%2Fmy-keep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kbennett2000","download_url":"https://codeload.github.com/kbennett2000/my-keep/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbennett2000%2Fmy-keep/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34372130,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["docker","express","google-keep","home-server","keep-clone","nodejs","note-taking","notes","offline-first","react","self-hosted","selfhosted","sqlite"],"created_at":"2026-06-15T17:01:32.815Z","updated_at":"2026-06-15T17:01:33.967Z","avatar_url":"https://github.com/kbennett2000.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MyKeep\n\n![MyKeep — your private, offline notes, on your own network](docs/images/banner.png)\n\nYour own private notes app for your home network — a self-hosted take on Google Keep. Write notes and\nchecklists, color them, pin and search them, add labels and images. It runs entirely on your own machine\nand **needs no internet** once it's set up.\n\n![The MyKeep notes grid — colorful notes, labels, a pinned section, and a checklist](docs/images/notes-grid.png)\n\n**Curious what it's like to use?** Take the quick visual tour → **[Using MyKeep](docs/USING-MYKEEP.md)**.\n\n## Install it\n\nMyKeep runs the same on every system — pick yours for step-by-step setup. Each takes about fifteen minutes,\nmost of it just installing Docker the first time:\n\n- 🪟 **[Windows](docs/INSTALL-WINDOWS.md)**\n- 🍎 **[Mac](docs/INSTALL-MAC.md)**\n- 🐧 **[Linux / home server](docs/INSTALL-LINUX.md)**\n\nThe rest of this page covers what's the same once it's running — for all three.\n\n## Everyone gets their own notes\n\nAnyone on your network can open MyKeep's address and **register their own account**. Each account's notes are\nprivate to that person — they can't see anyone else's.\n\n## Change the port\n\nPrefer a different port? Edit `PORT` in your `.env` file (say `PORT=9000`), then apply it:\n\n```bash\ndocker compose up -d\n```\n\nMyKeep will now answer on that port instead.\n\n## Where your notes live\n\nEverything you save — the notes database and any images you upload — lives in the **`data`** folder next to\n`docker-compose.yml`. To **back up MyKeep, copy that folder** somewhere safe. To restore, put it back. It\nsurvives updates and restarts on its own.\n\n## Everyday commands\n\nRun these from the `my-keep` folder:\n\n```bash\ndocker compose logs -f          # watch what it's doing (Ctrl+C to stop watching)\ndocker compose restart          # restart it\ndocker compose down             # stop it (your notes are kept)\ngit pull \u0026\u0026 docker compose up -d --build   # update to the latest version\n```\n\n## If something's not right\n\n- **It says `SESSION_SECRET` isn't set when starting.** You missed the secret step on your install page —\n  generate a secret and put it in `.env`, then run `docker compose up -d` again.\n- **`port is already allocated` / `address already in use`.** Something else is using port 8065. Pick another\n  port (see *Change the port* above).\n- **You can't reach it from another device.** Make sure that device is on the **same network**, you used the\n  host's IP address (not `localhost`), and the host's firewall allows the port.\n\n## Questions you might have\n\n- **I forgot my password.** There's no password reset yet. The simplest fix is to register a fresh account —\n  every account is separate, so no one else's notes are affected.\n- **How do I back up my notes?** They all live in the `data` folder (see *Where your notes live*). Copy that\n  folder somewhere safe and you have a complete backup; put it back to restore.\n- **Can I export my notes to a file?** Not yet — it's on the wish list. For now, the `data` folder is your\n  portable copy.\n- **Can I open it from outside my home?** On the open internet, no — keep MyKeep on a network you trust (it\n  serves plain `http`, not the encrypted `https` that public sites use). But you *can* reach your notes when\n  you're away with **Tailscale**, a free tool that privately and securely links your own devices, without\n  exposing MyKeep to the public. Here's how → **[Reaching MyKeep from anywhere](docs/REMOTE-ACCESS.md)**.\n\n## Good to know\n\n- **Offline by design.** After the one-time build, MyKeep makes no calls to the internet — fonts and icons\n  are bundled in. It's meant for a trusted home network (it serves plain `http`, not `https`).\n\n---\n\n_MyKeep is an independent project, not affiliated with or endorsed by Google. \"Google Keep\" is a trademark of\nGoogle LLC, used here only to describe what MyKeep is like._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbennett2000%2Fmy-keep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkbennett2000%2Fmy-keep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbennett2000%2Fmy-keep/lists"}