This is a guide to the installation of Signpost on a 64 bit edition of ubuntu 12.04.
The steps of the installation process are:
1 install OCaml
2 install and set up OPAM
3 use OPAM to install the latest OCaml compiler and switch to this new compiler version
4 Add the remote repositories required for signposts to OPAM
5 Install the libraries required using OPAM
6 Download the code for signpost
7 Set up vswitch
8 Generate and place keys
9 Install iodine and set up password
10 Run Signposts
1 INSTALLING OCAML
OCaml 3.12.1 is available from the ubuntu repositories, this is not a up to date version of the compiler but it will do to bootstrap the process.
$ sudo apt-get install ocaml
2 INSTALLING & SET UP OPAM
OPAM is a useful package manager for OCaml code such as signposts. To download the initialize:
$ git clone git://github.com/OCamlPro/opam.git
$ cd opam && ./configure && make
$ sudo make install
$ opam init
$ eval ‘opam config -env’
$ echo “$ which opam && eval ‘opam config -env'” >> ~/.profile
3 SWITCH TO LATEST OCAML COMPILER
To see the compiler versions avaliable on OPAM use:
$ opam switch -list
To see the version of the OCaml compiler that is currently in use, use
$ ocaml -version
Then switch the OCaml 4.00.1 using
$ opam switch 4.00.1
$ eval ‘opam config -env’
This process may take quite a while. You can now check the version of OCaml again, it it should show that the PATH is now pointing towards a new OCaml compiler version
4 REMOTE REPOSITORIES
To view the current remote respositories that OPAM is using, enter:
$ opam remote -list
This should give you the following output:
[curl] default http://opam.ocamlpro.com
To add the remote respositories required for signposts enter the following:
$ opam remote -kind git -add dev https://github.com/mirage/opam-repo-dev.git
$ opam remote -kind git -add mirage git://github.com/mirage/opam-repo.git
Checking the current remote repositories as before, now returns
[git] mirage git://github.com/mirage/opam-repo.git
[git] mirage-dev git://github.com/mirage/opam-repo-dev.git
[curl] default http://opam.ocamlpro.com
5 INSTALL LIBRARIES
To install the required packages from OPAM and the package manager use:
$ opam install lwt cstruct mirage mirage-net ocamlgraph uri rpc oasis ssl
$ sudo apt-get install libnfnetlink-dev libnl-3-dev libnl-cli-3-dev libnl-genl-3-dev libnl-nf-3-dev libnl-route-3-dev
Some the packages here are not the most upto date, to get the updates
$ git clone https://github.com/crotsos/mirage-platform.git
$ cd mirage-platform/
$ make all install
$ git clone https://github.com/crotsos/mirage-net.git
$ cd mirage-net/
$ make all install
$ git clone https://github.com/crotsos/ocaml-openflow.git
$ cd ocaml-openflow/
$ make all install
$ git clone https://github.com/crotsos/ocaml-dns.git
$ cd ocaml-dns/
$ make all install
$ git clone https://github.com/crotsos/ocaml-crypto-keys.git
$ cd ocaml-crypto-keys/
$ make all install
In the future, you update your packages using:
$ opam update
$ opam upgrade
6 GET SIGNPOST CODE
To download a copy of the Signpost Code using:
$ git clone https://github.com/crotos/signpostd
$ cd signpostd
$ make
7 VSWITCH
$ sudo wget https://www.dropbox.com/s/4n0hwgoycm3838g/openvswitch_mod.ko?dl=1 -O /lib/modules/`uname -r`/extra/openvswitch_mod.ko
$ sudo wget https://www.dropbox.com/s/f7ivv8upe0bfurf/brcompat_mod.ko?dl=1 -O /lib/modules/`uname -r`/extra/brcompat_mod.ko
$ sudo depmod -a
$ modprobe openvswitch_mod
$ sudo modprobe brocompat_mod
$ sudo ovs-vsctl add-br br0
$ sudo ovs-vsctl add-port br0 eth0
$ sudo ifconfig eth0 up
$ sudo ifconfig br0 up
$ sudo ovs-vsctl set-fail-mode br0 standalone
$ sudo ovs-vsctl set-controller br0 tcp:localhost
$ sudo ln -s /etc/init.d/openvswitch-switch /etc/rcS.d/S10openvswitch-switch
$ sudo chmod 777 /etc/network/interfaces
$ echo “pre-up ifconfig eth0 up” >> /etc/network/interfaces
8 KEY GENERATION
For the each client we wish to add to the signposts personal cloud we need to generate a private and associated key. To generate these key we will be using onpenssl. On each client we need to generate the private key and place it into the signposd/conf directory when we need to generate the public key from this and place on the server un signpostd/conf/authorized_keys
on the client
$ openssl genrsa -out conf/signpost.pem 2046
and on the server
$ openssl rsa -in conf/signpost.pem -pubout -out conf/authorized_keys/clientname.pub
9 IODINE
To install iodine from the ubuntu package manager
sudo apt-get install iodine