Last updated: 2019-07-25

Preamble

FileCloud is an enterprise grade file sharing, sync, and backup solution developed by CodeLathe that can be self-hosted (on-prem). They provide sync clients for Windows, Mac, and Linux. While the Linux client can serve its purpose, getting it working and accessible can be a bit cumbersome.

The Wound

As it currently sits, the Linux sync client installer isn't quite as fleshed out as the Windows sync client installer, primarily because they don't have very many Linux users (reference).

For Linux, the documented installation process involves downloading and unzipping their latest archive, making a couple files executable, and then running one of them to start the sync app... which may work, providing all dependencies are met.

As user Ilsa Loving calls out on their community forums, the process leaves a bit to be desired.

Linux Sync client support for 18.10+

The Linux client as it currently exists is hopelessly inadequate. On Ubuntu (18.10) it won't launch. Furthermore, you have no idea what's wrong unless you modify the filecloudsyncstart.sh file and remove the redirection to /dev/null. Apparently I do not have the necessary libpng12.so.0 file.

For anyone else having the problem and are using Ubuntu, here is the solution:https://www.linuxuprising.com/2018/05/fix-libpng12-0-missing-in-ubuntu-1804.html

In addition, there is no .desktop file, so unless the user knows how to create one on their own, it is not possible to launch the app from the application menu.

The best option would be to provide the linux sync client in the form of a snap, flatpak or appimage package, so that you can distribute the client in a non-distribution specific manner, using whatever libraries you want.

To elaborate on her points;

  • An end-user would have no idea if they're missing a dependency since the filecloudsyncstart.sh script dumps output to /dev/null (prevents it from being displayed in terminal). So executing the command listed in the installation guide could lead to some head-scratching and googling things like "linux task manager" while trying to make sense of filtering top or ps aux via terminal, looking for a stale "filecloud" process.

  • A .desktop file is not included, which means an end-user will either have to create one or run the script manually any time they want to launch the sync client. This also adds complexity for end-users utilizing UI tools to automatically launch the sync client at startup/login.

Additionally the downloaded .zip file contains 93 files nested in the root of the archive; a plethora of libraries and images, and few certs and scripts. When the average end-user downloads the file and executes the command provided in the installation guide, all 93 of those files are likely going to be dumped straight into their ~/Downloads folder.

Expand for .zip file contents
unzip -l filecloudsync_linux_amd64.zip
(o)Archive:  filecloudsync_linux_amd64.zip
(o) Length      Date    Time    Name
(o)---------  ---------- -----   ----
(o)     148  2018-09-27 14:43   calendar.png
(o)     511  2018-09-27 14:43   cbabout32.png
(o)     359  2018-09-27 14:43   cbactivity32.png
(o)    1739  2018-09-27 14:43   cbalt_rate_limit.png
(o)     310  2018-09-27 14:43   cbbackward.png
(o)     427  2018-09-27 14:43   cbcreatefolder.png
(o)     371  2018-09-27 14:43   cbdelete.png
(o)     561  2018-09-27 14:43   cbdoc.png
(o)     325  2018-09-27 14:43   cbdownload.png
(o)     243  2018-09-27 14:43   cbfile.png
(o)     256  2018-09-27 14:43   cbfile2.png
(o)     203  2018-09-27 14:43   cbfolder.png
(o)     203  2018-09-27 14:43   cbfolder_open.png
(o)     282  2018-09-27 14:43   cbforward.png
(o)    1337  2018-09-27 14:43   cbglobal_rate_limit.png
(o)     463  2018-09-27 14:43   cbhome32.png
(o)     386  2018-09-27 14:43   cblock.png
(o)    5738  2018-09-27 14:43   cblogin.png
(o)     655  2018-09-27 14:43   cbok30.png
(o)     601  2018-09-27 14:43   cbpause30.png
(o)     520  2018-09-27 14:43   cbpdf.png
(o)     478  2018-09-27 14:43   cbpic.png
(o)     570  2018-09-27 14:43   cbppt.png
(o)     268  2018-09-27 14:43   cbprivate.png
(o)    1785  2018-09-27 14:43   cbprofile.png
(o)     702  2018-09-27 14:43   cbproperties.png
(o)     286  2018-09-27 14:43   cbpublic.png
(o)     350  2018-09-27 14:43   cbquickedit.png
(o)     336  2018-09-27 14:43   cbrefresh.png
(o)     334  2018-09-27 14:43   cbsearch.png
(o)     735  2018-09-27 14:43   cbsettings32.png
(o)     329  2018-09-27 14:43   cbshare.png
(o)     410  2018-09-27 14:43   cbunlock.png
(o)     331  2018-09-27 14:43   cbuploadfile.png
(o)     355  2018-09-27 14:43   cbuploadfolder.png
(o)     548  2018-09-27 14:43   cbxls.png
(o)  220293  2018-09-27 14:43   clientca.pem
(o)    4893  2018-09-27 14:43   clientcert.pem
(o)    3114  2018-09-27 14:43   doc.png
(o)     504  2018-09-27 14:43   email_disabled.png
(o)     550  2018-09-27 14:43   emailpermitted.png
(o)     189  2018-09-27 14:43   file.png
(o) 5632278  2018-09-27 14:43   filecloudsync
(o) 3721278  2018-09-27 14:43   filecloudsynccon
(o)      73  2018-09-27 14:43   filecloudsyncstart.sh
(o)    1510  2018-09-27 14:43   folder.png
(o)     167  2018-09-27 14:43   folder_name.png
(o)     271  2018-09-27 14:43   folder_open.png
(o)    1039  2018-09-27 14:43   generic.png
(o)    2035  2018-09-27 14:43   image.png
(o)     306  2018-09-27 14:43   info.png
(o)  139568  2018-09-27 14:43   libPocoCrypto.so
(o)  139568  2018-09-27 14:43   libPocoCrypto.so.31
(o) 1982768  2018-09-27 14:43   libPocoFoundation.so
(o) 1982768  2018-09-27 14:43   libPocoFoundation.so.31
(o)  324016  2018-09-27 14:43   libPocoJSON.so
(o)  324016  2018-09-27 14:43   libPocoJSON.so.31
(o) 1189416  2018-09-27 14:43   libPocoNet.so
(o) 1189416  2018-09-27 14:43   libPocoNet.so.31
(o)  292568  2018-09-27 14:43   libPocoNetSSL.so
(o)  292568  2018-09-27 14:43   libPocoNetSSL.so.31
(o)  461584  2018-09-27 14:43   libPocoUtil.so
(o)  461584  2018-09-27 14:43   libPocoUtil.so.31
(o)  584160  2018-09-27 14:43   libPocoXML.so
(o)  584160  2018-09-27 14:43   libPocoXML.so.31
(o)  287296  2018-09-27 14:43   libPocoZip.so
(o)  287296  2018-09-27 14:43   libPocoZip.so.31
(o)   52048  2018-09-27 14:43   libappindicator.so.1
(o) 1938840  2018-09-27 14:43   libcrypto.so
(o) 1938840  2018-09-27 14:43   libcrypto.so.1.0.0
(o)   56448  2018-09-27 14:43   libindicator.so.7
(o)  387168  2018-09-27 14:43   libssl.so
(o)  387168  2018-09-27 14:43   libssl.so.1.0.0
(o) 3128554  2018-09-27 14:43   libwx_baseu-2.9.so.5
(o) 2480660  2018-09-27 14:43   libwx_gtk2u_adv-2.9.so.5
(o)  765803  2018-09-27 14:43   libwx_gtk2u_aui-2.9.so.5
(o) 7819406  2018-09-27 14:43   libwx_gtk2u_core-2.9.so.5
(o)    1599  2018-09-27 14:43   music.png
(o)    2097  2018-09-27 14:43   pdf.png
(o)    2986  2018-09-27 14:43   ppt.png
(o)     416  2018-09-27 14:43   read_disabled.png
(o)     404  2018-09-27 14:43   readpermitted.png
(o)     574  2018-09-27 14:43   share_disabled.png
(o)     681  2018-09-27 14:43   sharepermitted.png
(o)    3401  2018-09-27 14:43   sync.png
(o)     715  2018-09-27 14:43   sync_disabled.png
(o)    1513  2018-09-27 14:43   syncindicator.png
(o)     874  2018-09-27 14:43   syncpermitted.png
(o)  104915  2018-09-27 14:43   translationsdc.zip
(o)    2110  2018-09-27 14:43   video.png
(o)     574  2018-09-27 14:43   write_disabled.png
(o)     717  2018-09-27 14:43   writepermitted.png
(o)    2852  2018-09-27 14:43   xls.png
(o)---------                     -------
(o)39216070                     93 files

