Files
drawit/docs/SYSTEMD.md
T
2026-06-20 05:13:55 -05:00

54 lines
1.7 KiB
Markdown

# SystemD
There are many ways to create a systemd compatible service file. This guide is tailored to be "production ready".
## Guide
1. Create a new user named drawit: `sudo useradd --system --create-home --shell /usr/sbin/nologin drawit`
2. Create env directory: `sudo mkdir -p /etc/drawit`
3. Copy `.env.example` here: `sudo cp .env.example /etc/drawit/drawit.env`
4. Change directory to /opt: `cd /opt`
5. Follow instructions to [clone the repo](BUILDING.md#guide). Skip steps 4, 5, and 8.
6. Change permissions to drawit: `sudo chown -R drawit:drawit /opt/drawit /etc/drawit`
7. Create a new service file: `sudo nano /etc/systemd/system/drawit.service`
8. Paste in these contents:
```
[Unit]
Description=DrawIt
After=syslog.target network.target remote-fs.target nss-lookup.target network-online.target
Wants=network-online.target
Requires=nginx.service
[Service]
Type=simple
User=drawit
Group=drawit
WorkingDirectory=/opt/drawit
Environment=NODE_ENV=production
Environment=PORT=3000
EnvironmentFile=/etc/drawit/drawit.env
ExecStart=/usr/bin/npm run start
RestartSec=5
KillSignal=SIGINT
TimeoutStopSec=30
SyslogIdentifier=drawit
TimeoutSec=30
StandardOutput=journal
StandardError=journal
Restart=always
[Install]
WantedBy=multi-user.target
```
9. If you want to use a different port, make sure to change it e.g. `Environment=PORT=10000`
10. OPTIONALLY reload system daemon: `sudo systemctl daemon-reload`
11. Enable and start the service: `sudo systemctl enable --now drawit.service`
12. Check the service for errors: `sudo systemctl status drawit.service`
You should now be running your very own DrawIt instance!
## Additional reading
After you know *it works!*, you should set up a [reverse proxy](REVERSE_PROXIES.md).