Local Network Sync

A complete configuration guide for setting up Everdo sync over the local network.

Overview of the local network sync

  • The desktop Everdo app is configured as a sync server on one of your computers.
  • All other devices must be configured as clients.
  • Each client performs a two-way sync with the server every few seconds or upon request, per configuration.
  • Clients do not communicate directly with each other. Instead, they communicate with the server, which is responsible for propagating changes to all devices appropriately.

The rest of this page describes the configuration process in detail.

Deciding which computer should be the server

Since only one computer can be the server, it’s important to correctly choose which one. Here are the things you should keep in mind.

  • You must get your clients on the same network as the server to perform sync.
  • When your server gets moved to a different local network, its IP address might change, which will likely require re-configuration of both the server and the clients.

Let us consider a few examples.

Example 1 You have a desktop computer at home, a phone and a laptop. If you set up your home PC as the server, then you will be able to sync all your devices at home. But you won’t be able to sync the laptop and the phone when not at home, because they are no longer on the same network as the server (unless there is a VPN acting as a local network over the internet).

Example 2 You have a desktop computer at home, a phone and a laptop. If you set up your laptop as the server and all other devices as clients, then you will be able to sync both at home and at work. But you will have to make sure your network settings match the network that you are currently in. This is because your home network configuration will likely be different from your work network configuration.

Once decided which computer should be the server, we can proceed to the next step.

Server configuration

First we need to to identify your server’s IP address on the local network.

Determining your local IP address

On Linux and macOS you can use the ifconfig terminal command. In the code block below you can see the output of ifconfig, which indicates that the computer has IP address 192.168.1.5.

$ ifconfig
enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.5  netmask 255.255.255.0  broadcast 192.168.1.255
    ...

On Windows you can use the ipconfig terminal command. For example, the output below indicates local IP address 192.1.168.1.5.

> ipconfig
Windows IP Configuration

Ethernet adapter Local Area Connection:
  Connection-specific DNS Suffix . . :
  IPv4 Address . . . . . . . . . . . : 192.168.1.5
  ...

Many computers have multiple network interfaces, which means they might have multiple IP addresses, for example one for the wired connection and another one for wireless. You can take note of all of them and to later determine which one works.

Configuring and starting the server

Run Everdo and follow these steps to configure the server.

  1. Go to Settings and open the Sync tab.
  2. In Mode select Server.
  3. Switch to the API tab.
  4. Set the IP/Hostname setting to correspond to the IP Address of the computer on your local network. You can leave port as 11111, unless it’s taken by another process, which is unlikely.
  5. Optional: Change the API Key setting. This is a password that is used to authenticate your clients before they are allowed to sync with the server. The API key must be alpha-numeric.
  6. Press Apply and close Everdo.
  7. Run Everdo again and observe the bottom right corner of the application window. If the configuration is correct, then the message “Everdo API is up” will appear.

The success message indicates that the server is ready and you can proceed to configuring clients.

If you see a warning message instead, then check out the Troubleshooting section.

Optional: set up a static IP address for the server

In order to prevent the IP address of your server of being changed by the network router arbitrarily, you might want to make it fixed (static).

The correct steps to set up a static IP address for your computer differ based on your network hardware and operating system. There are two basic approaches you could consider:

  • Fix the IP address at the network router level via the control panel UI of your router.
  • Fix the IP address at the operating system level via network configuration tools of your operating system, for example, the control panel on Windows.

Client configuration

The point of client configuration is to specify the IP Address, Port, and the API Key of the Server, on all the client devices so that they know how to reach the server.

Configuring desktop clients

  1. Start Everdo and open Settings, Sync.
  2. Select Manual Client in the Mode drop-down.
  3. Fill in the IP/Hostname, Port, and Server API Key settings. Use the values based on your server configuration.
  4. Press Sync to perform a two-way sync between the app and the server.

You should see a success status if all went correctly. If you want the computer to sync automatically, you should change the Mode setting to Client instead of Manual Client.

