diff --git a/remote.php b/remote.php
index 232e47ee402864209ae375f417938d34631097f4..a91742b0475547c7ed15002fd901c97cf87fd616 100644
--- a/remote.php
+++ b/remote.php
@@ -2,6 +2,15 @@
 
 try {
 	require_once 'lib/base.php';
+
+	if (\OCP\Util::needUpgrade()) {
+		// since the behavior of apps or remotes are unpredictable during
+		// an upgrade, return a 503 directly
+		OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
+		OC_Template::printErrorPage('Service unavailable');
+		exit;
+	}
+
 	$path_info = OC_Request::getPathInfo();
 	if ($path_info === false || $path_info === '') {
 		OC_Response::setStatus(OC_Response::STATUS_NOT_FOUND);