Service installation - rejetto/hfs GitHub Wiki

Updates

Automatic updates are not available for services. This mean that you will have to stop the service, and manually update. In case you set up your service as npx -y hfs@latest, you'll just have 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

It's done, now HFS will automatically run at every start of your system, even before you log in.

You can start/stop the "hfs" service from the dedicated Windows tool, that you can launch by pressing 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

NB: 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** ⚠️