assemblrr/docs/uninstall.md
soulis-1256 0890007d81
Stop setup when an install already exists.
Setup is first-time only: a complete tree prints the path and exits
(use upgrade, config edit, or uninstall). Incomplete leftovers from a
failed attempt are offered for cleanup. Uninstall is quieter and
remembers earlier install/media paths so stray trees still get found.
2026-08-18 23:22:08 +03:00

157 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Uninstall & Complete Removal
assemblrr installs into your home directory by default and uses no system
packages. Everything it creates is listed below so you can verify ownership
and remove a complete or half-finished install by hand.
A **finished** install can usually be removed without sudo (Option 12).
A **failed setup** that already started Gluetun can leave `~/assemblrr/config`
root-owned; plain `rm -rf` then fails — use the Docker removal step in Option 3
(no sudo if your user is in the `docker` group).
## What an installation creates
| Component | Default location |
|---|---|
| Containers | `jellyfin`/`emby`/`plex` (your choice), `qbittorrent`, `sonarr`, `radarr`, `prowlarr`, `bazarr`, `seerr`, `seerr-gateway`, `media-purge-watch`, `recyclarr` — plus `gluetun`, `deunhealth`, `vpn-watchdog` when VPN is enabled; older installs may still have `portainer` |
| Docker network | `assemblrr_network` |
| Install directory (config, secrets, compose files) | `~/assemblrr` (or the path you chose) |
| Media directory (your movies/TV/downloads) | `~/assemblrr-media` (or the path you chose) |
| CLI command | `~/.local/bin/assemblrr` (wrapper → install `cli.sh`) |
| Runtime config | `<install>/.assemblrr-config` (written when the install tree is first bootstrapped — early in setup, not only at the end) |
| Discovery pointer | `~/.assemblrr-config` (current install + media, plus `KNOWN_INSTALLS` / `KNOWN_MEDIA` so uninstall can find earlier trees) |
| Logs | `/tmp/assemblrr-*.log` |
| Legacy (old installs) | `~/assemblrr_services.txt` — unused; safe to delete; `uninstall` removes it |
No named Docker volumes are used — all state lives in the install and media
directories above.
### Mid-setup / abort
Setup installs the operator CLI as soon as the install path is known (VPN test
path or after you choose directories). If you stop setup early (Ctrl+C, failed
VPN, closed terminal):
1. Prefer **`assemblrr uninstall`** (or `assemblrr uninstall --force` to keep
media without prompts) if `~/.local/bin` is on your `PATH`.
2. If the shell says `command not found`, run the binary directly:
`~/.local/bin/assemblrr uninstall --force`. A new terminal also picks up
PATH from `~/.bashrc` / `~/.profile` / `~/.zshrc` / fish config.
3. If the PATH CLI is missing but the install tree exists, use **Option 2**.
4. If there is no install tree / no runtime config, use **Option 3**.
`--force` alone **never** deletes your media directory; pass `--media` only if
you intend to delete movies/TV/downloads as well.
### Which option applies?
| Situation | Use |
|---|---|
| CLI works (`assemblrr` on PATH, or `~/.local/bin/assemblrr`) | Option 1 |
| CLI not on PATH, but `<install>/cli.sh` and `<install>/.assemblrr-config` exist (finished **or** mid-setup abort after bootstrap) | Option 2 |
| No runtime config, incomplete tree, `Permission denied` on `config/`, or CLI cannot find the install | Option 3 |
## Option 1 — Normal uninstall (CLI works)
```bash
assemblrr backup ~/my-backup # optional, but recommended first
assemblrr uninstall # interactive prompts — read them before confirming
```
Non-interactive:
```bash
assemblrr uninstall --force # no prompts; keeps media
assemblrr uninstall --force --media # no prompts; deletes media too
```
If a new shell has not picked up `~/.local/bin` yet:
```bash
~/.local/bin/assemblrr uninstall --force
```
## Option 2 — Install tree present, PATH CLI missing
Setup always copies `cli.sh` into the install directory when it bootstraps the
tree. If `<install>/.assemblrr-config` exists (default: `~/assemblrr`):
```bash
bash ~/assemblrr/cli.sh uninstall
# or non-interactive, keep media:
bash ~/assemblrr/cli.sh uninstall --force
```
If that errors with “could not find installation” or there is no
`.assemblrr-config`, use Option 3.
## Option 3 — Manual removal (failed or incomplete setup)
Every step is independent; run whichever apply. **Media is left alone** unless
you deliberately remove it in step 3.
**1. Remove containers and the network:**
```bash
docker rm -f jellyfin emby plex qbittorrent sonarr radarr prowlarr bazarr \
seerr seerr-gateway media-purge-watch recyclarr portainer \
gluetun deunhealth vpn-watchdog 2>/dev/null
# portainer: only if an older install still has it
docker network rm assemblrr_network 2>/dev/null
```
**2. Delete the install directory:**
If you own the tree:
```bash
rm -rf ~/assemblrr
```
If you see `Permission denied` under `config/` (common after a VPN test that
created bind mounts as root), remove via Docker instead — same effect, no sudo,
requires membership in the `docker` group:
```bash
docker run --rm -v "$HOME:/target" alpine rm -rf /target/assemblrr
```
Or with sudo:
```bash
sudo rm -rf ~/assemblrr
```
**3. Delete the media directory — only if you really want your content gone:**
```bash
rm -rf ~/assemblrr-media # WARNING: this is your movies/TV/downloads
```
**4. Remove the CLI files** (only if setup got far enough to install them):
```bash
rm -f ~/.local/bin/assemblrr
rm -f ~/.local/bin/lib/*.sh # leftover from older installs
rmdir ~/.local/bin/lib 2>/dev/null # only removed if now empty
rm -f ~/assemblrr_services.txt 2>/dev/null # legacy cheat-sheet
rm -f ~/.assemblrr-config 2>/dev/null # discovery pointer
```
**5. Optional — remove the Docker images:**
```bash
# VPN mode also pulls qmcgaw/gluetun and qmcgaw/deunhealth;
# swap jellyfin for emby/plex if you chose a different media server
docker rmi lscr.io/linuxserver/jellyfin lscr.io/linuxserver/qbittorrent \
lscr.io/linuxserver/sonarr lscr.io/linuxserver/radarr \
lscr.io/linuxserver/prowlarr \
ghcr.io/seerr-team/seerr ghcr.io/recyclarr/recyclarr alpine:3
# older installs: docker rmi portainer/portainer-ce
```
## Windows / WSL2
Run any of the options above inside your WSL2 distro. If you used the dev
scripts, `.\platform\windows\bootstrap-dev.ps1 -Full -Clean` also uninstalls
the existing WSL2 installation before setting up again.