[Unit] Description=Cloudron Admin OnFailure=crashnotifier@%n.service StopWhenUnneeded=true ; journald crashes result in a EPIPE in node. Cannot ignore it as it results in loss of logs. BindsTo=systemd-journald.service After=mysql.service nginx.service ; As cloudron-resize-fs is a one-shot, the Wants= automatically ensures that the service *finishes* Wants=cloudron-resize-fs.service [Service] Type=idle WorkingDirectory=/home/yellowtent/box Restart=always ; Systemd does not append logs when logging to files, we spawn a shell first and exec to replace it after setting up the pipes ExecStart=/bin/sh -c 'echo "Logging to /home/yellowtent/platformdata/logs/box.log"; exec /usr/bin/node --max_old_space_size=150 /home/yellowtent/box/box.js >> /home/yellowtent/platformdata/logs/box.log 2>&1' Environment="HOME=/home/yellowtent" "USER=yellowtent" "DEBUG=box*,connect-lastmile" "BOX_ENV=cloudron" "NODE_ENV=production" ; kill apptask processes as well KillMode=control-group ; Do not kill this process on OOM. Children inherit this score. Do not set it to -1000 so that MemoryMax can keep working OOMScoreAdjust=-999 User=yellowtent Group=yellowtent ; OOM killer is invoked in this unit beyond this. The start script replaces this with MemoryLimit for Ubuntu 16 MemoryMax=400M TimeoutStopSec=5s StartLimitInterval=1 StartLimitBurst=60