Setting Up a Solid Server on a Mac Mini Server


Before I jump in head-first and hose everything on my little Mac box, has anyone installed a Solid Server on a Mac box running OS X?

Thanks in advance for any caveats or suggestions!


You can do this fairly ‘easily’ either by installing Docker and doing a Docker install of node-solid-server or by installing npm with brew and doing it that way.

It’ll be fiddly but you’ll get there in the end. Probably. I installed first on a Debian Linode, then on a Debian/Virtualmin instance on a Raspberry Pi.

Having installed a few instances I must say you are better off using an account. Although it is fun!

Best wishes



Thank you for that response, it was very helpful!

Full disclosure – I don’t know what I’m doing. I used to have Apple’s Server application running and fully configured for a website “” for development, but I no longer have a static IP address.

I was able to get the built-in Apache server running, but I couldn’t install the certs. Likely a problem with not have a static IP.

Your advice to use in account is probably the best advice for me.

Thanks again!


I found makes developing on a Mac a lot less painful. The Pro upgrade was worth it for me, although the non-Pro version irons out a lot of problems.


I’ve been running node-solid-server on a mac mini since NSS was a thing. Very easy running the server from NPM install. The most difficult thing I remember was getting OSX to stop running Apache. I actually run it from a git clone and then run npm install.

I don’t use a process manager, I do use a little loop script to wait a few seconds and restart it is it crashes.

(I use Hg to sync the server with my laptop, and also run NSS on my laptop as localhost:3080 so i can get at stuff when offline)


Question first, followed by niceties and background: What is the simplest way to implement DNS service for use with solid server? This will be for my little 4-computer land LAN. (I don’t have a static IP address for a WAN.)

Now for the niceties and background:

Thank you timbl for that response. I had been running, the latest of which has been deprecated by Apple. I have thoroughly removed it from my Mac Mini Server (2012 edition now with two 1 TB solid state drives).

I then tried installing a CA certificate via certbot, it became apparent that I need DNS service. This after running '“sudo certbot certonly --standalone -d -d”:


  • The following errors were reported by the server:

    Type: None
    Detail: DNS problem: NXDOMAIN looking up A for

    Type: None
    Detail: DNS problem: NXDOMAIN looking up A for

  • Your account credentials have been saved in your Certbot
    configuration directory at /etc/letsencrypt. You should make a
    secure backup of this folder now. This configuration directory will
    also contain certificates and private keys obtained by Certbot so
    making regular backups of this folder is ideal.

Charging ahead with ‘solid init’ then ‘solid start’ resulted in:

~ $ solid start
TIP create a config.json: $ solid init
Solid server () running on https://localhost:3456/
Press +c to stop
(node:4692) UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The “path” argument must be of type string. Received type undefined
at assertPath (path.js:39:11)
at Object.resolve (path.js:1088:7)
at Object.ensureWelcomePage (/usr/local/lib/node_modules/solid-server/lib/server-config.js:44:24)
at initWebId (/usr/local/lib/node_modules/solid-server/lib/create-app.js:181:10)
at createApp (/usr/local/lib/node_modules/solid-server/lib/create-app.js:95:5)
at Function.createServer (/usr/local/lib/node_modules/solid-server/lib/create-server.js:15:18)
at bin (/usr/local/lib/node_modules/solid-server/bin/lib/start.js:134:17)
at ReadFileContext.fs.readFile [as callback] (/usr/local/lib/node_modules/solid-server/bin/lib/start.js:53:7)
at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:235:13)
(node:4692) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:4692) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Now what?

Thanks in advance for any clues!