How to Upgrade OwnCloud 9.0 to 9.1 on Synology NAS

This tutorial shows how to upgrade ownCloud 9.0.6 to 9.1.2 on Synology NAS DS214+ DSM6.0.

Connect to your NAS through SSH and get root permission

sudo su


1- Disable third party apps

I need to disable Calendar, Contacts and Notes

su - http

Enter the root ownCloud directory

cd owncloud
php -f occ app:disable calendar
php -f occ app:disable contacts
php -f occ app:disable notes

If u get the error

An unhandled exception has been thrown:
exception ‘Doctrine\DBAL\DBALException’ with message ‘Failed to connect to the database: An exception occured in driver: could not find driver’ in /volume1/web/owncloud-9.0.6/lib/private/db/connection.php:54

then use this workaround:

sudo -u http /usr/local/bin/php56 -f occ app:disable calendar
sudo -u http /usr/local/bin/php56 -f occ app:disable contacts
sudo -u http /usr/local/bin/php56 -f occ app:disable notes


2- Enter maintenance mode

sudo -u http /usr/local/bin/php56 -f occ maintenance:mode --on

Stop Apache webserver

stop pkg-apache22


3- Backup everything

Go back to /volume1/web folder

cd ..

Backup your actual ownCloud root directory (owncloud-9.0.6)

tar -cvf owncloud-9.0.6.backup.tar owncloud-9.0.6

Backup the data directory (owncloud_data) which is separated in my case

tar -cvf owncloud_data.backup.tar owncloud_data

Backup the database manually (owncloud_90) or eventually use phpMyAdmin. By default MariaDB in Synology has login root without password, if a password has been set then add properly the option -p

mysqldump -u root owncloud_90 > owncloud-9.0.6.sql


4- Download and deploy Owncloud 9.1

Download new ownCloud package from here


We must extract to a new directory otherwise it will rewrite the directory owncloud already in use

mkdir owncloud-9.1.2
tar -xvf owncloud-9.1.2.tar.bz2 -C owncloud-9.1.2 --strip-components=1


5- Move configuration and apps

From old config folder copy config.php

sudo cp owncloud-9.0.6/config/config.php owncloud-9.1.2/config/

If you are using third party applications, look in your new owncloud/apps/ directory to see if they are there. If not, copy them from your old apps/ directory to your new one.

Make sure the directory permissions of your third party application directories are the same as for the other ones.

cp -R  owncloud-9.0.6/apps/calendar/ owncloud-9.1.2/apps/
cp -R  owncloud-9.0.6/apps/contacts/ owncloud-9.1.2/apps/
cp -R  owncloud-9.0.6/apps/notes/ owncloud-9.1.2/apps/


6- Verify permissions

Verify/change permissions of ownCloud root folder, it should be:

4.0K drwxr-xr-x  14 http root 4.0K Mar  8  2016 <our_owncloud_folder>


chmod 755 owncloud-9.1.2/

Verify/change ownerships ownCloud files/folders: on Synology must be http:root

sudo chown -R http:http owncloud-9.1.2/


7- Database migration

Start the web server:

sudo start pkg-apache22

Upgrade using occ

cd owncloud-9.1.2
sudo -u http /usr/local/bin/php56 -f occ upgrade


8- Restart everything

Renable third party apps

sudo -u http /usr/local/bin/php56 -f occ app:enable calendar
sudo -u http /usr/local/bin/php56 -f occ app:enable contacts
sudo -u http /usr/local/bin/php56 -f occ app:enable notes

Disable maintenance mode

sudo -u http /usr/local/bin/php56 -f occ maintenance:mode --off

Go back to /web directory and update the link

cd ..
rm owncloud
ln -sf owncloud-9.1.2/ owncloud

enjoy your just upgraded personal cloud browsing to


Check for any app upgrade. Login to ownClound as admin, go to Apps section and check if any update is available.

If any strange behaviour or any HTTPS certificate issue clear the cache of your browser (I had some issues using Firefox)

Remember to delete the backup files.

Guacamole: clientless remote desktop – latest version tutorial on Ubuntu/Xubuntu 14.04/16.04

Guacamole website:

Guacamole user guide:



Required dependencies:

sudo apt install libcairo2-dev libjpeg-dev libpng12-dev libossp-uuid-dev libavcodec-dev libswscale-dev

Optional dependencies for VNC, RDP, SSH, and Telnet support:

sudo apt install libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev

Required dependency in order to launch the configure script:

sudo apt install libtool


Source code

Stable releases download:

tar -xzf guacamole-server-0.9.9.tar.gz
mv guacamole-server-0.9.9 guacamole-server

or latest Github revision:

git clone guacamole-server

Enter source folder

cd guacamole-server

