diff --git a/api/requirements.txt b/api/requirements.txt
index d1197135eeb072ccaca11906b49b2fe160bd010f..00be27c5356b417fc5da953c6bceab608e2f382c 100644
--- a/api/requirements.txt
+++ b/api/requirements.txt
@@ -1,3 +1,4 @@
 # This file is here because many Platforms as a Service look for
 #	requirements.txt in the root directory of a project.
+-r requirements/base.txt
 -r requirements/production.txt
diff --git a/changes/changelog.d/127.doc b/changes/changelog.d/127.doc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/docs/index.rst b/docs/index.rst
index 17e9fe7f0b699cc427c71cac4597708b5a311e31..f5acecce516ee8d6b635c91e3aa0fed2686f5739 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -15,6 +15,7 @@ Funkwhale is a self-hosted, modern free and open-source music server, heavily in
    installation/index
    configuration
    importing-music
+   upgrading
    changelog
 
 Indices and tables
diff --git a/docs/installation/debian.rst b/docs/installation/debian.rst
index 86ccb4dd3ee6df1678f758d0e8e7834bb16a4e3b..c4e54218d53bf85fc4aa647e0516be86956df319 100644
--- a/docs/installation/debian.rst
+++ b/docs/installation/debian.rst
@@ -89,7 +89,7 @@ First, we'll download the latest api release.
 
     curl -L -o "api-|version|.zip" "https://code.eliotberriot.com/funkwhale/funkwhale/-/jobs/artifacts/|version|/download?job=build_api"
     unzip "api-|version|.zip" -d extracted
-    mv extracted/api api
+    mv extracted/api/* api/
     rmdir extracted
 
 
@@ -100,7 +100,7 @@ Then we'll download the frontend files:
     curl -L -o "front-|version|.zip" "https://code.eliotberriot.com/funkwhale/funkwhale/-/jobs/artifacts/|version|/download?job=build_front"
     unzip "front-|version|.zip" -d extracted
     mv extracted/front .
-    rmdir extracted
+    rm -rf extracted
 
 You can leave the ZIP archives in the directory, this will help you know
 which version you've installed next time you want to upgrade your installation.
diff --git a/docs/installation/docker.rst b/docs/installation/docker.rst
index 34e8187c58dc2e104392badf862dec1dcadcad43..dc031caed91b8c169ff0bd68827865c432f3504d 100644
--- a/docs/installation/docker.rst
+++ b/docs/installation/docker.rst
@@ -17,7 +17,9 @@ Create your env file:
 
 .. parsed-literal::
 
+    export FUNKWHALE_VERSION="|version|"
     curl -L -o .env "https://code.eliotberriot.com/funkwhale/funkwhale/raw/|version|/deploy/env.prod.sample"
+    sed -i "s/FUNKWHALE_VERSION=latest/FUNKWHALE_VERSION=$FUNKWHALE_VERSION/" .env
 
 Ensure to edit it to match your needs (this file is heavily commented)
 
diff --git a/docs/upgrading.rst b/docs/upgrading.rst
new file mode 100644
index 0000000000000000000000000000000000000000..674878ba7c4d8f4dd41f64f0dbda615ea515ba2d
--- /dev/null
+++ b/docs/upgrading.rst
@@ -0,0 +1,94 @@
+Upgrading your funkwhale instance to a newer version
+====================================================
+
+.. note::
+
+    Before upgrading your instance, we strongly advise you to make at least a database backup. Ideally, you should make a full backup, including
+    the database and the media files.
+
+    We're commited to make upgrade as easy and straightforward as possible,
+    however, funkwhale is still in development and you'll be safer with a backup.
+
+
+Reading the release notes
+-------------------------
+
+Please take a few minutes to read the :doc:`changelog`: updates should work
+similarly from version to version, but some of them may require additional steps.
+Those steps would be described in the version release notes.
+
+Upgrade the static files
+------------------------
+
+Regardless of your deployment choice (docker/non-docker) the front-end app
+is updated separately from the API. This is as simple as downloading
+the zip with the static files and extracting it in the correct place.
+
+The following example assume your setup match :ref:`frontend-setup`.
+
+.. parsed-literal::
+
+    # this assumes you want to upgrade to version "|version|"
+    export FUNKWHALE_VERSION="|version|"
+    cd /srv/funkwhale
+    curl -L -o front.zip "https://code.eliotberriot.com/funkwhale/funkwhale/builds/artifacts/$FUNKWHALE_VERSION/download?job=build_front"
+    unzip -o front.zip
+    rm front.zip
+
+Upgrading the API
+-----------------
+
+Docker setup
+^^^^^^^^^^^^
+
+If you've followed the setup instructions in :doc:`Docker`, upgrade path is
+easy:
+
+.. parsed-literal::
+
+    cd /srv/funkwhale
+    # hardcode the targeted version your env file
+    # (look for the FUNKWHALE_VERSION variable)
+    nano .env
+    # Pull the new version containers
+    docker-compose pull
+    # Apply the database migrations
+    docker-compose run --rm api python manage.py migrate
+    # Relaunch the containers
+    docker-compose up -d
+
+Non-docker setup
+^^^^^^^^^^^^^^^^
+
+On non docker-setup, upgrade involves a few more commands. We assume your setup
+match what is described in :doc:`debian`:
+
+.. parsed-literal::
+
+    # stop the services
+    sudo systemctl stop funkwhale.target
+
+    # this assumes you want to upgrade to version "|version|"
+    export FUNKWALE_VERSION="|version|"
+    cd /srv/funkwhale
+
+    # download more recent API files
+    curl -L -o "api-|version|.zip" "https://code.eliotberriot.com/funkwhale/funkwhale/-/jobs/artifacts/$FUNKWALE_VERSION/download?job=build_api"
+    unzip "api-$FUNKWALE_VERSION.zip" -d extracted
+    rm -rf api/ && mv extracted/api .
+    rm -rf extracted
+
+    # update os dependencies
+    sudo api/install_os_dependencies.sh install
+    # update python dependencies
+    source /srv/funkwhale/load_env
+    source /srv/funkwhale/virtualenv/bin/activate
+    pip install -r api/requirements.txt
+
+    # apply database migrations
+    python api/manage.py migrate
+    # collect static files
+    python api/manage.py collectstatic --no-input
+
+    # restart the services
+    sudo systemctl restart funkwhale.target