Both are real options. Neither is a drop-in replacement for an Obsidian vault, though, and "easy" hides a lot of work. Here's what each one takes to set up, checked against the projects' own documentation.
The problem: syncing plain files by hand
Obsidian keeps notes as plain Markdown files. That's great for portability. The catch is that syncing is left to you unless you pay. Buck points out that Syncthing is mostly painless, but not everyone has the time or skills to set it up for Obsidian or Logseq on every device.
His answer is to pick apps whose sync is built in, then run the server side yourself. You stop managing files and start managing a small service.
Section summary: These apps replace a file-sync chore with sync built into the app, backed by a server you run.
Anytype: a full sync network in Docker
Buck rates Anytype as one of the best note-taking and list-building apps he's used. He says it lacks some of Obsidian's features but makes up for them elsewhere. He reports that the self-hosted setup took him a few minutes using Docker Compose, and that his PC and phone have synced ever since.
The official any-sync-dockercompose repository from Anytype's developers shows what "a few minutes" actually starts:
- Prerequisites: Docker with the Compose v2 plugin and about 1 GB of free RAM.
- Scope: The repository says the stack is meant for personal use, review or testing. For high-load production, it points to its Puppet or Ansible modules.
- What runs: Not one container. You get a coordinator, three sync nodes, a file node, a consensus node, MongoDB, Redis, Garage object storage and a connectivity health checker.
The documented setup steps
- Clone the
anyproto/any-sync-dockercomposerepository. - Copy
.env.exampleto.env. - Edit
.envif needed. The key setting isEXTERNAL_LISTEN_HOSTS, which defaults to127.0.0.1(this machine only). Set it to your server's LAN or public IP so other devices can reach it. - Optionally, run
./update-versions.shto fetch the latest compatible service versions. Skip it to use the versions pinned in the example file. - Run
docker compose up -d(ormake start). On first run this generates configuration files in./etc/. - In the Anytype app, upload
./etc/client.ymlas your self-hosted network configuration.
Step 3 matters most for Windows users. If you leave the default, your phone can't reach the server, because it's only listening on the host itself.
Two different "sync" features
Buck also describes clicking a globe icon above a note to see which devices on your local network are available, then linking them. Anytype's documentation describes the self-hosted network as a separate setup that uses the uploaded client.yml. Discovering devices on the same Wi-Fi is not the same thing as running your own sync backend. Readers who want a server that's always on should follow the Compose route, not just the globe icon.
Upgrades and backups
- The repository recently replaced MinIO with Garage. Existing installs must run a one-off migration (
make migrate). The stack refuses to start until you do, and the repository says no data is deleted. make upgradeis labelled as a full reset that removes containers and volumes. Despite the name, it's not a routine update. Usemake updatefor a rolling pull-and-restart.make cleanruns a Docker system prune that removes all Docker data on the host, not just Anytype's.- Anytype's backup wiki says data lives in
./storageand configuration in./etc/. It recommends stopping the stack (make stop) and copying both folders before starting it again.
Section summary: Anytype works well if you're happy to use its app and data model. You're running a multi-service backend, though, not a folder of Markdown files.
Trilium: one server, many clients
Buck's second pick is Trilium, now developed as TriliumNext. He liked its mix of a Markdown-friendly editor and a WYSIWYG editor, and found it easy to embed video, add links and store code snippets. He got sync working between Windows and Linux.
Server setup
TriliumNext's Docker guide says to download the project's docker-compose.yml and run docker compose up -d. By default, data goes to ~/trilium-data and the server listens on port 8080. Official images cover AMD64, ARMv7 and ARM64, so a Raspberry Pi or a small NAS will do.
Warnings from the docs that are easy to miss:
- The standard container requires root privileges. There's a separate
rootlessimage if you'd rather avoid that. - Don't use the
latesttag. An automatic minor-version upgrade can break sync. Pin a specific version. - If your data folder is on an SMB/CIFS share, mount it with the
nobrlandnopermoptions.
Connecting a Windows desktop client
This is where Buck's main tip comes in. Enter the server address on the client machine, using the host's IP plus the container's port. If you do it on the host, it's just talking to itself.
Trilium's current user guide describes the path as Options → Sync → Sync server, where you set the server address. Clicking the Test sync button verifies the connection to the sync server, and if successful, the client starts pushing all data to the server instance. Older docs label the field "Server instance address" under a "Sync configuration" section, so older builds may look slightly different.
If you're setting up a fresh client against a server that already has your notes, the first-run wizard handles it. When prompted, choose the option to set up sync with a sync server, then configure the server address and enter the correct username and password.
After that, sync runs by itself. Trilium's documentation describes a star layout: one central server and several client instances which all point to this sync server and synchronize against it. Once sync is set up, synchronization is automatic and ongoing.
Common failure points
- Clock drift: both client and server must have the same date and time, with a tolerance of up to five minutes. Check the time settings on a VM or Pi that has drifted.
- Proxies: If you don't set a proxy explicitly, Trilium will use the system proxy settings. Corporate Windows machines may send your LAN traffic somewhere odd because of this.
- Self-signed certificates: Trilium checks TLS certificates. The docs offer a workaround that turns checking off, but warn it significantly reduces security and exposes the setup to MITM attacks. Get a proper certificate instead.
- Config overrides: A sync server set in
config.inior an environment variable takes precedence over the Options setting. If your changes don't seem to take, check for this. - No server at all: Trilium also supports sync between two desktops directly, but since v0.104.0, LAN access needs to be enabled to allow this sync to function.
Android: TriliumDroid comes with conditions
Buck says he plans to try Android next with TriliumDroid. He hadn't tested it yet, so treat Android support as unconfirmed for his setup. TriliumDroid's project page calls it an unofficial Android port. It needs a Trilium sync server running version 0.97 or later and Android 7.0 or newer. TriliumNext's documentation also says the server and TriliumDroid sync versions must match, and advises turning off automatic server updates if you use it. That's one more reason to pin your Docker image version.
Section summary: Trilium's server is simpler than Anytype's, but it needs version pinning, correct clocks, a reachable address and a compatible Android client.
Side by side
| Anytype (self-hosted) | Trilium / TriliumNext | |
|---|---|---|
| Server deploy | Docker Compose, multi-service stack | Docker Compose, single container |
| Stated resources | ~1 GB RAM available | Not specified in the Docker guide |
| Client connection | Upload generated client.yml | Server address plus login in Options → Sync |
| Android | Official Anytype app (Buck tested) | Unofficial TriliumDroid, needs 0.97+ with matching versions |
| Big upgrade gotcha | MinIO-to-Garage migration; make upgrade wipes | Avoid latest tag; version mismatches break sync |
| Keeps an Obsidian Markdown vault as-is? | No, it uses its own data model | No, it uses its own database |
Should you switch?
For people tired of passing files around by hand, both apps deliver. You stop babysitting files and start running a service. How-To Geek's upbeat take reflects one experienced user's home network, though. Neither app keeps your Obsidian vault as it is. With either one, you're now responsible for uptime, backups, network exposure and safe upgrades.
Put simply: pick Anytype if you like its object-based approach and don't mind running its backend stack. Pick Trilium if you want a single server with polished desktop clients and are careful with version pinning. And if your Syncthing setup already works? That's allowed too. It isn't pretty, but it syncs.
References
- 2 Obsidian replacements that let you self-host without any ridiculous workarounds How-To Geek · 2026-09-29T11:00:13+00:00
- Docker Compose for any-sync github.com
- .env.example github.com