Please, please FreeBSD gurus, I need your help! 🙏

I followed the instructions from here.

Keep in mind that his “steps” are not entirely accurate, as he mixes plain English “in” with explicit commands of “cd”.

Just notice when to “correct” some steps. Otherwise, you’ll find that some steps will say “file/folder not found”.

Essentially, at the very end you’ll have a directory named freebsd-x64 under the “dist” folder. This contains the executables, libraries, and web files. It can be renamed to slskd and copied to /opt or wherever you prefer. (I like to use /opt for applications built/installed that do no exist as official ports or packages.)

You’ll obviously need git and npm, so his first command might as well be:

  • pkg install git npm dotnet sqlite3
Contents of my /opt/slskd after everything is finished

config
etc
libe_sqlite3.so → /usr/local/lib/libsqlite3.so
LICENSE
slskd
wwwroot

There’s a YAML config file that doesn’t exist, but it can be copied from config/slskd.example.yml and copied into the user’s local directory at $HOME/.local/share/slskd/slskd.yml

You absolutely need to uncomment and edit the following lines to create a user account to connect to the Soulseek Network. As long as the username is not in use, it’ll automatically login as “this” account. So for testing purposes, you can make it very random. I’ll provide an example that you can change accordingly.

You must uncomment those three lines, and only edit username and password. The “spacing” must be kept intact, so only remove the # symbol with a single DEL or BACKSPACE stroke.

 soulseek:
#   address: vps.slsknet.org
#   port: 2271
   username: RandomHuman1234
   password: 1234WXYZ

It’s up to you if you want to change some defaults in the slskd.yml config file. (The default username/password for the web GUI is slskd/slskd, and the default HTTP port is 5030.)

The moment you login, you’ll see if it’s connected to the Soulseek Network. (The logs will also provide additional information, which are accessible in the web GUI → System → Logs)

I’d recommend, of course, running the executable manually to confirm it connects before trying the rc.d method.


When all is said and done, even if this can work as an rc.d service with full internet access running as root, I still will not run it as root, and would rather keep it as a non-root user. (I used pw to create the user soulseek before I built this application.)