Only for Github source: files downloaded directly from git will not contain the configure script, as autogenerated code is not included in the project’s repositories. So we need an extra package to be installed:

sudo apt install autoconf libtool

and generate configure manually:

autoreconf -fi


Build and install

./configure --with-init-dir=/etc/init.d

The --with-init-dir=/etc/init.d shown above prepares the build to install a startup script for guacd into the /etc/init.d directory, such that we can later easily configure guacd to start automatically on boot.

sudo make install
sudo ldconfig
cd ..



Required dependencies: we need the Tomcat servlet container, website:

sudo apt install tomcat7

To compile we need Maven and the Java SDK (called JDK) because the Java JRE (jre-default) is not enough:

sudo apt-get install maven default-jdk


Source code

Download the stable release

tar -xzf guacamole-client-0.9.9.tar.gz
mv guacamole-client-0.9.9 guacamole-client

or latest revision from Github:

git clone guacamole-client
cd guacamole-client


Build and install

Ready to compile the java package:

mvn package

Move and rename the webapp to simplify the resulting URL

sudo cp guacamole/target/guacamole-0.9.10-incubating.war /var/lib/tomcat7/webapps/guacamole.war
cd ..



Create the configuration folder

sudo mkdir /etc/guacamole

Link our configuration folder to guacamole’s default location

sudo ln -s /etc/guacamole /usr/share/tomcat7/.guacamole

Create the properties file

sudo mousepad /etc/guacamole/

and edit as follow:

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port: 4822

# Location to read extra .jar's from
lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes

# Authentication provider class

# Properties used by BasicFileAuthenticationProvider
basic-user-mapping: /etc/guacamole/user-mapping.xml

Create the client’s list

sudo mousepad /etc/guacamole/user-mapping.xml

edit as u need, the reference is here:

Example: (authorize username and password can be left empty for anonymous login)

    <authorize username="admin" password="admin">
        <!-- RDP - Remotedesktop -->
        <!-- Parameters explained here: -->

        <connection name="Redmond OS7 RDP (simple login)">
                <param name="hostname"></param>      <!-- FQDN or host IP -->
                <param name="port">2389</param>                   <!-- Port, Standard is 3389 -->
                <param name="disable-audio">true</param>          <!-- disable audio -->

        <connection name="Redmond OS7 RDP (extended login)">
                <param name="hostname"></param>      <!-- FQDN or host IP -->
                <param name="port">3389</param>                   <!-- Port, Standard is 3389 -->
                <param name="username">cesare</param>       <!-- Login -->
                <param name="password">cesare</param>        <!-- Password -->
        <param name="domain">mydomain.local</param>              <!-- Domain -->
                <param name="disable-audio">true</param>          <!-- disable audio -->
                <param name="server-layout">it-it-qwerty</param>  <!-- IT keyboard layout -->
        <connection name="Linux Mint 18 VM">
                <param name="hostname"></param>      <!-- FQDN or host IP -->
                <param name="port">3389</param>                   <!-- Port, Standard is 3389 -->
                <param name="disable-audio">true</param>          <!-- disable audio -->

        <!-- WebSSH -->
        <!-- Parameters explained here: -->
        <connection name="SSH Server #1">
                <param name="hostname"></param>      <!-- FQDN or host IP -->
                <param name="port">22</param>                     <!-- Port, standard is 22 -->
                <param name="username">myname</param>             <!-- login -->
                <param name="password">mypassword</param>        <!-- password -->
                <param name="color-scheme">green-black</param>        <!-- set the color scheme -->
                <param name="font-name">Ubuntu Mono</param>        <!-- set the font family -->



Services start

14.04 releases

sudo service tomcat7 restart
sudo service guacd start

16.04 releases

sudo systemctl restart tomcat7
sudo systemctl start guacd


Connect to Guacamole

Browse to:



Enable Guacamole to run at startup

14.04 releases

sudo update-rc.d tomcat7 defaults
sudo update-rc.d guacd defaults

16.04 releases

sudo systemctl enable tomcat7
sudo systemctl enable guacd


How to fix “There is no public key available for the following key IDs”

When I run the command

sudo apt-get update

I got this warning:

There is no public key available for the following key IDs: [key_id]

To fix:

sudo apt-key adv --keyserver --recv-keys [key_id]

The command above downloads the missing key using the hexadecimal numbers given the [key_id] with apt-key. After running apt-key to download the missing [key_id], any packages from that repositories will be considered trusted.

How to install .ttf fonts in Xubuntu

Fonts only for your user

mkdir ~/.fonts
cp <myfont.ttf> ~./fonts/

Or system wide fonts

cp <myfont.ttf> /usr/share/fonts/truetype/

Then reload the fonts cache

sudo fc-cache -f

WordPress Themes