This document assumes Thruk is installed from official .deb packages from


Install the required packages:

    #> apt-get install nginx-full uwsgi-plugin-psgi

Put the example configuration file in /etc/nginx/sites-available/thruk and enable it with:

    #> ln -s /etc/nginx/sites-available/thruk /etc/nginx/sites-enabled/thruk

Replace SSL-Certs with real ones and use htpasswd to create /etc/nginx/users.

Example configuration:

server {

    # SSL configuration
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/nginx/ssl/;
    ssl_certificate_key /etc/nginx/ssl/;

    root /usr/share/thruk/root;

    location /thruk/documentation.html {
         alias /usr/share/thruk/root/thruk/documentation.html;
    location ~ ^/thruk/plugins/(.*?)/(.*)$ {
         alias /etc/thruk/plugins/plugins-enabled/$1/root/$2;
    location /thruk/themes/ {
         alias /etc/thruk/themes/themes-enabled/;

    index index.cgi index.html;

    location @thruk {
        uwsgi_param      REMOTE_USER $remote_user;
        uwsgi_modifier1  5;
        include uwsgi_params;

    location / {
        auth_basic              "Thruk server authentication";
        auth_basic_user_file    /etc/nginx/users;

        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri @thruk;
    location /thruk/cgi-bin/remote.cgi {
        try_files $uri @thruk;
    location /thruk/r/ {
        try_files $uri @thruk;


Put the ini file in /etc/uwsgi/apps-available/thruk.ini and enable it with:

    #> ln -s /etc/uwsgi/apps-available/thruk.ini /etc/uwsgi/apps-enabled/thruk.ini
plugin = perl #or psgi (@Debian 10)
socket =
master = True
processes = 1
threads = 2
env = THRUK_CONFIG=/etc/thruk/
env = PERL5LIB=$PERL5LIB:/usr/share/thruk/lib/:/usr/lib/thruk/perl5
psgi = /usr/share/thruk/script/thruk.psgi


    #> /etc/init.d/nginx start
Edit page on GitHub