Opensource alternative to Evernote for your server – Laverna

laverna logoIf you are looking for a free and opensource alternative to Evernote to takes notes and synchronize them among all your devices, Laverna is a similar service and can even be installed on your own server \o/

On top of having several editing modes (Distraction free, preview, …), Laverna use client-side encryption to ensure only you can access to those notes, it also supports Tasks, got an Offline mode, and even allow you to synchronize your notes with cloud storages (Like dropbox). Well and  it’s opensource and free (Under GPLv3)

Although it’s in beta, the project is quite active and a demo can be found here.



1) Clone the Git repository in your /var/www folder

cd /var/www
git clone

PS: If you don’t have git installed, simply run

apt-get install git

2) Make sure you use the stable version

cd laverna
git checkout 0.5.0

3) Install node.js and npm

– If you use Ubuntu, simple run (in root)

apt-get install nodejs npm

– If you are on Debian (Wheezy?) like me, you can install nodejs from wheezy-backports (modify your source.list accordingly) and run (in root):

apt-get install nodejs nodejs-legacy

and for npm, you can use the installer

curl | sh

(You will need curl to be installed)

4) Install bower and grunt

Still in the laverna folder, run:

npm install bower
npm install grunt
npm install grunt-cli

5)  Install Laverna’s dependencies:

– NPM install

If you have been using your regular user to install laverna, simply run:

npm install

or if like me you used root, you need to allow npm to be executed as root, in that case run:

npm install --allow-root

If you add the error:

– BOWER install

In the case of bower, as current script use git access through SSH connection instead of read only access for the remotestorage.js dependence, you need to modify bower.json

nano bower.json

and modify the line:

"remotestorage.js": "",

to become:

"remotestorage.js": "git://",

for read-only access. Otherwise you will have the error:

bower ECMDERR       Failed to execute "git ls-remote --tags --heads", exit code of #128

make their is no other (if there is, replace by git:// Then save (CTRL+X, then Yes)

And now run:

/var/www/laverna/node_modules/bower/bin/bower install --allow-root

I put the whole path, as if I only run “bower install” it returns “bower: command not found”. (Indeed, not installed with global path)

6) Build laverna

Finally run:

/var/www/laverna/node_modules/grunt-cli/bin/grunt build

here again I used full path.

You should now have a working laverna instance on your own server. Simply go to http://YourIP/laverna/app/

Laverna notes



Virtualhost configuration

Now you got your Laverna instance working and you want to access it from lav.domain.tld or directly from mywebmail.tld, instead of using the IP/laverna/app link, you will need to set up a virtualhost. And you even could force HTTPS connection.

You will need to:

1) Create a A redirection in your DNS server/registrar

2) Have SSL certificate ready. If not you can read this tutorial.

3) Create your virtualhost as following:

In /etc/apache2/sites-enabled/, create a file called laverna (In root):

nano /etc/apache2/sites-enabled/laverna

and paste/adapt the following content:

<VirtualHost *:80>
        ServerAdmin webmaster@domain.tld
        ServerName lav.domain.tld
        Redirect / https://lav.domain.tld

<IfModule mod_ssl.c>
<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/myblog.pem
        SSLCertificateKeyFile /etc/ssl/private/myblog.key

        ServerAdmin webmaster@domain.tld
        ServerName lav.domain.tld

        DocumentRoot /var/www/laverna/app
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        <Directory /var/www/laverna/app>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all

Adapt the content (Servername, webmaster, SSL certificate and directory, …).

The first part will redirect all the connection from port 80 (HTTP) to port HTTPS (port 443) to force secure connection. If so, please configure your SSL certificate.

When done, save the file (CTRL+X then Yes) and reload apache: (In root)

/etc/init.d/apache2 reload

You should now be all set!


Loves to discover web-based apps to install on his own server@home and write articles about it


Add a comment