Everdo Network Sync Guide

Introduction

Everdo Network Sync allows you to synchronize your Everdo database across two or more computers.
The process is done completely autonomously without relying on any third-party services.

How Sync Works in Everdo

Everdo Network Sync utilizes the Client-Server architecture. One of the devices acts as a Sync Server. All other devices act as Clients. To keep all devices up to date (synced), the 2-way syncing process gets performed repeatedly between each of the Clients and the Server:

client-servers

You will need to choose an operating mode (Client or Server) for each device that runs Everdo. This is done in Settings and explained further in the guide. Only one device can be configured as a Server.

Which Device Should be the Server?

As you may have noticed, you cannot sync data directly between two clients. Instead, all changes must be synced to the server first.
To illustrate, look at the picture below. A change has been made on Client A. First it gets synced to the Server. At this point Client A and Server have the same database state (synced). Now the update can finally be synced to Client B.

client-servers-2Then

This process happens automatically, but you need to choose the right device to be the Server.
For example, lets say you want to sync Everdo on three computers: your home PC, your work PC and a laptop that travels between home and work. In this case you would probably want the laptop to be the Server, because itā€™s the only computer that can be connected to the local networks of both clients.
On the other hand, if you have all the computers on the same network and turned on at all times, then any one of them can be the Server.

Before You Begin [Important]

Before enabling sync for the first time, please go through the list below:

  • If any of the computers you want to sync have items/tags you donā€™t need (like tutorial items), delete them now. Otherwise you may end up having to delete them from multiple places :wink:
  • If using Everdo Pro, make sure Pro is unlocked on all computers
  • Find the IP address of your Server computer on the local network
  • Make sure your Clients are really on the same local network as the Server

Server Configuration

  1. On the Server computer, open Everdo Settings and go to Sync tab
  2. Select Server in the Mode drop-down
  3. Open API tab
  4. Set IP/Hostname and Port parameters, for example 192.169.1.10 and 11111
  5. Optional: change the API Key - this is the authentication key Clients will need to pass to the Server
  6. Save and restart Everdo

Note: The IP/Hostname parameter should correspond to the actual IP of the Server computer on the local network. Configure you Server computer to have a static IP address if possible.

2018-03-23-124237_400x277_scrot

server-settings

Client Configuration (Manual Sync)

To get familiar with how sync works, configure the client in manual mode:

  1. On the client computer, open Everdo Settings and go to Sync tab
  2. Select Manual Client mode
  3. Set IP/Hostname and Port parameters. Use the same values you specified in Server Configuration.
  4. Set Server API Key. Enter the same value you specified in Server Configuration.
  5. Press Save

You can now try to sync with the Server manually! Use one of the sync buttons depending on the outcome you want:

  • Sync Now - This option will perform a two-way sync between the computers. Missing items from the Server will be added to the Client and vice versa. Conflicting changes will be merged based on the latest change time. This is what you want most of the time.
  • Push to Server - This option will copy all items and tags from the Client to the Server, overriding any conflicts. Use this when you want to force a one-way sync and donā€™t care about the data that is currently on the Server. For example when you sync for the first time and thereā€™s nothing useful on Server.
  • Pull from Server - This options will copy all items and tags from the Server to the Client, overriding any conflicts. Use when you want to force a one-way sync and donā€™t care about the data that is currently on the Client

Client Configuration (Auto Sync)

As soon as you configure auto sync for the first time, Everdo will start automatically performing a 2-way sync between the Client and the Server. Make sure you have read the section on manual sync above and understand what it means.

The settings for Auto Sync are the same as for Manual, but you need to choose Client instead of Manual Client mode.

How to Backup Everdo Database

The Everdo database file is stored on you hard drive depending on the computerā€™s operating system:

  • on Linux: ~/.config/everdo/db
  • on OS X: ~/Library/Application Support/everdo/db
  • on Windows: %USERPROFILE%\AppData\Roaming\Everdo\db

To make a backup, simply copy the db file a different location.

Now if something goes wrong, simply close Everdo an replace the db file with your backup file.

Have Questions?

I understand that getting sync to work for the first time may be a bit technical. Please ask questions if something is not clear!

1 Like

Hey

Been testing out getting sync working on my laptop and stationary machine. Iā€™ve downloaded the latest 1.0.6-3 version that was released (Verified that it says ā€œEverdo 1.0.6-3 (Pro)ā€ on both machines), and got it working with the ā€œManual Clientā€ mode when pulling and pushing with server, both with adding and trashing tasks from the inbox

However, when trying out the ā€œSync Nowā€ button, or changing to ā€œClientā€ mode on the client computer, I get the following warning message: ā€œOutdated Everdo version. Please upgrade to v1.0.6-3 or higher.ā€

