If 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 http://github.com/laverna/laverna.git
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 https://www.npmjs.com/install.sh | 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:
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
and modify the line:
for read-only access. Otherwise you will have the error:
bower ECMDERR Failed to execute "git ls-remote --tags --heads firstname.lastname@example.org:remotestorage/remotestorage.js.git", exit code of #128
make their is no other email@example.com (if there is, replace by git://github.com/username/projectname.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
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/
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):
and paste/adapt the following content:
<VirtualHost *:80> ServerAdmin firstname.lastname@example.org ServerName lav.domain.tld Redirect / https://lav.domain.tld </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/ssl/certs/myblog.pem SSLCertificateKeyFile /etc/ssl/private/myblog.key ServerAdmin email@example.com ServerName lav.domain.tld DocumentRoot /var/www/laverna/app <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/laverna/app> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> </IfModule>
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)
You should now be all set!