apt-get install wget
# For readlink
apt-get install coreutils
#!/bin/bash
set -e
# Download nats server
url=https://github.com/nats-io/nats-server/releases/download/v2.11.4/nats-server-v2.11.4-linux-amd64.tar.gz
wget ${url}
nats_server_dir="./nats-server";
rm -rf "${nats_server_dir}" || true
mkdir -p "${nats_server_dir}";
tar -vxzf $(\ls nats-server*linux-amd64.tar.gz | sort -r | head -n1) --strip 1 -C "${nats_server_dir}";
# Get nats-server paths
nasts_server_bin=$(readlink -ev "./nats-server/nats-server")
nasts_server_conf_file="nats-server.prod.conf"
touch "${nasts_server_conf_file}"
nasts_server_conf_file=$(readlink -ev "${nasts_server_conf_file}")
# Get sample service file
sample_service_file="sample-nats-server.service"
url=https://raw.githubusercontent.com/nats-io/nats-server/refs/heads/main/util/nats-server.service
wget ${url} -O "${sample_service_file}"
# Write new service file with new executable path
nats_service_file="nats-server.service"
exec_cmd="ExecStart=\"${nasts_server_bin}\" -c \"${nasts_server_conf_file}\""
sed "s|^ExecStart=.*$|${exec_cmd}|" "${sample_service_file}" > "${nats_service_file}"
# Create nats user and group
groupadd nats || true
useradd -r -s /usr/sbin/nologin -d /opt/nats -m -g nats nats || true
# Register service
\cp "${nats_service_file}" /etc/systemd/system/
systemctl enable "${nats_service_file}"
systemctl start "${nats_service_file}"
systemctl status "${nats_service_file}" --no-pager
useradd -r -s /usr/sbin/nologin -d /opt/nats -m -g nats nats
:
systemd[1]: Started nats-server.service - NATS Server.
systemd[1]: nats-server.service: Main process exited, code=exited, status=217/USER
systemd[1]: nats-server.service: Failed with result 'exit-code'.
systemd[1]: nats-server.service: Scheduled restart job, restart counter is at 5.
systemd[1]: Stopped nats-server.service - NATS Server.
systemd[1]: nats-server.service: Start request repeated too quickly.
systemd[1]: nats-server.service: Failed with result 'exit-code'.
systemd[1]: Failed to start nats-server.service - NATS Server.
systemctl stop nats-server.service
systemctl start nats-server.service
systemctl restart nats-server.service
systemctl status nats-server.service --no-pager
# Display logs of service
journalctl -u nats-server.service