# Updates

> How to update the Docker-based automation stack and the Plex LXC to their latest versions.

# Updates

## Docker stack (Sonarr, Radarr, Prowlarr, SABnzbd, Seerr)

All automation services use `lscr.io/linuxserver/*` images tagged as `latest`. To update them:

```bash
cd /path/to/your/docker-compose
docker compose pull
docker compose up -d
```

This pulls the latest image for each service and recreates any containers whose image changed. Containers that are already on the latest image are left untouched.

Config data lives in `/srv/media-stack/config/` and persists across updates because it is mounted as a volume.

### Automating updates with Watchtower

If you want automatic updates without manual intervention, you can run [Watchtower](https://containrrr.dev/watchtower/) as an additional container. It monitors your running containers and pulls new images on a schedule.

```yaml
watchtower:
  image: containrrr/watchtower
  container_name: watchtower
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock
  environment:
    - WATCHTOWER_SCHEDULE=0 0 4 * * *
    - WATCHTOWER_CLEANUP=true
  restart: unless-stopped
```

This runs the update check daily at 04:00 and removes old images after updating.

## Plex (LXC)

Plex Media Server on Debian is updated through `apt`:

```bash
apt update
apt install --only-upgrade plexmediaserver
```

Plex restarts automatically after the upgrade. Active streams may be interrupted briefly.

### Automating the Plex update

On Linux, Plex does not install its own updates. Its built-in updater only tells you that a new version exists, and you get it once Plex publishes the package to its apt repository. That can lag behind the announcement by weeks, so a log line saying the package is already the newest version does not always mean you are current.

A daily cron job in `/etc/cron.d/plex-update` keeps the container up to date:

```text
30 5 * * * root apt-get update -qq >> /var/log/plex-update.log 2>&1 && apt-get install -y --only-upgrade plexmediaserver >> /var/log/plex-update.log 2>&1
```

The `apt-get update` in front matters. A job that only runs `apt-get install --only-upgrade` relies on something else to refresh the package lists, and in a minimal Debian LXC container nothing does (see [Lessons Learned](/docs/home-server/media-automation/appendix/lessons-learned)). The file must be owned by root with mode 644, or cron ignores it. `--only-upgrade` keeps the job from touching any other package.

To check the currently installed version:

```bash
dpkg -l plexmediaserver
```

## Plex client apps

The server and the client apps update separately. A server that works fine can still look broken after a client update, as happened with the redesigned Apple TV and Android TV apps in autumn 2026.

- Apple TV: Settings, Apps, Automatically Update Apps, set to Off.
- Android TV and Shield: in the Play Store, open the Plex app page, open the menu and turn off Enable auto update.
- Read the [Plex release notes](https://forums.plex.tv/t/plex-for-mobile-tvs-android-mobile-ios-android-tv-tvos-fire-tv/909610) before you update a device that the whole household uses.

If an update already broke something, [Plex's New App Is a Mess](/blog/plex-new-app-rollback-alternatives) explains how to roll back the Apple TV app and what to use instead.

## Proxmox host

Keep the Proxmox host itself updated separately:

```bash
apt update && apt upgrade -y
```

Check the [Proxmox changelog](https://www.proxmox.com/en/downloads/proxmox-virtual-environment/changelog) before major version upgrades.
