View .md

Updating the panel

Update FeatherPanel with the installer, the update button in the admin area or plain Docker Compose commands, and what to back up before you do.

On this page

The backend container runs php cli migrate every time it starts, so updating is a matter of getting new images and restarting the stack. Pick one of the three ways below.

With the installer

curl -sSL https://get.featherpanel.com/installer.sh | bash

Pick [1] Panel, then Update Panel. For a Docker install the installer:

  1. Downloads the current docker-compose.yml again (from main, or the development Compose file if you chose a development build) and re-applies your panel port.
  2. Offers the backup.
  3. Stops the stack, runs docker compose pull and starts it again with docker compose up -d.

From the admin area

On Docker installs the version widget on the admin dashboard and the Updates page (/admin/updates) can start a panel update. The Updates page also lists plugin updates and the FeatherWings version of each node. Both call POST /api/admin/settings/docker/update, which needs the ADMIN_SETTINGS_EDIT permission.

The backend cannot restart its own containers, so it asks the featherpanel-docker-updater service on the host. That service listens on 127.0.0.1:9418, checks the DOCKER_UPDATER_TOKEN from /var/www/featherpanel/.env, and runs docker compose up -d --pull always --remove-orphans in /var/www/featherpanel. Its log is in /var/www/featherpanel/install.log.

systemctl status featherpanel-docker-updater

If the button reports that the updater is unreachable, the service is not installed or not running. Run the installer’s update once; it installs the service.

With Docker Compose

cd /var/www/featherpanel
docker compose pull
docker compose up -d --remove-orphans
docker image prune -f

This keeps your existing docker-compose.yml. Compare it with the current file in the repository from time to time, because new services and variables arrive there.

Source installs

For source installs the installer runs installer/source/init/update.bash. It discards local changes in the repository, pulls the configured git ref, installs backend dependencies and runs migrations, rebuilds the frontend and the async runner, and restarts the services.

After the update

  • Open the panel and check the version in the admin dashboard.
  • Check docker compose ps: every service should be healthy.
  • Check the node versions on the Updates page and update FeatherWings where it is behind.

Frequently asked questions

Will an update remove my plugins?

The installer warns that plugins, themes and code modifications may be removed during an update and offers a backup first. Plugins live in the featherpanel_addons volume, which a normal Docker update keeps, but code changes made inside containers are lost when the images are replaced.

Does FeatherPanel update itself?

No. The installer stores an auto-update preference in its configuration file, but nothing in the installer or panel acts on it. Run an update yourself, with the installer, the admin update button or Docker Compose.