From fcf00a6c71d90fb3b9e14ce2b63d0fba18c02b28 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 29 Sep 2025 08:35:35 +0200 Subject: [PATCH] services.meilisearch: restrict write paths and add hardening option RemoveIPC --- nixos/modules/services/search/meilisearch.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/search/meilisearch.nix b/nixos/modules/services/search/meilisearch.nix index 8a32cf302fa1..fb5370a297b2 100644 --- a/nixos/modules/services/search/meilisearch.nix +++ b/nixos/modules/services/search/meilisearch.nix @@ -223,6 +223,9 @@ in ); serviceConfig = { + Type = "simple"; + DynamicUser = true; + Restart = "always"; LoadCredential = lib.mkMerge ( [ (lib.mkIf (cfg.masterKeyFile != null) [ "master_key:${cfg.masterKeyFile}" ]) @@ -232,11 +235,15 @@ in ) secrets-with-path ); ExecStart = "${lib.getExe cfg.package} --config-file-path \${RUNTIME_DIRECTORY}/config.toml"; - DynamicUser = true; StateDirectory = "meilisearch"; WorkingDirectory = "%S/meilisearch"; RuntimeDirectory = "meilisearch"; RuntimeDirectoryMode = "0700"; + ReadWritePaths = [ + cfg.settings.db_path + cfg.settings.dump_dir + cfg.settings.snapshot_dir + ]; ProtectSystem = "strict"; ProtectHome = true; @@ -255,6 +262,7 @@ in RestrictSUIDSGID = true; LockPersonality = true; MemoryDenyWriteExecute = true; + RemoveIPC = true; # Meilisearch needs to determine cgroup memory limits to set its own memory limits. # This means this can't be set to "pid"