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.
5.9 KiB
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 1–2).
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):
- Prefer
assemblrr uninstall(orassemblrr uninstall --forceto keep media without prompts) if~/.local/binis on yourPATH. - 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. - If the PATH CLI is missing but the install tree exists, use Option 2.
- 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.