Skip to content

Commit 6560ae8

Browse files
committed
fix: harden runtime detection and complete OrbStack setup docs
1 parent 27e1be9 commit 6560ae8

3 files changed

Lines changed: 80 additions & 15 deletions

File tree

SETUP.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,35 @@ A personal media server that automatically finds, downloads, and organizes movie
1111

1212
---
1313
## Quick Option: One-Command Install
14-
If you already have Docker Desktop and Plex installed, you can run a single command that handles everything:
14+
If you already have OrbStack (or Docker Desktop) and Plex installed, you can run a single command that handles everything:
1515
```bash
1616
curl -fsSL https://raw.githubusercontent.com/liamvibecodes/mac-media-stack/main/bootstrap.sh | bash
1717
```
1818
It will prompt you for VPN keys and walk you through the Seerr login. If you'd rather do each step yourself, continue with the manual guide below.
1919
---
2020
## What You Need
2121
- A Mac (any recent macOS)
22+
- [OrbStack](https://orbstack.dev) (recommended) or [Docker Desktop](https://www.docker.com/products/docker-desktop/) installed and running
2223
- An internet connection
2324
- Your VPN keys (two values: a private key and an address)
2425
- A free Plex account (create one at https://plex.tv if you don't have one)
2526
---
26-
## Step 1: Install Docker Desktop
27-
Docker runs all the behind-the-scenes services. You install it once and forget about it.
27+
## Step 1: Install A Container Runtime
28+
You can use OrbStack (recommended) or Docker Desktop. Both run the same `docker` commands.
29+
30+
### Option A: OrbStack (Recommended)
31+
1. Install OrbStack:
32+
```bash
33+
brew install --cask orbstack
34+
```
35+
2. Open OrbStack from Applications
36+
3. Wait for it to fully start, then run:
37+
```bash
38+
docker info
39+
```
40+
If it prints Docker system information, you're ready.
41+
42+
### Option B: Docker Desktop
2843
1. Go to https://www.docker.com/products/docker-desktop/
2944
2. Click "Download for Mac"
3045
- If you have an M-series Mac (M1, M2, M3, M4): choose "Apple Silicon"
@@ -163,7 +178,7 @@ You probably won't need these, but just in case:
163178
---
164179
## Troubleshooting
165180
**Nothing is working after reboot:**
166-
Open Docker Desktop. Wait 30 seconds. Run `bash scripts/health-check.sh`.
181+
Open OrbStack or Docker Desktop. Wait 30 seconds. Run `bash scripts/health-check.sh`.
167182
**VPN health check fails:**
168183
Double-check your WireGuard keys in `.env`. Make sure there are no extra spaces. Then restart:
169184
```bash

bootstrap.sh

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,56 @@ echo "=============================="
1717
echo ""
1818

1919
# Detect container runtime
20-
detect_runtime() {
20+
detect_installed_runtime() {
21+
local has_orbstack=0
22+
local has_docker_desktop=0
23+
2124
if [[ -d "/Applications/OrbStack.app" ]] || command -v orbstack &>/dev/null; then
25+
has_orbstack=1
26+
fi
27+
if [[ -d "/Applications/Docker.app" ]]; then
28+
has_docker_desktop=1
29+
fi
30+
31+
if [[ $has_orbstack -eq 1 && $has_docker_desktop -eq 1 ]]; then
32+
echo "OrbStack or Docker Desktop"
33+
elif [[ $has_orbstack -eq 1 ]]; then
2234
echo "OrbStack"
23-
elif [[ -d "/Applications/Docker.app" ]]; then
35+
elif [[ $has_docker_desktop -eq 1 ]]; then
2436
echo "Docker Desktop"
2537
else
2638
echo "none"
2739
fi
2840
}
2941

30-
RUNTIME=$(detect_runtime)
42+
detect_running_runtime() {
43+
local os_name
44+
os_name=$(docker info --format '{{.OperatingSystem}}' 2>/dev/null || true)
45+
if [[ "$os_name" == *"OrbStack"* ]]; then
46+
echo "OrbStack"
47+
elif [[ "$os_name" == *"Docker Desktop"* ]]; then
48+
echo "Docker Desktop"
49+
else
50+
echo "Docker"
51+
fi
52+
}
53+
54+
INSTALLED_RUNTIME=$(detect_installed_runtime)
3155

3256
if ! docker info &>/dev/null; then
33-
if [[ "$RUNTIME" == "none" ]]; then
57+
if [[ "$INSTALLED_RUNTIME" == "none" ]]; then
3458
echo -e "${RED}No container runtime found.${NC}"
3559
echo ""
3660
echo "Install one of these:"
37-
echo " OrbStack (recommended): brew install orbstack"
61+
echo " OrbStack (recommended): brew install --cask orbstack"
3862
echo " Docker Desktop: https://www.docker.com/products/docker-desktop/"
3963
else
40-
echo -e "${RED}$RUNTIME is not running.${NC}"
41-
echo "Open $RUNTIME, wait for it to start, then run this again."
64+
echo -e "${RED}No container runtime is running.${NC}"
65+
echo "Start $INSTALLED_RUNTIME, wait for it to start, then run this again."
4266
fi
4367
exit 1
4468
fi
69+
RUNTIME=$(detect_running_runtime)
4570
echo -e "${GREEN}OK${NC} $RUNTIME is running"
4671

4772
# Check Plex

scripts/health-check.sh

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,44 @@ check_service() {
3232
}
3333

3434
# Detect container runtime
35-
detect_runtime() {
35+
detect_installed_runtime() {
36+
local has_orbstack=0
37+
local has_docker_desktop=0
38+
3639
if [[ -d "/Applications/OrbStack.app" ]] || command -v orbstack &>/dev/null; then
40+
has_orbstack=1
41+
fi
42+
if [[ -d "/Applications/Docker.app" ]]; then
43+
has_docker_desktop=1
44+
fi
45+
46+
if [[ $has_orbstack -eq 1 && $has_docker_desktop -eq 1 ]]; then
47+
echo "OrbStack or Docker Desktop"
48+
elif [[ $has_orbstack -eq 1 ]]; then
49+
echo "OrbStack"
50+
elif [[ $has_docker_desktop -eq 1 ]]; then
51+
echo "Docker Desktop"
52+
else
53+
echo "Docker"
54+
fi
55+
}
56+
57+
detect_running_runtime() {
58+
local os_name
59+
os_name=$(docker info --format '{{.OperatingSystem}}' 2>/dev/null || true)
60+
if [[ "$os_name" == *"OrbStack"* ]]; then
3761
echo "OrbStack"
38-
elif [[ -d "/Applications/Docker.app" ]]; then
62+
elif [[ "$os_name" == *"Docker Desktop"* ]]; then
3963
echo "Docker Desktop"
4064
else
4165
echo "Docker"
4266
fi
4367
}
4468

45-
RUNTIME=$(detect_runtime)
69+
RUNTIME=$(detect_installed_runtime)
4670

4771
if docker info &>/dev/null; then
72+
RUNTIME=$(detect_running_runtime)
4873
echo -e " ${GREEN}OK${NC} $RUNTIME"
4974
((PASS++))
5075
else
@@ -113,7 +138,7 @@ fi
113138

114139
echo ""
115140
echo "=============================="
116-
echo " Results: ${GREEN}$PASS passed${NC}, ${RED}$FAIL failed${NC}"
141+
echo -e " Results: ${GREEN}$PASS passed${NC}, ${RED}$FAIL failed${NC}"
117142
echo "=============================="
118143
echo ""
119144

0 commit comments

Comments
 (0)