Starting Openfire on boot with systemd

Recently I rebuilt my Openfire server from scratch on a new box, and I’m trying to get it to start on boot.

My old server was running Ubuntu 14.04 and I eventually figured out how to automate the start on boot using upstart. The new server is running Ubuntu 16.04 which uses systemd rather than upstart and I’m having troubles getting the start on boot to work. Sorry I’m a bit of a hack/n00b with all things *nix; I generally get there in the end but this one is confounding me and I sure would appreciate a nudge in the right direction.

Normally from the command line I start Openfire with:

sudo -u openfire /opt/openfire/bin/openfire start

I’ve tried a few variants but I’ll detail one here that seemed like it should work:

Step 1: created new systemd unit file:

sudo nano /lib/systemd/system/openfire.service

Step 2: put the following in the file:

[Unit]
Description=OpenFire Start on Boot

[Service]
User=openfire
ExecStart=/bin/sh -c "/opt/openfire/bin/openfire start"

[Install]
WantedBy=multi-user.target

Step 3: saved file and enabled service using:

sudo systemctl enable openfire.service

Step 4: rebooted and checked status:

sudo -u openfire /opt/openfire/bin/openfire status

Result: “openfire is stopped.”

I’m quite certain the issue is with the ExecStart directive. Can some generous soul help?

I figured it out. Just had to add Type=forking into the [Service] section. So the following unit file does the job:

[Unit]
Description=OpenFire Start on Boot

[Service]
Type=forking
User=openfire
ExecStart=/bin/sh -c "/opt/openfire/bin/openfire start"

[Install]
WantedBy=multi-user.target