My Ultimate Remote Workstation: How I Paired a MacBook with a Powerful Dual-Boot Server

MacBooks are fantastic for travel and everyday tasks with their incredible battery life, but they often fall short when it comes to specialized engineering software, high-end gaming, or heavy-duty deep learning tasks that thrive on Windows or Linux with a beefy GPU.

What if you didn’t have to choose?

In this article, I’ll walk you through the high-level design of my remote workstation setup, which gives me the best of both worlds. I use my MacBook Pro as a lightweight client to access a powerful, dual-boot (Ubuntu & Windows 11) PC located in a different country. This setup allows me to use the full power of a desktop from anywhere, without sacrificing portability.

The Big Picture: System Architecture

At its core, the system is designed for maximum flexibility. A single, powerful remote server houses two operating systems on separate drives, and I can access either one on demand from my client devices (a MacBook and a smartphone).

Here’s a breakdown of the components:

  • The Client: A MacBook Pro, perfect for its portability and excellent user experience.
  • The Server: A custom-built PC in Spain with two separate disks for Ubuntu (for development, deep learning, and ROS) and Windows 11 (for CAD software like SolidWorks and gaming).
  • The Connection: A combination of tools to power on, switch between, and access the operating systems.

Let’s break down how each piece of this puzzle works.

Step 1: Waking the Server — Remote Power Control

The first challenge is turning the server on and off remotely. Leaving a high-performance PC running 24/7 is a waste of electricity. The solution is surprisingly simple:

  1. Smart Plug: The PC is plugged into a simple Wi-Fi-enabled smart plug. Using an app on my phone, I can toggle the power to the PC from anywhere in the world.
  2. BIOS Setting: In the PC’s BIOS, I’ve enabled the “AC Power On” (or “Restore on AC/Power Loss”) feature. This tells the computer to automatically boot up as soon as it receives power.

So, the workflow is:

  • Open the app on my phone.
  • Tap the “Power On” button.
  • The server detects the incoming power and starts booting.

With a simple tap, the remote server comes to life.

Step 2: Choosing Your OS — The Magic of Remote Dual-Booting

By default, my server’s boot priority is set to Ubuntu. This is my primary environment for coding and running server tasks. But what if I need to use SolidWorks, which only runs on Windows?

This is where a clever script comes in. From my MacBook, I SSH into the running Ubuntu server and execute a custom script I call reboot-to-windows.

This script uses the grub-reboot command to tell the GRUB bootloader to boot into Windows for the next restart only. After that single boot, the priority reverts to Ubuntu. This is a fantastic, non-permanent way to switch operating systems.

The process to get to Windows is:

  1. SSH into the Ubuntu server.
  2. Run the command: reboot-to-windows
  3. The server reboots and automatically loads into Windows 11.

Once I’m done with Windows, I can simply restart the machine, and it will boot back into my default Ubuntu environment.

Step 3: The Right Tool for the Job — Remote Access

With the server on and the correct OS running, I need a way to interact with it. I use two primary methods depending on the task.

For managing the server, running scripts, or coding, a command-line interface is all I need.

  • SSH (Secure Shell): I connect directly to the Ubuntu server using the terminal on my Mac. It’s fast, secure, and efficient.
  • Visual Studio Code (Remote – SSH Extension): This is a game-changer for development. VS Code runs locally on my Mac, but the SSH extension allows it to connect to the remote server. I can edit files, use the integrated terminal, and run code as if it were all on my local machine, all while leveraging the server’s power.

Running an Nvidia RTX 3090, perfect for deep learning models.

When I boot into Windows, I need a full graphical desktop. While Windows Remote Desktop (RDP) is an option, it’s not ideal for graphically intensive applications. For this, I use Parsec.

Parsec is a low-latency remote desktop tool designed for gaming. This makes it perfect for running CAD software like SolidWorks, video editing applications, or even playing games. The connection is incredibly smooth and responsive.

Once the server has rebooted into Windows, it appears as an available computer in my Parsec client. I just click “Connect” and I’m greeted with the Windows desktop, ready to go.

Accessing heavy-duty Windows software from a Mac has never been easier.

The Physical Setup: A Server in a Box

To keep the server safe, quiet, and cool, it’s housed in a custom aluminum enclosure on my balcony. The inside is lined with cork panels for sound dampening, and a series of fans ensure proper airflow—cool air is pulled in from one side, flows over the components, and is exhausted out the other. It’s a robust, weather-resistant home for my digital workhorse.

This setup has completely changed how I work. It gives me the freedom to travel with a light, long-lasting laptop while having on-demand access to a powerhouse machine for any task I can throw at it. If you’re looking for the ultimate balance of power and portability, a remote server solution like this might be exactly what you need.