diff --git a/.env.dev b/.env.dev
index 84d8ca19bb679436854bf6da8885a81ce31da7c9..39f64d03fd5aa335668f7c58e936e3d7dfcc663d 100644
--- a/.env.dev
+++ b/.env.dev
@@ -15,3 +15,6 @@ LDAP_ENABLED=False
 
 # Uncomment this if you're using traefik/https
 # FORCE_HTTPS_URLS=True
+
+# Customize to your needs
+POSTGRES_VERSION=11
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 027713d5a151901401666c57f2d25cb50aeb70cb..384e0ee4f1385591f1efcf0e86a193705c94f352 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -131,7 +131,7 @@ flake8:
 
 test_api:
   services:
-    - postgres:9.4
+    - postgres:11
     - redis:3
   stage: test
   image: funkwhale/funkwhale:develop
diff --git a/changes/changelog.d/656.enhancement b/changes/changelog.d/656.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..62b50b3747d402ea67ee7d062b2c36730a597cda
--- /dev/null
+++ b/changes/changelog.d/656.enhancement
@@ -0,0 +1 @@
+Updated default docker postgres version from 9.4 to 11 (#656)
diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml
index 7116a8b9eb92ca74c7db87701329709cc6e09c5e..89ab61c99721bcf1c2002514e610a1c2173ffe53 100644
--- a/deploy/docker-compose.yml
+++ b/deploy/docker-compose.yml
@@ -4,7 +4,7 @@ services:
   postgres:
     restart: unless-stopped
     env_file: .env
-    image: postgres:9.4
+    image: postgres:11
     volumes:
       - ./data/postgres:/var/lib/postgresql/data
 
diff --git a/dev.yml b/dev.yml
index bd9808c53969c1242bcbb38c397c1cec99980df1..3eac5e6350f941c8716220ccd07daa5a6f5d3225 100644
--- a/dev.yml
+++ b/dev.yml
@@ -22,7 +22,7 @@ services:
     env_file:
       - .env.dev
       - .env
-    image: postgres:9.6
+    image: postgres:${POSTGRES_VERSION-11}
     command: postgres -c log_min_duration_statement=0
     volumes:
       - "./data/${COMPOSE_PROJECT_NAME-node1}/postgres:/var/lib/postgresql/data"