diff --git a/webservice/systemd/cal-job-monitor.service b/webservice/systemd/cal-job-monitor.service
new file mode 100644
index 0000000000000000000000000000000000000000..1edc8d756ba7aeb4bb633d6c715a2a969fbccab6
--- /dev/null
+++ b/webservice/systemd/cal-job-monitor.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=XFEL offline calibration Slurm job monitor
+PartOf=cal-services.target
+
+[Service]
+Type=exec
+WorkingDirectory=%h/deployments/development/git.xfel.eu/detectors/pycalibration/current/
+ExecStart=%h/deployments/development/git.xfel.eu/detectors/pycalibration/current/.venv/bin/python -m webservice.job_monitor --log-level DEBUG
+ExecStartPost=/usr/bin/sleep 1  # Pause to make errors in startup more obvious
+Restart=on-failure
+
+[Install]
+WantedBy=cal-services.target
diff --git a/webservice/systemd/cal-overview-server.service b/webservice/systemd/cal-overview-server.service
new file mode 100644
index 0000000000000000000000000000000000000000..717fafa6be8e9729eeb12a8f56b358882db2ca43
--- /dev/null
+++ b/webservice/systemd/cal-overview-server.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=XFEL offline calibration status web page
+PartOf=cal-services.target
+
+[Service]
+Type=exec
+WorkingDirectory=%h/deployments/development/git.xfel.eu/detectors/pycalibration/current/
+ExecStart=%h/deployments/development/git.xfel.eu/detectors/pycalibration/current/.venv/bin/python -m webservice.serve_overview
+ExecStartPost=/usr/bin/sleep 1  # Pause to make errors in startup more obvious
+Restart=on-failure
+
+[Install]
+WantedBy=cal-services.target
diff --git a/webservice/systemd/cal-services.target b/webservice/systemd/cal-services.target
new file mode 100644
index 0000000000000000000000000000000000000000..9344fe24993ff18c8470e26911e478a3116cbfeb
--- /dev/null
+++ b/webservice/systemd/cal-services.target
@@ -0,0 +1,5 @@
+[Unit]
+Description=XFEL offline calibration services
+
+[Install]
+WantedBy=default.target
diff --git a/webservice/systemd/cal-webservice.service b/webservice/systemd/cal-webservice.service
new file mode 100644
index 0000000000000000000000000000000000000000..705e4aac67b2cab7a59e0582d28a8be3f1201ec7
--- /dev/null
+++ b/webservice/systemd/cal-webservice.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=XFEL offline calibration ZMQ service
+PartOf=cal-services.target
+
+[Service]
+Type=exec
+WorkingDirectory=%h/deployments/development/git.xfel.eu/detectors/pycalibration/current/
+ExecStart=%h/deployments/development/git.xfel.eu/detectors/pycalibration/current/.venv/bin/python -m webservice.webservice --mode prod --log-level DEBUG
+ExecStartPost=/usr/bin/sleep 1  # Pause to make errors in startup more obvious
+Restart=on-failure
+
+[Install]
+WantedBy=cal-services.target