This is really weird. Will look into it.
Have you tried restarting the program on both machines after seeing the error message?

Iā€™ve tried restarting the software on each, restarting the computer on each, as well as uninstalling and installing again on each (Since the laptop/server upgraded from 1.0.5 to 1.0.6, while the stationary/client was a fresh install), but itā€™s still acting the same, Pull/Push is fine while Sync is not working

To anyone experiencing this issue - please send me a private message or email.

Is there any way to run the server without any graphical interface (in a standalone and headless mode, with only the bare minimum to allow the sync) ?

Not at this point. It has been proposed, see Headless / Raspberry pi version (for server sync)

IIs this secure enough to expose publicly? I would like to sync between computers on separate networks (preferably without running a VPN), and am curious if I can run this on AWS or similar.

It was designed for a trusted network, so I canā€™t really advise on hosting it publicly. If you decide to, keep in mind:

  • the strength of the API key is not enforced, so you need to make sure you pick a strong one
  • the API key is stored in configuration, so you need to make sure the configuration file doesnā€™t leak anywhere
  • thereā€™s no guarantee of security against a determined attacker

The data is transmitted over HTTPS.

Hi, Iā€™ve written a standalone synchronization server (the source code is here: https://github.com/bquintanajm/filesyncserver). So far only the manual synchronization works, but thatā€™s enough for me.

Right now Iā€™m using a self-signed ssl certificate, but Iā€™d like to run the server behind a reverse proxy with a Letā€™s Encrypt certificate. However, it seems the field ā€˜Server IP/Hostnameā€™ doesnā€™t accept url paths. Will this be supported in some future release?

The Server IP/ Hostname field only accepts an IP address, or a hostname, or localhost. Why wouldnā€™t this work with a reverse proxy?

One way of using a reverse proxy is routing to addresses based on url path. For example, www.myexternaladddress.com/app1 can point internally to localhost:1001. In this case, Everdo ignores url paths, thatā€™s why I was asking if such feature could be added in the future.

Hmm,

I, just a non-it guy with a pc and a phone, would like to collect stuff on my phone.

Does that mean,

  1. I have to enable WLAN on my computer (currently not needed) and
  2. log into that wireless network with my phone and
  3. configure my computer as server as shown above etc.

Then syncing will take place automatically if the computer is running, the phone is connected wireless, and autosync is enabled?

Your understanding seems correct. Unfortunately, the self-managed sync setup is about as simple as itā€™s going to get. Thereā€™s no easy way around having devices on the same network, or knowing the devicesā€™ addresses etc. Good news is, the online encrypted sync service is coming really soon and it will be a breeze to set up for any number of computers and phones connected to the inernet.

1 Like

I am waiting for it with much desireā€¦

Getting closer. Internal testing starts next week. It shouldnā€™t take much longer.

2 Likes

Thanks! This is much appreciated.

Sync works great on my local networks - home and work - but I am having to update the IP address of my server computer (a laptop) every time I bring it to work with me, because it has a different IP address there than it does on my home network. Since Iā€™m a teacher in a public school, I canā€™t exactly ask the IT department here to assign me a static IP ā€“ Iā€™m not that special!

Am I correct to infer that THIS is the conundrum that an online encrypted sync service is designed to solve? It will provide a remote server (not a local machine) that acts as the relay for syncing between devices?

Thanks for your hard work on Everdo, which is an elegant cross-platform GTD solution. Iā€™m sure youā€™re aware that itā€™s a somewhat niche GTD service at the moment, but prepare for wider adoption once the mobile apps exit beta and your sync service gets up and running! I had been searching for an app like this for years, ever since first trying Omnifocus in 2007.

Thanks very much for the wonderful Everdo, which is really an amazing GTD tool.

It seems to me the currently data sync service requires to run a Desktop app, e.g., on Ubuntu. I am wondering whether there is a way to run a server service on Linux without Desktop GUI? I have a cloud server and would like to put Everdo server on it so that I can sync with my home and work laptops. But unfortunately the cloud server doesnā€™t have a desktop gui.

Thank you!

Yes, thatā€™s it. The service is coming soon. Thanks for your support!

I remember seeing some users managing to run it on a serverā€¦ Maybe somewhere on this forum. But itā€™s not by design at this point.

I think you might be interested in ESS as well. Itā€™s going to be affordable and easy to use, without requiring maintenance on your part, unlike hosting it yourself. Security is also improved with client-side encryption.

A self-hosted sync service might happen, but after ESS is out, the development focus is going to be shifted to improving the quality of apps.