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

5.9 KiB
Raw Permalink Blame History

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)

assemblrr backup ~/my-backup        # optional, but recommended first
assemblrr uninstall                 # interactive prompts — read them before confirming

Non-interactive:

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:

~/.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 ~/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:

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:

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:

docker run --rm -v "$HOME:/target" alpine rm -rf /target/assemblrr

Or with sudo:

sudo rm -rf ~/assemblrr

3. Delete the media directory — only if you really want your content gone:

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):

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:

# 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.