Author Archives: Jeff

macOS Server VPN Migration

I went to update my iMac to macOS Mojave, and I was reminded that a number of macOS Server services are no longer supported:

[…] in the fall of 2018, new installations and upgrades of macOS Server will require you to migrate most services to other software.

Apple has provided documentation for migrating from macOS Server to open source solutions, and the instructions for moving to vpnd are fairly straightforward:

  1. Turn off VPN in macOS Server (leaving your settings intact).

  2. Create the launchd file /Library/LaunchDaemons/vpn.ppp.l2tp.plist1:

    <?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>Disabled</key>
            <true/>
            <key>EnableTransactions</key>
            <true/>
            <key>Label</key>
            <string>vpn.ppp.l2tp</string>
            <key>KeepAlive</key>
            <true/>
            <key>Program</key>
            <string>/usr/sbin/vpnd</string>
            <key>ProgramArguments</key>
            <array>
            <string>vpnd</string>
            <string>-x</string>
            <string>-i</string>
            <string>com.apple.ppp.l2tp</string>
            </array>
            <key>EnableTransactions</key>
            <false/>
            <key>EnablePressuredExit</key>
            <false/>
        </dict>
    </plist>
    
  3. Set the file ownership to root:wheel2:

    sudo chown root:wheel /Library/LaunchDaemons/ vpn.ppp.l2tp.plist
    
  4. Load the launchd job:

    sudo launchctl load -w /Library/LaunchDaemons/ vpn.ppp.l2tp.plist
    
  5. Verify that the job is running:

    launchctl print system/vpn.ppp.l2tp
    

Once I had completed these steps, macOS Server showed the VPN as running, and my attempts to disable it via the switch would result in it turning right back on. Fortunately, this is the only service I’ve been relying on macOS Server for, since caching was moved into the OS, so my migration was this easy. Replacing some of the other macOS Server services appears to be quite a bit more complicated.


  1. It appears that version 1.2 of the migration instructions have some formatting issues; some of the quotes in the code example have been rendered as smart quotes. 

  2. The migration instructions also mistakenly try to use chmod to change the ownership. 

Hotel Vernon

I just stumbled on this series of videos Narragansett Beer compiled: an oral history of the Hotel Vernon, the Yacht Club, and the speakeasy in the cellar.

I’m thrilled to see that XLD, the venerable audio transcoding app, is alive and well on Mojave. It was just updated to be a 64-bit application, and it supports dark mode!

Skipping the iPhone XS

I’ve had an unopened iPhone XS on my desk since last Monday. I ordered it through the iPhone Upgrade Program, and I’m trying to decide if I’m going to keep it.

After owning the original iPhone for three years, and an iPhone 4 and iPhone5 for two years each, I switched to buying a new phone every year. I calculated that the depreciation on the iPhones 6, 6S and 7 was about $300 in the first year, and $200 in the second year1, so it was costing me an extra $100 (plus tax) in the odd years to buy a new phone instead of holding on. That worked out to less than an extra $50/year (plus tax) to own the newest phone every year, compared to holding on to a phone for two years.

$50 each year seemed like a great deal for the latest technology, but that value proposition has changed. The costs I’ll incur if I upgrade this year include:

  • Sales Tax: $84.25
  • AT&T Upgrade Fee (plus tax): $31.88
  • The last payment on my iPhone X (since it’s only been out 11 months): $49.91
  • The residual value of a two-year old iPhone X, if I were to keep it another year and own it outright. This is tough to estimate, but resellers are offering $225 - $350 for a two-year iPhone 7+ right now; let’s go with the low-end to make the medicine easier to swallow: $225.00

The total cost of $391.04 is the amount I’ll save if I wait and buy next year’s iPhone, instead of buying the iPhone XS and upgrading again next year. Spreading that premium out over two years is roughly $200/year (including tax); that’s a massive increase over the prior situation.

Part of that increase is that the iPhone Upgrade Program includes AppleCare+, which I’ve never purchased before. Part is that the iPhone X and XS are more fundamentally more expensive than previous generations. Part is the cost associated with just handing the phone back to Apple, instead of dealing with the hassle of a private sale. But I’m not sure if the cost is justified, for me, this year.

The improvements aren’t as numerous, either:

Maybe the strongest indication that I should pass on the iPhone XS is that I haven’t caved in to the temptation to open it yet.

I think I’ll be skipping this one.


  1. Assuming a private resale. 

  2. While this has been true in the past, it wasn’t true with the iPhone X. And while I’d like the flexibility, I’m not sure I’d make use of it during the next year.