Installing Clipperz on Debian 7

Installing Clipperz on Debian 7
Jérémie Kassianoff
January 12, 2014
5 min read

Clipperz is a free password manager. Suited for personal and family use. A secure web interface and strong algorithms.

Real-world use case

You're looking for a free password manager to self-host: here's how to install Clipperz on Debian 7.

Clipperz is an open source password manager under AGPL v3 license.
Clipperz's strength is the ability to self-host it and modify its source code.
Suited for personal and family use, it offers interesting features!
This article is based on Clipperz's Github, and will be installed on a Debian 7 distribution.

Prerequisites: Installation and compilation

Installing a classic "LAMP" server:

bash
apt-get install apache2 mysql-server php5-mysql php5

Installing git and python:

bash
apt-get install git-core python-git python-dulwich php-services-json

Downloading the "password-manager" project from clipperz's Github:

bash
git clone git://github.com/clipperz/password-manager.git

Moving into the folder:

bash
cd password-manager

Running the compilation:

bash
./scripts/build install --backends php --frontends beta
bash
cleaning upMODULE: beta
MODULE: php
PHP builder - RUN
frontend [beta]: compressing JS code
frontend [beta]: compressing JS code
frontend [beta]: compressing CSS
frontend [beta]: compressing JS code
[PHP builder - beta] index.html checksum: 43ec93f292a1275928a6d657da2dc2d8 (md5)
[PHP builder - beta] index.html checksum: 38ee8108a1caed357ad76092a46d6b211dd79d11 (sha1)
[PHP builder - beta] index.html checksum: cdbef767238dec531ddc1da9d803b98681c6fbb6d6adac99266385c13b8f3211 (sha256)

The index's checksum appears, keep it, since it lets you know whether you've been compromised or not!

Installing clipperz

Clipperz's installation path will be set in the folder:

bash
mkdir /var/www/clipperz/
cd /var/www/clipperz/

Copy the entire previous compilation inside:

bash
cp -R target/php/* /var/www/clipperz/

The folder will belong to the web server:

bash
chown -R www-data:www-data /var/www/clipperz/

Starting mysql on the command line:

bash
mysql -p
=>Enter password: 
=>Welcome to the MySQL monitor.  Commands end with ; or g.
=>Your MySQL connection id is 100
=>Server version: 5.5.33-0+Wheezy1 (Debian)

The SQL queries to add will be as follows:

bash
mysql> create database clipperz;
Query OK, 1 row affected (0.02 sec)

mysql> grant all privileges on clipperz.* to 'clipperz'@'localhost' identified by "clipperz";
Query OK, 0 rows affected (0.14 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)

mysql> exit
Bye

Clipperz's configuration file needs to contain the database information:

bash
nano /var/www/clipperz/configuration.php

Find this part in the file's configuration and replace "password":

bash
[...]
$configuration['db_encoding'] = 0;

// edit the information below to match your database settings

$configuration['db']    = 'clipperz';       //  database name
$configuration['host']  = 'localhost';  //  database host
$configuration['user']  = 'root';       //  database user
$configuration['pass']  = 'password';       //  database password
$configuration['port']  = '3306';       //  database port
[...]

Web interface with "POG"*

Installing the database with "php object generator"
Launch in your browser: http://your\_domain/setup/index.php

Leave the "Tables" and "Tests" options at default, then click "POG me up!"
Next, it tells you everything went well:

bash
Initializing POG Setup....OK!
File Structure....OK!
Configuration Info....OK!

Storage Status
    Aligning [record] with table 'record'....OK!
    Aligning [user] with table 'user'....OK!
    Aligning [onetimepassword] with table 'onetimepassword'....OK!
    Aligning [onetimepasswordstatus] with table 'onetimepasswordstatus'....OK!
    Aligning [recordversion] with table 'recordversion'....OK!

POG Essentials

record

Save()….OK! SaveNew()….OK! Delete()….OK! GetList() Limit….OK! Sorting….OK! DeleteList()….OK! Optimizing….OK! ***

user

Save()….OK! SaveNew()….OK! Delete()….OK! GetList() Limit….OK! Sorting….OK! DeleteList()….OK! Optimizing….OK! ***

onetimepassword

Save()….OK! SaveNew()….OK! Delete()….OK! GetList() Limit….OK! Sorting….OK! DeleteList()….OK! Optimizing….OK! ***

onetimepasswordstatus

Save()….OK! SaveNew()….OK! Delete()….OK! GetList() Limit….OK! Sorting….OK! DeleteList()….OK! Optimizing….OK! ***

recordversion

Save()….OK! SaveNew()….OK! Delete()….OK! GetList() Limit….OK! Sorting….OK! DeleteList()….OK! Optimizing….OK! POG Relations PreRequisites

record

Is properly connected (OK) ***

user

Is properly connected (OK) ***

onetimepassword

Is properly connected (OK) ***

onetimepasswordstatus

Is properly connected (OK) ***

recordversion

Is properly connected (OK) POG Relations

record

Addrecordversion()….OK! GetrecordversionList()….OK! Delete(recordversion)….OK! Save(recordversion)….OK! Set(recordversion)List….OK! Setuser()….OK! Getuser()….OK! ***

user

Addrecord()….OK! Addonetimepassword()….OK! GetrecordList()….OK! GetonetimepasswordList()….OK! Delete(record)….OK! Delete(onetimepassword)….OK! Save(record)….OK! Save(onetimepassword)….OK! Set(record)List….OK! Set(onetimepassword)List….OK! ***

onetimepassword

Setuser()….OK! Setonetimepasswordstatus()….OK! Getuser()….OK! Getonetimepasswordstatus()….OK! ***

onetimepasswordstatus

Addonetimepassword()….OK! GetonetimepasswordList()….OK! Delete(onetimepassword)….OK! Save(onetimepassword)….OK! Set(onetimepassword)List….OK! ***

recordversion

Setrecord()….OK! Getrecord()….OK! CHECKED 5 OBJECT(S). FOUND 0 ERROR(S). HURRAY! -----------------

You can click the "Proceed" button and you're done!

The Base 64 plugin can be enabled via "manage plugin" and "install".
Edit the configuration file:

bash
[...]
$configuration['db_encoding'] = 1;

The result in "POG":

bash
BASE64 Status

    Checking MySQL function....OK!

    Checking db_encoding status....OK!

BASE64 Status...OK!

---------------------------------------------------

Copy the entire "beta" directory to the website's root:

bash
cp -R beta/* /var/www/clipperz/

A few tips to finish the installation:

  • You can now move or delete your "setup" file to make it inaccessible.
  • Creating a robots.txt file that prevents your Clipperz from being indexed, for example:
bash
User-agent: *
Disallow: /
  • Disabling registrations in the "index.php" file:
    Replace the "registration" case with the "disabled_registration" case

Once done, your Clipperz web interface is ready!

Enjoy.

Conclusion

I've presented here the installation of Clipperz, a self-hostable open source password manager, on a Debian 7 distribution with a classic LAMP stack. Compiling the project, setting up the database via the POG tool, and enabling the Base64 plugin let you get a working web interface in a few steps. This solution offers a good compromise for personal or family use while keeping full control over your sensitive data.