The Bandaid

I put a crude script on GitHub that will install the current sync client (18+). I tested this on my current preferred flavor, Kubuntu (versions 18.10 and 19.04), but it should work on any recent (.?[Uu]buntu) release.

Installation

Run the following from your terminal...

git clone https://github.com/derek-shnosh/filecloudsync-install.git ~/Downloads/filecloudsync-install
chmod +x ~/Downloads/filecloudsync-install/filecloudsync-install.sh
~/Downloads/filecloudsync-install/filecloudsync-install.sh install

What this does...

  1. Clones the github repo to ~/Downloads/filecloundsync-install/.
    • Contains my installer script and a .png file to be used for the icon.
  2. Makes the installation script executable.
  3. Runs the installation script.
    • Downloads the latest sync client from FileCloud servers.
    • Downloads libpng12 from Ubuntu.
    • Installs prerequisites (libpng12 and libdbusmenu-gtk-dev).
    • Unzips the sync client to ~/apps/filecloudsync.
    • Copies the .png file to ~/apps/filecloudsync.
    • Makes required files executable (filecloudsync, filecloudsyncstart).
    • Creates a filecloudsync.desktop file in ~/.local/share/applications/.
    • Registers ~/apps/filecloudsync to shared libraries for dependencies.
    • The sync client can now be launched from an app menu.

Uninstall

Run the following command to uninstall.

~/Downloads/filecloudsync-install/filecloudsync-install.sh uninstall

Post-Install Thoughts

Cache & Config Visibility

The ~/FileCloudSyncData (cache folder) and ~/syncclientconfig.xml file are both created when the sync client is launched the first time; I'd like to see these files prepended with . by default so they aren't visible in graphical file managers.

I was able to prepend the cache folder with a . (i.e. ~/.FileCloudSyncData) and then update the config file accordingly...

  <rowentry>
    <name>syncclientlocation</name>
    <type>string</type>
    <value>/home/derek/.FileCloudSyncData</value>
  </rowentry>

However I can't prepend the config file with a . because the sync client won't find it, causing it to populate a new one.

Initial Setup Wizard

This one is not constrained to Linux... once the sync client is launched on any platform and a user logs in, it immediately starts syncing everything to the default location. I'd like to see options to configure selective sync and sync location before any syncing occurs; similar to other solutions like MEGA and Dropbox, that provide a setup wizard to accommodate these changes.

As a workaround for those who want to enable selective sync, check the Document editing only (no sync) option during the initial login/setup, configure selective sync, and then start syncing.