Pawel Decowski

Designer, developer, photographer, videographer. Founder of Relish.

Read this first

Vagrant (VirtualBox) can’t connect to host-only network

If you’re unable to connect to your VM after upgrading VirtualBox, it’s most likely because of a documented, but well-hidden, change in networking in VirtualBox 6.1.28:

On Linux, Mac OS X and Solaris Oracle VM VirtualBox will only allow IP addresses in 192.68.56.0/21 range to be assigned to host-only adapters

— https://www.virtualbox.org/manual/ch06.htmlnetwork_hostonly

It doesn’t help that VirtualBox will happily create a network interface with an IP outside of this range without raising as much as a warning — but it simply won’t work.

The solution

The solution is to configure VirtualBox to allow other IP ranges. On your host machine create /etc/vbox/networks.conf file with the subnet mask(s) that you’d like to allow. For example:

* 192.168.0.0/16
* 10.0.0.0/8

The above configuration will allow IPs in the ranges:

  • 192.168.*
  • 10.*

Continue reading →


Supervisor can’t see config files

If you’re reading this, chances are you can’t start a Supervisor job:

$ supervisorctl start myjob
myjob: ERROR (no such process)

Supervisor just doesn’t seem to see your config file(s).

Make Supervisor re-read the config files

There are two reasons why you may need to force Supervisor to re-read the config files.

You’ve added a new config file

Supervisor reads config files once — during startup. When you add a new file, you have to tell it to re-read the config, before attempting to start the job.

You’re using Vagrant and the config file is a symlink to a file in a shared folder

It seems that Supervisor starts before the shared folder is available, so it cannot see the config files. I have yet to confirm this theory, but every time I restart a Vagrant box, I have to tell Supervisor to re-read config files.

How to make Supervisor re-read config files?

supervisorctl reread
...

Continue reading →


Homebrew services

I just learned today that Homebrew has a built-in process manager. No more launchctl nightmare.

How to

The basic usage looks like this:

brew services <command> <formula>

Where command is one of:

  • restart — Gracefully restart selected service
  • start — Start selected service
  • stop — Stop selected service

Example

So to restart nginx, you’d run:

sudo brew services restart nginx

There’s more

You can also list services managed by Homebrew:

brew services list

or get rid of stale services and plists:

brew services cleanup

Enjoy!

View →