Hockeypuck: OpenPGP Key Server
==============================

Hockeypuck is being developed with design goals of performance, flexibility,
reliability and portability.

Performance: We want Hockeypuck to be able to handle heavy concurrent loads of
key submissions and search requests, with reasonable response times.

Flexibility: Alternative storage backends should be easy to integrate into the
server if necessary. The server should also support custom extensions to HKP,
to support development of new web-of-trust OpenPGP applications.

Reliability: The keyserver should be configurable to run in a resilient and
highly-available manner.

Portability: The keyserver should run on a reasonably wide variety of server
operating systems and architectures with minimal hassle and minimal dependencies.

Installation
============

Ubuntu Package
--------------

$ apt-add-repository ppa:hockeypuck/ppa
$ apt-get update
$ apt-get install hockeypuck-mgo

The Ubuntu package features nice perks like an Upstart job,
static media file installation and man pages.

Developers
==========
Install Go.

$ apt-get install golang

or follow instructions at http://golang.org to set up a development environment.

Libraries
---------

$ go get launchpad.net/hockeypuck
$ go get launchpad.net/hockeypuck/mgo  # For the MongoDB worker
$ go get launchpad.net/hockeypuck/pq   # For the Postgres worker

Programs
--------

# Install the MongoDB Hockeypuck server binary to $GOPATH/bin
$ go install launchpad.net/hockeypuck/cmd/hockeypuck-mgo

# Install the loader
$ go install launchpad.net/hockeypuck/cmd/hockeypuck-load

Building Debian Packages
========================

The Debian build creates a $GOPATH in this top-level directory, gopath/,
which will freeze all the third-party sources used by Hockeypuck.

This enables the creation of a standalone source package.

Perhaps someday if Go libraries are Debian-packaged, we can migrate this
to depend on system-installed libraries?

Binary Build
------------

1. make clean && make srcclean
2. make debbin

Source Build
------------

1. make clean && make srcclean
2. make debsrc
3. dput <wherever>/ppa ../hockeypuck_x.y.z_source.changes

