<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="chap-installation"> <title>Installation</title> <section> <title>Prerequisites</title> <para> To install and use Hydra you need to have installed the following dependencies: <itemizedlist> <listitem><para>Nix</para></listitem> <listitem><para>PostgreSQL</para></listitem> </itemizedlist> At the moment, Hydra runs only on 32 bit and 64 bit Linux (<emphasis>i686-linux</emphasis> and <emphasis>x86_64_linux</emphasis>). </para> </section> <section> <title>Installation</title> <para> Hydra can be installed by visiting the URL, <screen> http://hydra.nixos.org/view/hydra/unstable</screen> and use the one-click install available at one of the build pages. You could also install Hydra through the channel by performing the following commands: <screen> nix-channel --add http://hydra.nixos.org/jobset/hydra/trunk/channel/latest nix-channel --update nix-env -i hydra</screen> </para> </section> <section> <title>Creating the database</title> <para> Hydra stores its results in a database, which can be a PostgreSQL or SQLite database. The latter is easier to setup, but the former scales better. </para> <para>To setup a PostgreSQL database with <emphasis>hydra</emphasis> as database name and user name, issue the following commands: <screen> createdb hydra echo "CREATE USER hydra WITH PASSWORD '<your-password>' ;" | psql hydra cat $prefix/share/hydra/sql/hydra-postgresql.sql | psql hydra echo "GRANT ALL ON DATABASE hydra TO hydra;" | psql hydra</screen> Note that <emphasis>$prefix</emphasis> is the location of Hydra in the nix store. </para> <para> For SQLite, the following command is all it takes to create the database: <screen> cat $prefix/share/hydra/sql/hydra-sqlite.sql | sqlite3 /path/to/hydra.sqlite </screen> </para> <para> To add a user <emphasis>root</emphasis> with <emphasis>admin</emphasis> privileges, execute: <screen> echo "INSERT INTO Users(userName, emailAddress, password) VALUES ('root', 'some@email.adress.com', '$(echo -n foobar | sha1sum | cut -c1-40)');" | psql hydra echo "INSERT INTO UserRoles(userName, role) values('root', 'admin');" | psql hydra </screen> For SQLite the same commands can be used, with <command>psql hydra</command> replaced by <command>sqlite3 /path/to/hydra.sqlite</command>. </para> <para> Hydra uses an environment variable to know which database should be used, and a variable which point to a location that holds some state. To set these variables for a PostgreSQL database, add the following to the <filename>.profile</filename> of the user running the Hydra services. <screen> export HYDRA_DBI="dbi:Pg:dbname=hydra;host=localhost;" export HYDRA_DATA=/var/lib/hydra</screen> Make sure that the <emphasis>HYDRA_DATA</emphasis> directory exists and is writable for the user which will run the Hydra services. For a SQLite database, the <varname>HYDRA_DBI</varname> should be set to something like <literal>dbi:SQLite:/path/to/hydra.sqlite</literal> </para> </section> <section> <title>Getting started</title> <para> To start the Hydra webserver, execute: <screen> hydra_server.pl</screen> When the server is started, you can browse to <ulink>http://localhost:3000/</ulink> to start configuring your Hydra instance. </para> </section> <section> <title>Example: PatchELF</title> <para> </para> <subsection> <title>Defining jobsets</title> <para> </para> </subsection> <subsection> <title>Creating views</title> <para> </para> </subsection> </section> </chapter>