|
1 | 1 | # Upgrade Guide: Basic -> Advanced |
2 | 2 |
|
3 | | -This guide upgrades an existing `mac-media-stack` install to `mac-media-stack-advanced` without losing your media library or app config. |
| 3 | +This guide upgrades an existing `mac-media-stack` install to `mac-media-stack-advanced` without moving your media library. |
4 | 4 |
|
5 | | -## Before You Start |
| 5 | +## Recommended: One-shot upgrader |
6 | 6 |
|
7 | | -- Stop any active downloads first (recommended). |
8 | | -- Keep your existing `MEDIA_DIR` path exactly the same. |
9 | | -- Do not run basic and advanced at the same time. |
| 7 | +Use the built-in migration script: |
10 | 8 |
|
11 | | -## What Carries Over |
12 | | - |
13 | | -If you reuse the same `MEDIA_DIR`, advanced will reuse your existing: |
14 | | - |
15 | | -- Movies/TV library files |
16 | | -- Radarr/Sonarr/Prowlarr/qBittorrent/Bazarr/Seerr configs |
17 | | -- API keys and existing app state inside `${MEDIA_DIR}/config` |
| 9 | +```bash |
| 10 | +cd ~/mac-media-stack-advanced |
| 11 | +bash scripts/upgrade-from-basic.sh |
| 12 | +``` |
18 | 13 |
|
19 | | -## 1. Backup (Required) |
| 14 | +### Common flags |
20 | 15 |
|
21 | 16 | ```bash |
22 | | -# adjust if your media path is not ~/Media |
23 | | -MEDIA_DIR=~/Media |
| 17 | +# Non-default basic repo location |
| 18 | +bash scripts/upgrade-from-basic.sh --basic-dir /path/to/mac-media-stack |
24 | 19 |
|
25 | | -# backup media stack config/state quickly |
26 | | -mkdir -p ~/media-stack-upgrade-backup |
27 | | -cp -a "$MEDIA_DIR/config" ~/media-stack-upgrade-backup/config |
28 | | -cp -a "$MEDIA_DIR/state" ~/media-stack-upgrade-backup/state 2>/dev/null || true |
29 | | -cp -a "$MEDIA_DIR/logs" ~/media-stack-upgrade-backup/logs 2>/dev/null || true |
30 | | -``` |
| 20 | +# Override MEDIA_DIR (if different from basic .env) |
| 21 | +bash scripts/upgrade-from-basic.sh --media-dir /Volumes/T9/Media |
31 | 22 |
|
32 | | -If you already use the advanced backup repo/tooling, run that instead. |
| 23 | +# Fully non-interactive run (skips Seerr sign-in prompt in configure.sh) |
| 24 | +bash scripts/upgrade-from-basic.sh --yes --non-interactive |
33 | 25 |
|
34 | | -## 2. Stop Basic Stack |
| 26 | +# Skip backup snapshot (not recommended) |
| 27 | +bash scripts/upgrade-from-basic.sh --yes --skip-backup |
35 | 28 |
|
36 | | -```bash |
37 | | -cd ~/mac-media-stack |
38 | | -docker compose down |
| 29 | +# Start watchtower profile after upgrade |
| 30 | +bash scripts/upgrade-from-basic.sh --enable-watchtower |
39 | 31 | ``` |
40 | 32 |
|
41 | | -## 3. Clone Advanced |
| 33 | +What the upgrader does: |
42 | 34 |
|
43 | | -```bash |
44 | | -cd ~ |
45 | | -git clone https://github.com/liamvibecodes/mac-media-stack-advanced.git |
46 | | -cd mac-media-stack-advanced |
47 | | -``` |
| 35 | +1. Validates basic + advanced repo paths |
| 36 | +2. Creates a backup snapshot (env + config/state/logs) |
| 37 | +3. Migrates shared env keys from basic to advanced |
| 38 | +4. Stops basic stack |
| 39 | +5. Runs advanced setup + preflight doctor checks |
| 40 | +6. Starts advanced stack |
| 41 | +7. Runs auto-configuration |
| 42 | +8. Installs launchd automation jobs |
| 43 | +9. Runs health checks |
48 | 44 |
|
49 | | -## 4. Configure `.env` for Existing Media Path |
| 45 | +## Manual upgrade (step-by-step) |
50 | 46 |
|
51 | | -Generate a starter `.env` if needed: |
| 47 | +If you prefer full manual control: |
52 | 48 |
|
| 49 | +1. Backup: |
53 | 50 | ```bash |
54 | | -bash scripts/setup.sh |
| 51 | +MEDIA_DIR=~/Media |
| 52 | +mkdir -p ~/media-stack-upgrade-backup |
| 53 | +cp -a "$MEDIA_DIR/config" ~/media-stack-upgrade-backup/config |
| 54 | +cp -a "$MEDIA_DIR/state" ~/media-stack-upgrade-backup/state 2>/dev/null || true |
| 55 | +cp -a "$MEDIA_DIR/logs" ~/media-stack-upgrade-backup/logs 2>/dev/null || true |
55 | 56 | ``` |
56 | | - |
57 | | -Open `.env` and confirm: |
58 | | - |
59 | | -- `MEDIA_DIR` points to your existing library path from basic |
60 | | -- your VPN keys are set (`WIREGUARD_PRIVATE_KEY`, `WIREGUARD_ADDRESSES`) |
61 | | - |
| 57 | +2. Stop basic: |
62 | 58 | ```bash |
63 | | -open -a TextEdit .env |
| 59 | +cd ~/mac-media-stack |
| 60 | +docker compose down |
64 | 61 | ``` |
65 | | - |
66 | | -## 5. Run Preflight + Start Advanced |
67 | | - |
| 62 | +3. Prepare advanced: |
68 | 63 | ```bash |
| 64 | +cd ~/mac-media-stack-advanced |
| 65 | +bash scripts/setup.sh |
69 | 66 | bash scripts/doctor.sh |
70 | | -docker compose up -d |
71 | 67 | ``` |
72 | | - |
73 | | -## 6. Run Auto-Configuration |
74 | | - |
| 68 | +4. Start and configure: |
75 | 69 | ```bash |
| 70 | +docker compose up -d |
76 | 71 | bash scripts/configure.sh |
77 | | -``` |
78 | | - |
79 | | -This auto-wires: |
80 | | - |
81 | | -- qBittorrent, Radarr, Sonarr, Prowlarr, Seerr |
82 | | -- Recyclarr API keys |
83 | | -- Unpackerr API keys (+ Unpackerr restart) |
84 | | - |
85 | | -## 7. Complete Advanced-Only Manual Setup |
86 | | - |
87 | | -Still manual by design: |
88 | | - |
89 | | -- Kometa: add `PLEX_TOKEN` + TMDB API key in `${MEDIA_DIR}/config/kometa/config.yml` |
90 | | -- Tdarr: configure libraries/plugins in Web UI (`http://localhost:8265`) |
91 | | - |
92 | | -## 8. Install Automation Jobs |
93 | | - |
94 | | -```bash |
95 | 72 | bash scripts/install-launchd-jobs.sh |
96 | 73 | ``` |
97 | | - |
98 | | -This installs auto-heal, backup, watchdog, Kometa runner, and log-prune. |
99 | | - |
100 | | -## 9. Validate |
101 | | - |
| 74 | +5. Validate: |
102 | 75 | ```bash |
103 | 76 | bash scripts/health-check.sh |
104 | 77 | ``` |
105 | 78 |
|
106 | | -Confirm: |
| 79 | +## Advanced-only follow-up |
107 | 80 |
|
108 | | -- core services show `OK` |
109 | | -- VPN shows healthy |
110 | | -- Plex can still see your existing libraries |
| 81 | +After either upgrade path, confirm: |
111 | 82 |
|
112 | | -## Optional: Enable Watchtower |
| 83 | +1. `~/Media/config/kometa/config.yml` has `PLEX_TOKEN` + TMDB key |
| 84 | +2. Tdarr libraries/plugins are configured at `http://localhost:8265` |
| 85 | +3. `bash scripts/health-check.sh` reports clean results |
113 | 86 |
|
114 | | -```bash |
115 | | -docker compose --profile autoupdate up -d watchtower |
116 | | -``` |
| 87 | +## Rollback |
117 | 88 |
|
118 | | -## Rollback (If Needed) |
| 89 | +Quick rollback: |
119 | 90 |
|
120 | 91 | ```bash |
121 | | -# stop advanced |
122 | 92 | cd ~/mac-media-stack-advanced |
123 | 93 | docker compose down |
124 | 94 |
|
125 | | -# bring basic back |
126 | 95 | cd ~/mac-media-stack |
127 | 96 | docker compose up -d |
128 | 97 | ``` |
129 | 98 |
|
130 | | -Because both stacks use the same `MEDIA_DIR`, rollback is quick. |
| 99 | +If you used the one-shot script, backup snapshots are saved under: |
| 100 | + |
| 101 | +`~/media-stack-upgrade-backup/YYYYMMDD-HHMMSS/` |
0 commit comments