117 lines
3.6 KiB
XML
117 lines
3.6 KiB
XML
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
version="5.0"
|
|
xml:id="module-services-gitlab">
|
|
|
|
<title>Gitlab</title>
|
|
|
|
<para>Gitlab is a feature-rich git hosting service.</para>
|
|
|
|
<section><title>Prerequisites</title>
|
|
|
|
<para>The gitlab service exposes only an Unix socket at
|
|
<literal>/run/gitlab/gitlab-workhorse.socket</literal>. You need to configure a
|
|
webserver to proxy HTTP requests to the socket.</para>
|
|
|
|
<para>For instance, the following configuration could be used to use nginx as
|
|
frontend proxy:
|
|
|
|
<programlisting>
|
|
services.nginx = {
|
|
enable = true;
|
|
recommendedGzipSettings = true;
|
|
recommendedOptimisation = true;
|
|
recommendedProxySettings = true;
|
|
recommendedTlsSettings = true;
|
|
virtualHosts."git.example.com" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
|
|
};
|
|
};
|
|
'';
|
|
</programlisting>
|
|
</para>
|
|
|
|
</section>
|
|
|
|
<section><title>Configuring</title>
|
|
|
|
<para>Gitlab depends on both PostgreSQL and Redis and will automatically enable
|
|
both services. In the case of PostgreSQL, a database and a role will be created.
|
|
</para>
|
|
|
|
<para>The default state dir is <literal>/var/gitlab/state</literal>. This is where
|
|
all data like the repositories and uploads will be stored.</para>
|
|
|
|
<para>A basic configuration with some custom settings could look like this:
|
|
|
|
<programlisting>
|
|
services.gitlab = {
|
|
enable = true;
|
|
databasePassword = "eXaMpl3";
|
|
initialRootPassword = "UseNixOS!";
|
|
https = true;
|
|
host = "git.example.com";
|
|
port = 443;
|
|
user = "git";
|
|
group = "git";
|
|
smtp = {
|
|
enable = true;
|
|
address = "localhost";
|
|
port = 25;
|
|
};
|
|
secrets = {
|
|
db = "uPgq1gtwwHiatiuE0YHqbGa5lEIXH7fMsvuTNgdzJi8P0Dg12gibTzBQbq5LT7PNzcc3BP9P1snHVnduqtGF43PgrQtU7XL93ts6gqe9CBNhjtaqUwutQUDkygP5NrV6";
|
|
secret = "devzJ0Tz0POiDBlrpWmcsjjrLaltyiAdS8TtgT9YNBOoUcDsfppiY3IXZjMVtKgXrFImIennFGOpPN8IkP8ATXpRgDD5rxVnKuTTwYQaci2NtaV1XxOQGjdIE50VGsR3";
|
|
otp = "e1GATJVuS2sUh7jxiPzZPre4qtzGGaS22FR50Xs1TerRVdgI3CBVUi5XYtQ38W4xFeS4mDqi5cQjExE838iViSzCdcG19XSL6qNsfokQP9JugwiftmhmCadtsnHErBMI";
|
|
};
|
|
extraConfig = {
|
|
gitlab = {
|
|
email_from = "gitlab-no-reply@example.com";
|
|
email_display_name = "Example GitLab";
|
|
email_reply_to = "gitlab-no-reply@example.com";
|
|
default_projects_features = { builds = false; };
|
|
};
|
|
};
|
|
};
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>If you're setting up a new Gitlab instance, generate new secrets. You
|
|
for instance use <literal>tr -dc A-Za-z0-9 < /dev/urandom | head -c 128</literal>
|
|
to generate a new secret. Gitlab encrypts sensitive data stored in the database.
|
|
If you're restoring an existing Gitlab instance, you must specify the secrets
|
|
secret from <literal>config/secrets.yml</literal> located in your Gitlab state
|
|
folder.</para>
|
|
|
|
<para>Refer to <xref linkend="ch-options" /> for all available configuration
|
|
options for the <literal>services.gitlab</literal> module.</para>
|
|
|
|
</section>
|
|
|
|
<section><title>Maintenance</title>
|
|
|
|
<para>You can run Gitlab's rake tasks with <literal>gitlab-rake</literal>
|
|
which will be available on the system when gitlab is enabled. You will
|
|
have to run the command as the user that you configured to run gitlab
|
|
with.</para>
|
|
|
|
<para>For example, to backup a Gitlab instance:
|
|
|
|
<programlisting>
|
|
$ sudo -u git -H gitlab-rake gitlab:backup:create
|
|
</programlisting>
|
|
|
|
A list of all availabe rake tasks can be obtained by running:
|
|
|
|
<programlisting>
|
|
$ sudo -u git -H gitlab-rake -T
|
|
</programlisting>
|
|
</para>
|
|
|
|
</section>
|
|
|
|
</chapter>
|