/systemd-express-boilerplate

Boilerplate repo for services based on NodeJS Express Framework and Systemd

Primary LanguageTypeScript

systemd-express-boilerplate

Boilerplate repo for services based on NodeJS Express Framework and Systemd

Installation

npm ci
npm run ssl-gen
npm start

Using:

const OrderData = D.struct({
    username: D.string,
    amount: D.number,
});
  • Add your route and define controller in src/server/routes

Deploy:

Create your upload script and systemd config by gen.js script

./gen.js awesome-app example.com johnjacobs johnjacobs_id_rsa 22

Where:

awesome-app - is your app and systemd service name

host - address of your remote host

username - linux user

idRsaKeyName - key filename in ~/.ssh/ folder

sshPort - ssh port of remote host

On remote host:

mkdir /opt/service-name
chown -R johnjacobs:johnjacobs /opt/service-name

Next, build and upload the service

./upload.sh

On remote host

cd /opt/service-name
npm ci
ln -sf /opt/service-name/etc/systemd/system/service-name.service /etc/systemd/system

Start service:

systemctl start service-name