Everdo Network Sync Guide

I am wondering whether there is a way to run a server service on Linux without Desktop GUI?

I have created a docker image to run a synchronization server without UI. With this I am able to synchronize my devices from anywhere. If you want to try, the image is here:
https://hub.docker.com/r/juanmbq/filesyncserver/

The current limitations are:

  • Only manual sync works.
  • You cannot run the server behind a reverse proxy.

I’m not sure I want to fix the automatic sync because clients seem to have a fixed rate interval of 5 seconds for synchronization requests. For a LAN, as it was intended, it’s okay, but I don’t need so many requests when I’m on a WAN.

OK, not the most technically savvy, but thinking i’m doing it right to no avail. Is the port 1111? or does my computer specify? I am unable to make connection.

How far out is cloud sync? and if we subscribe is there a potential discount on app price?

Very nice work Andrei.

The port is set to 11111 by defaut.

It’s here! Everdo Desktop 1.2.2, Encrypted Sync Beta- Everdo

The app price stays the same, but the sync service price will stay low for early subscribers.

Andrei,
Must say I’m pretty excited. I’ve always wanted a solution that put Tasks and Notes together in a seamless comprehensive way. Are you the sole developer? I want to support the project. running on Linux with my laptop and on an android and want to beta test the sync and help provide feedback.

What’s the best solution to offer feedback? Right here on these boards?

Thanks for the well thought out development.

Brandon

I was able to successfully configure sync. However, I had question about IP/hostname mentioned in the server setup. I have mentioned the ip address by doing ipconfig command using commad prompt and selecting the ipv4 address. Does this address always remain same or will it change everytime I restart the machine?

This would depend entirely on your network configuration. If you control the network, it’s fairly easy to setup a fixed IP address so that it doesn’t change.

Hi, I’m quite new to linux. And I’m using Pop_OS! distro which is based on Ubuntu 18.04 LTS. I just got a Everdo Pro on it!

And now I’m trying to make it my Sync Server and my iOS (just installed it) a Clients.

Problems: I don’t know how to:
“Find the IP address of [my] Server computer on the local network”

or which is my Port either.

I have tried different IPs using nmap but all I got was a msg of “Everdo API is down”.

Can somebody help me to discover it? thanks a lot.

You can use ifconfig to find the IP address of the network interface. For example here the IP address is 192.168.1.38

$ ifconfig
enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.38  netmask 255.255.255.0  broadcast 192.168.1.38192.168.1.38192.168.1.255
        inet6 fe80::6af7:28ff:fe8d:e825  prefixlen 64  scopeid 0x20<link>
        ether 68:f7:28:8d:e8:25  txqueuelen 1000  (Ethernet)
        RX packets 3918330  bytes 3484500157 (3.2 GiB)
        RX errors 0  dropped 4084  overruns 0  frame 0
        TX packets 2655804  bytes 559113323 (533.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xe1200000-e1220000

The port you can set to 11111, unless it’s occupied by something else, in which case you can set it to 11112 or anything else.

So the IP address is the address of your computer (server) on the network. The port is the address of the Everdo application on that computer. You can choose any free port, but you should specify the right IP address. If everything is OK, then you should see a green notification when Everdo starts.

1 Like

Still not working. Status: EADDRNOTAVAIL
How can I see if the port is being used somewhere else?

➜  ~ ifconfig
enp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::9647:1c9:4403:3175  prefixlen 64  scopeid 0x20<link>
        inet6 fd30:68e3:d7a1:3:3d30:7677:b865:6c59  prefixlen 64  scopeid 0x0<global>
        inet6 fd30:68e3:d7a1:3:50e2:20c1:ecfb:2f4b  prefixlen 64  scopeid 0x0<global>
        ether 00:e0:4c:68:00:8b  txqueuelen 1000  (Ethernet)
        RX packets 410278  bytes 280483070 (280.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 399043  bytes 310279516 (310.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2378  bytes 482901 (482.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2378  bytes 482901 (482.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

So this should be the IP address in the API configuration. I’m not sure how to check which ports are occupied. I would just try a few increments. The probability that you have many consecutive non-standard ports taken by other apps is low.

1 Like

ok! now I have my “API is listening” status on my Server

Then I tried to configure my iOS as Client – at Local Network but I got a

Error: communication error

Typically, this indicates a network/firewall/VPN or some other network setup issue. But the network sync functionality has only recently been added to the iOS app. So it might also be a bug.

First, make sure the phone is connected to the same physical network as the server.

Then here’s a test you can use to determine whether the device can access the server. Trying it on different devices on the same network might help diagnose the issue.

1 Like

I just tried the test but got a
Safari cannot open the page because it could not connect to the server.

I don’t use VPN or special firewall. I don’t know (yet) how to do it, but I can try: is it possible that a static IP would solve the issue?
I’m running my Server on a Linux – Pop!_OS based on Ubuntu 18.04 – Dell laptop.

I’ll try other devices but only have androids around.

I can’t find a tutorial to set a static IP that work in my OS

My point is that it is difficult to diagnose this remotely. Your server can be inaccessible to other devices on the network for any number of reasons, one of which is a firewall getting in the way.

A static IP address makes sure that it does not ever change, so you don’t need to reconfigure your server and your devices every time the network connection resets.

Have you tried the method I linked to in the previous post on the server itself, as well as on other devices?

There’s probably a support channel for your distribution. It should definitely be possible to do on any linux computer, but the methods vary. It may be easier to do this at the router level. Some routers have the ability to “fix” the IP address of a specific device. This is usually available in the router configuration app / web UI.

1 Like

If you’re lucky you can use the computer name / hostname because the name does not change even when the ip address changes

I found a way to do this! Now my Server is with a
Static IP 192.168.0.112
And it’s Status is still API is listening (green)
cool.

But on the iOS Client side, although it got confused – like opening with it’s Sync Status OK (green) at Settings – when I go to Setup Sync > Network Settings and click Clean Pull, it gives me back a Status: communication error (red)
And I did the test again and got a slightly different msg:
Safari could not open the page because the server stopped responding.

Can you open the test URL on the server computer, or on any other device on the same network?

1 Like

on my Server computer:

# Your connection is not private
Attackers might be trying to steal your information from **192.168.0.112** (for example, passwords, messages, or credit cards). [Learn more](chrome-error://chromewebdata/#)
NET::ERR_CERT_AUTHORITY_INVALID

On Clients:
iOS Safari:
Safari could not open the page because the server stopped responding.

iOS Chrome:
This site can't be reached
192.168.0.112 took too long to respond.
Try:
Checking the connection
ERR_CONNECTION_TIMED_OUT

Android Chrome:
404. That's an error
The requested URL [...] was not found on this server.

The first message indicates that the server is definitely up and responding.
The iOS message indicates lack of connectivity between the devices.

You can also check if there’s a firewall enabled on your server machine by running sudo ufw status in the terminal. If the status is “active” then the firewall is on and it will block any communication with the computer by default. You’ll then need to configure it to open the port for Everdo.

1 Like