3.7 KiB
Upgrade your Docker Funkwhale installation
If you installed Funkwhale following the Docker guide, follow these steps to upgrade.
Upgrade Funkwhale
-
SSH into your server
-
Log in as your
funkwhale
user.su funkwhale
-
Navigate to your Funkwhale directory.
cd /srv/funkwhale
-
Export the Funkwhale version you want to update to. You'll use this in the rest of the commands in this guide.
export FUNKWHALE_VERSION={sub-ref}`version`
-
Change the version number in your
.env
file. Update this to the same version number you exported in step 4.nano .env
-
Log in as
su
to load the configuration from your.env
file.sudo su source .env
-
Pull the updated containers.
docker compose pull
-
Apply the database migrations.
docker compose run --rm api funkwhale-manage migrate
-
Relaunch your containers.
docker compose up -d
-
Exit the root shell.
exit
That’s it! You’ve updated your Funkwhale pod. You should now see the new version running in your web browser.
Update your reverse proxy configuration
To ensure your reverse proxy is up-to-date with changes, you should regenerate your Nginx configuration with each upgrade. To do this:
:::{include} /administrator/installation/docker.md :start-after: Nginx update instructions :end-before: Instructions end :::
Once you've updated your configuration, reload Nginx.
# systemctl reload nginx
Upgrade the postgres container
Funkwhale depends on postgres for its database container. To upgrade postgres, you need to export your database and import it into the new container.
To upgrade postgres on Docker we use the postgres-upgrade
container. This Docker container automates the process of upgrading between major versions of postgres. Use these commands to upgrade your postgres container:
-
Export your current postgres version number. You can find this in your
docker-compose.yml
file.export OLD_POSTGRES=13
-
Export the major version number you want to upgrade to.
export NEW_POSTGRES=14
-
Stop the postgres container. This means no data changes while you are upgrading.
sudo docker compose stop postgres
-
Run the migration using the
postgres-upgrade
container. This creates a new version of the database in the/srv/funkwhale/data/postgres-new
directory.sudo -E docker run --rm \ -v $(pwd)/data/postgres:/var/lib/postgresql/${OLD_POSTGRES}/data \ -v $(pwd)/data/postgres-new:/var/lib/postgresql/${NEW_POSTGRES}/data \ tianon/postgres-upgrade:${OLD_POSTGRES}-to-${NEW_POSTGRES}
-
Re-add the access control rules required by Funkwhale.
echo "host all all all trust" | sudo tee -a ./data/postgres-new/pg_hba.conf
-
Swap your old database out with your new database.
mv ./data/postgres ./data/postgres-old mv ./data/postgres-new ./data/postgres
-
Pull the new postgres version.
sudo docker compose pull
-
Restart your containers.
sudo docker compose up -d
That's it! Your Funkwhale pod is now running the new version of postgres. The old database is available in /srv/funkwhale/data/postgres-old
. You can back this up and remove it from your server once you've confirmed everything is working.