Self-hosted ยท MIT License ยท Docker Compose ยท Node 20+
A shared board
for your household.
Runs on your server.
Sticky notes, letter magnets, photos, and drawings โ shared with the people in your house. No accounts, no cloud. Boards are plain JSON files stored on your hardware.
Kitchen
/b/kitchen
Grocery List
/b/grocery-list
Family
/b/family
What goes on a board
Letter magnets
Colorful alphabet tiles with style presets and size controls
Sticky notes
Text notes with paper styles and custom colors
Photos
Upload images with optional captions and frame styles
Emoji magnets
Large emoji tiles for quick reactions and decoration
Drawings
Dry-erase style sketches directly on the board
Themes
Swap the fridge surface between curated styles
Stored as plain JSON in data/fridges/<slug>.json โ readable, backupable, no proprietary format.
How it's built
- Shared editing
- The full board URL contains a #token fragment. Anyone with it can edit; anyone without it sees the board read-only.
- Named boards
- Boards live at /b/kitchen-board style URLs โ bookmarkable, human-readable, permanent.
- Admin token
- Set SELFHOST_ADMIN_TOKEN before going public. Without it, anyone who reaches the server can create or delete boards.
- Image uploads
- Photos are stored on disk as immutable assets referenced by opaque IDs. Board JSON stays small.
- Zero npm dependencies
- The server has no production npm dependencies. Node 20+ and a filesystem is all it needs to run.
- Rate limiting
- Write operations are rate-limited per client per board. Configurable for busier setups.
- Local mode
- The /local route runs a browser-only board backed by localStorage โ useful for single-device use.
- Unraid community app
- Listed in the Unraid Community Applications store for one-click NAS installs.
Sharing model
Every board has a slug and an edit token. The token lives in the URL fragment โ browsers never send fragments to the server, so it stays private until the client deliberately sends it when saving.
https://your-server/b/kitchen-board#abcdef123456...
with #token โ edit
Anyone with the full URL can change the board. Treat it like a password.
without #token โ view only
Anyone can see it. No one can change anything.
Create a board
Open the directory, keep the suggested slug or pick your own.
Bookmark the edit URL
The returned URL with the #token is your edit link. Save it.
Share a read-only link
Same URL, remove everything from # onward. View-only.
Lost the edit token? Recover it from data/fridges/<slug>.json โ look for "editToken".
Get started
Run it with Docker Compose.
Docker Compose is the recommended path. It builds FridgeShare directly
from the repo's master
branch, mounts a data volume at ./data, and starts on port 4173.
# download the compose file
$ curl -fsSL https://raw.githubusercontent.com/Nacho-Labs-LLC/fridgeshare/master/docker-compose.yml -o docker-compose.yml
$ docker compose up -d
# board directory at http://localhost:4173
Contributor override
If you cloned the repo locally, use the override compose file to build from your checkout instead of GitHub.
docker compose -f docker-compose.yml -f docker-compose.build.yml up
--build -d Admin token
Generated automatically on first start. Retrieve it any time:
cat ./data/.admin-token What it doesn't do.
No accounts.
No sign-up, no login, no session management. Board access is granted by the URL fragment. Lose the token, look it up in the JSON file on disk.
No cloud dependency.
The server stores board state as JSON files on disk. No managed database, no external API, no service that can change its pricing or disappear.
No telemetry.
The app makes no outbound network calls. Nothing phones home. Your board activity stays on your hardware.
No version lock-in.
Board files are plain JSON with a documented structure. Read them, back them up, and migrate them without any special tooling.
SELFHOST_ADMIN_TOKEN
and back up the data/ directory. Everything else is optional.
FAQ
- Do I need a domain name or SSL?
- No. It works fine on a local IP or hostname inside your network. If you expose it publicly, put it behind a reverse proxy that handles SSL โ Caddy or nginx both work well.
- Do I need an account to view or edit a board?
- No. Editing is granted by the full URL including its #token fragment. Viewing is the same URL without the fragment. There are no user accounts.
- How do I back up my boards?
- Back up the entire data/ directory. It contains boards.json (the directory), fridges/<slug>.json (board state), and uploads/ (image files). A simple tar -czf backup.tgz data covers all three.
- Can multiple people edit at the same time?
- Changes from multiple editors are merged using patch operations. The last writer for any individual item wins. It handles concurrent household use well โ it is not built for real-time collaborative document editing.
- What if I forget the admin token?
- If you did not set SELFHOST_ADMIN_TOKEN via env, a token was auto-generated on first startup and saved to data/.admin-token. Retrieve it with: cat ./data/.admin-token
- Can I run it on a Raspberry Pi?
- Yes. The server is plain Node.js with no native addons. Multi-architecture Docker images are available. A Pi 4 with 2 GB RAM is more than enough for household use.