aboutsummaryrefslogtreecommitdiff
path: root/conf/systemd.service
diff options
context:
space:
mode:
authorÉric Gaspar <46165813+ericgaspar@users.noreply.github.com>2024-06-07 14:26:42 +0200
committerÉric Gaspar <46165813+ericgaspar@users.noreply.github.com>2024-06-07 14:26:42 +0200
commit933849a6ff96cc7327558e4cabc1a00c957467bb (patch)
treeccc662f418e54df736f4e00f7e6417db22790c03 /conf/systemd.service
First commit
Diffstat (limited to 'conf/systemd.service')
-rw-r--r--conf/systemd.service49
1 files changed, 49 insertions, 0 deletions
diff --git a/conf/systemd.service b/conf/systemd.service
new file mode 100644
index 0000000..3ac834c
--- /dev/null
+++ b/conf/systemd.service
@@ -0,0 +1,49 @@
+[Unit]
+Description=Cal.com:
+After=network.target
+
+[Service]
+Type=simple
+User=__APP__
+Group=__APP__
+Environment="__YNH_NODE_LOAD_PATH__"
+Environment="NODE_ENV=production"
+WorkingDirectory=__INSTALL_DIR__/
+ExecStart=__YNH_NPM__ start
+
+### Depending on specificities of your service/app, you may need to tweak these
+### .. but this should be a good baseline
+# Sandboxing options to harden security
+# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
+NoNewPrivileges=yes
+PrivateTmp=yes
+PrivateDevices=yes
+RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
+RestrictNamespaces=yes
+RestrictRealtime=yes
+DevicePolicy=closed
+ProtectClock=yes
+ProtectHostname=yes
+ProtectProc=invisible
+ProtectSystem=full
+ProtectControlGroups=yes
+ProtectKernelModules=yes
+ProtectKernelTunables=yes
+LockPersonality=yes
+SystemCallArchitectures=native
+SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap @cpu-emulation @privileged
+
+# Denying access to capabilities that should not be relevant for webapps
+# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html
+CapabilityBoundingSet=~CAP_RAWIO CAP_MKNOD
+CapabilityBoundingSet=~CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE
+CapabilityBoundingSet=~CAP_SYS_BOOT CAP_SYS_TIME CAP_SYS_MODULE CAP_SYS_PACCT
+CapabilityBoundingSet=~CAP_LEASE CAP_LINUX_IMMUTABLE CAP_IPC_LOCK
+CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_WAKE_ALARM
+CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG
+CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE
+CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW
+CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG
+
+[Install]
+WantedBy=multi-user.target