Klaus: Difference between revisions

From NixOS Wiki
imported>Fin444
Created page with " The recommended method for deploying Klaus according to the developer is using uWSGI or Gunicorn. This article provides an example deployment using uWSGI. <syntaxhighlight l..."
 
Klinger (talk | contribs)
mNo edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[https://github.com/jonashaag/klaus Klaus] is a simple, easy-to-set-up Git web viewer.


The recommended method for deploying Klaus according to the developer is using uWSGI or Gunicorn. This article provides an example deployment using uWSGI.
The recommended method for deploying Klaus according to the developer is using uWSGI or Gunicorn. This article provides an example deployment using uWSGI.
Line 11: Line 12:
         http-socket = ":8080";
         http-socket = ":8080";
         module = "klaus.contrib.wsgi:application";
         module = "klaus.contrib.wsgi:application";
        chdir = pkgs.klaus;
         pythonPackages = self: with self; [
         pythonPackages = self: with self; [
             klaus
             klaus
Line 17: Line 17:
         ];
         ];
         env = [
         env = [
             "KLAUS_REPOS_ROOT=/repos"
             "KLAUS_REPOS=/repos/repo1 /repos/repo2"
             "PATH=${pkgs.git}/bin" # klaus makes a direct call to git
             "PATH=${pkgs.git}/bin" # klaus makes a direct call to git
         ];
         ];
Line 28: Line 28:
== Autoreloading ==
== Autoreloading ==


By default, Klaus will scan for the list of repositories only the first time a page is loaded, and never again (until it is restarted). In order to have it keep track of added and deleted repositories, Klaus needs to be configured to autoreload.
By default, Klaus will only be able to to track the repos specified in the <code>KLAUS_REPOS</code> environment variable. In order to have it keep track of a set of unknown repos, Klaus needs to be configured to autoreload.


<syntaxhighlight lang="nix>
<syntaxhighlight lang="nix>
Line 35: Line 35:
     enable-threads = true;
     enable-threads = true;
     lazy-apps = true;
     lazy-apps = true;
    env = [ "KLAUS_REPOS_ROOT=/repos" ];
};
};
</syntaxhighlight>
</syntaxhighlight>
[[Category:Web Applications]]

Latest revision as of 19:17, 20 June 2024

Klaus is a simple, easy-to-set-up Git web viewer.

The recommended method for deploying Klaus according to the developer is using uWSGI or Gunicorn. This article provides an example deployment using uWSGI.

services.uwsgi = {
    enable = true;
    plugins = [ "python3" ];
    instance = {
        type = "normal";
        master = true;
        http-socket = ":8080";
        module = "klaus.contrib.wsgi:application";
        pythonPackages = self: with self; [
            klaus
            markdown # adds markdown support, optional
        ];
        env = [
            "KLAUS_REPOS=/repos/repo1 /repos/repo2"
            "PATH=${pkgs.git}/bin" # klaus makes a direct call to git
        ];
    };
};

When loading a repository, you may encounter a 500, traced back to a git command call in the uWSGI logs. Try setting services.uwsgi.user and services.uwsgi.group to match the ownership of the repository.

Autoreloading

By default, Klaus will only be able to to track the repos specified in the KLAUS_REPOS environment variable. In order to have it keep track of a set of unknown repos, Klaus needs to be configured to autoreload.

services.uwsgi.instance = {
    module = "klaus.contrib.wsgi_autoreload:application";
    enable-threads = true;
    lazy-apps = true;
    env = [ "KLAUS_REPOS_ROOT=/repos" ];
};