working ulogger!

This commit is contained in:
Anish Lakhwara
2023-04-23 21:02:59 +10:00
parent 042c8dcec9
commit a68dd78843
9 changed files with 90 additions and 140 deletions
+1
View File
@@ -8,4 +8,5 @@
hesienbridge = import ./heisenbridge.nix;
wireguard = import ./wireguard.nix;
backup = import ./backup.nix;
ulogger-server = import ./ulogger.nix;
}
+57 -62
View File
@@ -9,14 +9,7 @@ let
configFile = pkgs.writeTextFile {
name = "ulogger-config";
text = cfg.conf;
destination = "config.php";
};
appDir = pkgs.buildEnv {
name = "ulogger-app-dir";
ignoreCollisions = true;
checkCollisionContents = false;
paths = [ configFile "${cfg.package}/app" ];
destination = "/config.php";
};
in
@@ -207,76 +200,78 @@ in
services.nginx.virtualHosts."${cfg.hostName}" = {
enableACME = false;
forceSSL = false;
root = "${cfg.package}";
root = "${cfg.dataDir}";
extraConfig = ''
index index.php;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
'';
locations."/" = {
extraConfig = ''
'';
};
locations."~ ^/app\\.php(/|$)" = {
locations."~ .php$" = {
extraConfig = ''
fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket};
include ${pkgs.nginx}/conf/fastcgi_params;
include ${pkgs.nginx}/conf/fastcgi.conf;
fastcgi_index ${conf.pkg}/index.php;
'';
};
systemd.services.ulogger-install = {
description = "ulogger install service";
wantedBy = [ "multi-user.target" ];
before = [ "phpfpm-ulogger.service" ];
after = [ "mysql.service" "postgresql.service" ];
path = with pkgs; [ coreutils php phpPackages.composer ];
serviceConfig = {
User = cfg.user;
Type = "oneshot";
RemainAfterExit = "yes";
PermissionsStartOnly = true;
};
preStart = ''
mkdir -p "${cfg.dataDir}"
mkdir -p "${cfg.dataDir}/uploads"
chown ${cfg.user}:nginx "${cfg.dataDir}"
'';
environment = {
ULOGGER_ADMIN_USER = "admin";
ULOGGER_ADMIN_PASSWORD = "admin";
};
script = ''
echo "Setting up wallabag files in ${cfg.dataDir} ..."
cd "${cfg.dataDir}"
rm -rf var/cache/*
rm -f app
ln -sf ${appDir} app
ln -sf ${cfg.package}/composer.{json,lock} .
if [ ! -f installed ]; then
echo "Install file not found, installing ..."
# TODO, taken from https://github.com/bfabiszewski/ulogger-server/blob/master/.docker/init.sh
su postgres -c "psql -U ulogger < ${appDir}/scripts/ulogger.pgsql"
su postgres -c "psql -d ulogger -c \"INSERT INTO users (login, password, admin) VALUES ('$ULOGGER_ADMIN_USER', '$ULOGGER_ADMIN_PASSWORD', TRUE)\""
touch installed
fi
fastcgi_param DOCUMENT_ROOT ${cfg.dataDir};
fastcgi_param SCRIPT_FILENAME ${cfg.dataDir}/$fastcgi_script_name;
fastcgi_index index.php;
'';
};
};
meta = with stdenv.lib; {
maintainers = with maintainers; [ nadrieril ];
users.users = {
${cfg.user} = {
group = "nginx";
description = "ulogger server user";
isSystemUser = true;
};
};
systemd.services.ulogger-install = {
description = "ulogger install service";
wantedBy = [ "multi-user.target" ];
before = [ "phpfpm-ulogger.service" ];
after = [ "mysql.service" "postgresql.service" ];
path = with pkgs; [ coreutils php phpPackages.composer postgresql ];
serviceConfig = {
User = cfg.user;
Type = "oneshot";
RemainAfterExit = "yes";
PermissionsStartOnly = true;
};
preStart = ''
mkdir -p "${cfg.dataDir}"
mkdir -p "${cfg.dataDir}/uploads"
chown -R ${cfg.user}:nginx "${cfg.dataDir}"
'';
environment = {
ULOGGER_ADMIN_USER = "admin";
ULOGGER_ADMIN_PASSWORD = "\$2y\$10\$7OvZrKgonVZM9lkzrTbiou.CVhO3HjPk5y0W9L68fVwPs/osBRIMq"; # hashed "admin"
};
script = ''
echo "Setting up ulogger-server files in ${cfg.dataDir} ..."
cd "${cfg.dataDir}"
cp -R ${cfg.package}/* ./
cp ${configFile}/config.php ./
if [ ! -f installed ]; then
echo "Install file not found, installing ..."
psql -U ulogger < ${cfg.package}/scripts/ulogger.pgsql
psql -d ulogger -c "INSERT INTO users (login, password, admin) VALUES ('$ULOGGER_ADMIN_USER', '$ULOGGER_ADMIN_PASSWORD', TRUE)"
touch installed
fi
'';
};
};
meta = with stdenv.lib; {
maintainers = with maintainers; [ nadrieril ];
};
}