Your own sync server
Keep your notes on a computer you own: a PC, a NAS, a Raspberry Pi or a VPS. Your devices sync through it, live and end-to-end encrypted.

What you get
FastMemo Server is the self-hosted alternative to Google Firebase for Cloud Sync. One Docker container, one database file.
- Private
Notes are encrypted on your devices before they leave them. The server stores them, it can't read them.
- Live
An edit shows up on your other devices in about a second, even in a note that's open.
- Offline-proof
A device that can't reach the server keeps its changes and sends them as soon as it can.
- With a dashboard
Devices, space, reads, writes and deletes per day, warnings, and one-click backups.
What you need
- A computer that stays on: a PC, a NAS, a VPS, or a Raspberry Pi 3, 4 or 5 with the 64-bit system.
- Docker, which runs the server in a box of its own.
- About 15 minutes. No programming: you copy a few commands.
Start the server
On the computer that will host it, open a terminal (on Windows: PowerShell) and follow these steps.
Install Docker
Install Docker Desktop (opens in a new tab) on Windows or macOS, or Docker Engine on Linux and Raspberry Pi.
Download the server
This copies the server into a folder called fastmemo-server and creates its settings file.
git clone https://github.com/ontech7/fastmemo-server.git cd fastmemo-server cp .env.example .envStart it
The server is now running on port 8787. It starts again by itself after a reboot.
docker compose up -dFind your access key
It's the password your devices use to connect. The server made one on its first start: look for it in what this command prints, and keep it somewhere safe.
docker compose logs fastmemoOpen the dashboard
Go to http://localhost:8787 in a browser on that computer and enter the access key: you'll see your devices, the operations per day and the backups.
Reach it from your phone
Use an https:// address: the web app and the Windows app only reach those, and it keeps your note titles and your devices' credentials private on every network. Pick the way that suits you:
| Option | Good for | What you need |
|---|---|---|
| Tailscale (easiest) | Your devices only, nothing exposed to the internet | A free Tailscale account |
| Coolify | You already run Coolify | Coolify and a domain |
| Caddy (VPS and domain) | A VPS, or a home server with ports 80 and 443 open | A domain pointing to the server |
| Plain http:// | Trying it out: on the computer it runs on, or from Android, macOS and Linux on your Wi-Fi | Nothing (not for the web app or Windows; the app warns first) |
Tailscale (easiest)
Install Tailscale (opens in a new tab) on the server and on each device, and sign in with the same account. Then, on the server:
sudo tailscale serve --bg 8787It prints your server's address, like https://raspberrypi.your-tailnet.ts.net. If it asks to enable HTTPS certificates, follow the link it shows: it's one click. Last, set TRUST_PROXY=true in the .env file and run docker compose up -d again.
Coolify
Create a resource from the fastmemo-server repository with the Docker Compose build pack and the compose file /docker-compose.coolify.yml. Give the service your domain followed by :8787 (for example https://notes.example.com:8787) and deploy: Coolify takes care of HTTPS and generates the keys (Environment Variables).
Caddy (VPS and domain)
Point your domain to the server, put it in the .env file, and start the server together with Caddy, which gets the HTTPS certificate by itself:
# in .env: DOMAIN=notes.example.com
docker compose -f docker-compose.caddy.yml up -dConnect FastMemo
On each device:
Open Settings → Cloud Sync and turn on Enable Cloud sync.
Under Sync with, choose FastMemo Server.
Enter the Server address (https://…) and the Access key, then tap Save settings.
On the first device, choose an Encryption password and write down the Recovery key it shows. The other devices ask for the same password.
Backups and updates
- Back up from the dashboard: one file with everything. The notes in it stay encrypted, but it also holds the titles and the access key: keep it private.
- Lost a phone? Remove it from the dashboard (or from Manage devices in the app): its access stops at once.
- To update the server, run these two commands in its folder:
git pull
docker compose up -d --buildGood to know
- The server never sees the content of your notes, nor your encryption password. Titles aren't encrypted: the app sorts by them.
- Plain http:// is for trying it out: a device on HTTP sends your note titles and its credentials unencrypted on every network it joins, at home or not. For every day, use Tailscale or a domain.
- A Raspberry Pi is plenty, for a whole family too. Up to 10 devices by default.
- Every detail (all the settings, restoring a backup, PostgreSQL, troubleshooting) is in the README on GitHub (opens in a new tab).


