104 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.8 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, this could be used for Nginx:
 | |
| 
 | |
| <programlisting>
 | |
| services.nginx.httpConfig = ''
 | |
|   server {
 | |
|     server_name git.example.com;
 | |
|     listen 443 ssl spdy;
 | |
|     listen [::]:443 ssl spdy;
 | |
| 
 | |
|     ssl_certificate /var/lib/acme/git.example.com/fullchain.pem;
 | |
|     ssl_certificate_key /var/lib/acme/git.example.com/key.pem;
 | |
| 
 | |
|     location / {
 | |
|       proxy_http_version 1.1;
 | |
|       proxy_set_header    Host                $http_host;
 | |
|       proxy_set_header    X-Real-IP           $remote_addr;
 | |
|       proxy_set_header    X-Forwarded-Ssl     on;
 | |
|       proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
 | |
|       proxy_set_header    X-Forwarded-Proto   $scheme;
 | |
| 
 | |
|       proxy_pass 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 /var/gitlab/state. This is where all data like
 | |
| the repositories and uploads will be stored.</para>
 | |
| 
 | |
| <para>A basic configuration 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";
 | |
|   extraConfig = {
 | |
|     gitlab = {
 | |
|       default_projects_features = { builds = false; };
 | |
|     };
 | |
|   };
 | |
| };
 | |
| </programlisting>
 | |
| </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 all Gitlab related commands like rake tasks with
 | |
| <literal>gitlab-runner</literal> which will be available on the system
 | |
| when gitlab is enabled. You will have to run the commands as the user that
 | |
| you configured to run gitlab.</para>
 | |
| 
 | |
| <para>For instance, to backup a Gitlab instance:
 | |
| 
 | |
| <programlisting>
 | |
| $ sudo -u git -H gitlab-runner exec rake gitlab:backup:create
 | |
| </programlisting>
 | |
| 
 | |
| A list of all availabe rake tasks can be obtained by running:
 | |
| 
 | |
| <programlisting>
 | |
| $ sudo -u git -H gitlab-runner exec rake -T
 | |
| </programlisting>
 | |
| </para>
 | |
| 
 | |
| </section>
 | |
| 
 | |
| </chapter>
 | 
