diff --git a/nixos/server/track.nix b/nixos/server/track.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f8ff4c38039e0a3a98cc03979f9279d1bd637ba5
--- /dev/null
+++ b/nixos/server/track.nix
@@ -0,0 +1,46 @@
+{ ... }:
+
+{
+  traccar = {
+    enable = true;
+    settings = {
+      # see https://www.traccar.org/postgresql
+      databaseDriver = "org.postgresql.Driver";
+      databaseUrl = "jdbc:postgresql:///run/postgresql/traccar";
+      databaseUser = "traccar";
+      #databasePassword = "";
+
+      loggerConsole = "true";
+      mediaPath = "/var/lib/traccar/media";
+      templatesPath = "/var/lib/traccar/templates";
+      webPort = 61038;
+    };
+    environmentFile = {
+
+    };
+  };
+
+  services.postgresql = {
+    ensureUsers = [{
+      name = "traccar";
+      ensureDBOwnership = true;
+    }];
+    ensureDatabases = [ "traccar" ];
+  };
+
+  environment.persistence."/persist".directories = [ "/var/lib/traccar" ];
+
+  services.traefik.dynamicConfigOptions.http = {
+    routers.track = {
+      rule = "Host(`track.eisfunke.com`)";
+      entrypoints = [ "websecure" ];
+      tls.certResolver = "tls";
+      service = "track";
+    };
+    services.track = {
+      loadBalancer.servers = [
+        { url = "http://localhost:61038"; }
+      ];
+    };
+  };
+}