Configuring Android clients

  1. Start Everdo and open Settings.
  2. Tap Sync Mode and select the Local Network option.
  3. Tap Local Network, fill in the IP/Hostname, Port, and Server API Key settings. Use the values based on your server configuration.
  4. Exit Settings and try to trigger sync by swiping down the list of actions.

You should see a success message if sync completed correctly. To have the device sync automatically, you can enable the Auto Sync setting in app settings.

Configuring iOS clients

  1. Start Everdo and open Settings.
  2. In the Sync Mode section, select Local Network.
  3. Press Setup Sync.
  4. Fill in the IP/Hostname, Port, Server API Key settings. Use the values corresponding to your server configuration.
  5. Tap Sync Once

You should see a success message if all went correctly. To have the device sync automatically, enable the Auto Sync toggle.

Manual sync actions

Every time Everdo syncs automatically, it sends an incremental set of changes over to keep the server in the updated state.

However you can also perform the following actions manually, if needed.

In the Android app, these actions are available in Settings -> Manual sync actions. In the Desktop and iOS apps, the manual actions are located under Settings -> Sync.

Sync

Triggers a two-way incremental sync. Incremental means that only the changes since last successful sync will be taken into consideration. Conflicts will get merged according to the latest modification time. This action has the exact same effect as the automatic sync that runs every few seconds.

Pull from server

Triggers a one-way sync by copying all data from the server to the client. Any conflicts are overwritten by the server data.

Push to server

Triggers a one-way sync by copying all data from the client to the server. Any conflicts are overwritten by the client data.

Troubleshooting

We look at some common issues with Local Network sync configuration.

Problem: Server doesn’t start - Everdo API is down, EADDRNOTAVAIL

  • In the vast majority of cases this error is caused by an invalid IP address specified in the server configuration. To resolve the problem, try determining your IP address again or try a different one if you have multiple.
  • In very rare cases there might be a port conflict with another app, so you can try changing the port setting to a different value, for example 11112 or similar.

Remember to restart Everdo after changing the server settings to see if it worked.

Problem: Server used to start, but it doesn’t start anymore

It’s likely that your computer has changed its IP address, so the configuration that used to work is no longer valid. In this case you should:

Problem: Server starts, but sync doesn’t work

This most likely means the clients can’t obtain a connection to the server. There are many possible reasons for that depending on your physical network configuration, as well as the software running on your server computer. Some of the most frequent issues are:

  1. Wrong IP address/port was specified on the client.
  2. The client is connected to a different local network (or none).
  3. A firewall is running on the server and blocking incoming requests.
  4. Special symbols were used in the API key (as opposed to alpha-numeric characters only).

Below is a connection test you can perform to ensure that Everdo server physically accessible from both the server and the client devices.

  1. Open a web browser on the server computer.
  2. In the address bar type https://192.168.1.1:11111/time?key=***, replacing 192.168.1.1 with the correct IP address and *** with the correct API key.
  3. Press Enter. You should see a response indicating an HTTPS warning, or possible an OK message. Both mean that the server works correctly and your are able to connect to it from the same computer.
  4. Repeat the steps 2,3 on the client computer. You will either see the same response as you saw in step 3, or you might see an error saying This site can't be reached, or similar depending on your browser. This error means that there’s either a connectivity issue between the client and the server. For example a firewall may be blocking the requests.

Some Linux distributions, as well as Windows can have their firewall enabled by default to block all incoming traffic to apps. You should try disabling these first to see if that helps. If it does, then you could configure an exception to allow local network traffic to Everdo.

The exact instructions to configure the firewall on your OS can be found online. Some mainstream Linux distributions, use ufw.

Problem: Sync is working, but some items/tags are missing on a device

Sometimes devices get out of sync for one reason or another. Since the auto-sync algorithm is incremental, it will not detect a discrepancy in data that might have occurred a while ago. If you notice such discrepancy, you can use manual sync actions to bring the devices back to the same state. Make sure to read the description of actions carefully so that you understand what they do.

Last modified October 31, 2020