Service installation - rejetto/hfs GitHub Wiki

Updates

Automatic updates are not available for services. This means that you will have to stop the service and update it manually. If you set up your service as npx -y hfs@latest, you only need to restart the service.

HFS binary on Windows

  1. download HFS and put it in a folder, for example C:\hfs

  2. install nssm

  3. at command line launch nssm install hfs

    image
  4. set the "path" field to point at hfs.exe, for example C:\hfs\hfs.exe

Once configured, HFS will start automatically at every system boot, even before you log in.

You can start or stop the "hfs" service from the Services tool, which you can launch by pressing the Windows key and typing services.

Alternative on Windows: Task scheduler

You can start "Task scheduler" on Windows, and "create a basic task" for HFS. If you do, be sure to fill the "Start in" field, with the same folder of hfs.exe.

HFS binary on Linux using a non‐privileged user

The process is quite straight-forward and it works on Ubuntu 24.04 LTS:

  1. Create a new non-privileged user for hfs and create a directory to use as hfs' cwd:
sudo adduser --system hfs
sudo mkdir /var/lib/hfs
  1. Move HFS deliverable files in system directories:
sudo mv hfs /usr/local/bin/
sudo mv plugins/ /var/lib/hfs/plugins
  1. Change the owner of /var/lib/hfs:
sudo chown hfs:nogroup /var/lib/hfs 
  1. Set capability to hfs executable to open low-numbered ports:
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/hfs
  1. Create systemd service unit as follows:
[Unit]
Description=HFS
After=network.target

[Service]
Type=simple
User=hfs
Restart=always
ExecStart=/usr/local/bin/hfs --cwd /var/lib/hfs

[Install]
WantedBy=multi-user.target
  1. run sudo systemctl daemon-reload && sudo systemctl enable hfs && sudo systemctl start hfs && sudo systemctl status hfs

HFS binary on MacOS

  1. create a file /Library/LaunchDaemons/com.rejetto.hfs.plist with this content
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.rejetto.hfs</string>
    <key>WorkingDirectory</key>
    <string>/Users/YOUR_USER/.hfs</string>
    <key>Program</key>
    <string>/PATH_TO_HFS/hfs</string>
    <key>UserName</key>
    <string>YOUR_USER</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>Disabled</key>
    <false/>
</dict>
</plist>

here, you should replace YOUR_USER and PATH_TO_HFS.

  1. sudo launchctl enable system/com.rejetto.hfs.plist
  2. sudo launchctl load /Library/LaunchDaemons/com.rejetto.hfs.plist

On Linux with Node.js

  1. install node.js
  2. create a file /etc/systemd/system/hfs.service with this content
[Unit]
Description=HFS
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/npx -y hfs@latest

[Install]
WantedBy=multi-user.target
  1. run sudo systemctl daemon-reload && sudo systemctl enable hfs && sudo systemctl start hfs && sudo systemctl status hfs

Note: the update will be attempted at each restart

On Windows with Node.js

  1. install node.js
  2. run npm -g i hfs
  3. run npx qckwinsvc2 install name="HFS" description="HFS" path="%APPDATA%\npm\node_modules\hfs\src\index.js" args="--cwd %HOMEPATH%\.hfs" now

To update

  • run npx qckwinsvc2 uninstall name="HFS"
  • run npm -g update hfs
  • run npx qckwinsvc2 install name="HFS" description="HFS" path="%APPDATA%\npm\node_modules\hfs\src\index.js" args="--cwd %HOMEPATH%\.hfs" now
⚠️ **GitHub.com Fallback** ⚠️