diff --git a/modules/setting/config_provider.go b/modules/setting/config_provider.go
index 86712792a7..d00164df9e 100644
--- a/modules/setting/config_provider.go
+++ b/modules/setting/config_provider.go
@@ -316,15 +316,14 @@ func mustMapSetting(rootCfg ConfigProvider, sectionName string, setting any) {
 	}
 }
 
+// DeprecatedWarnings contains the warning message for various deprecations, including: setting option, file/folder, etc
+var DeprecatedWarnings []string
+
 func deprecatedSetting(rootCfg ConfigProvider, oldSection, oldKey, newSection, newKey, version string) {
 	if rootCfg.Section(oldSection).HasKey(oldKey) {
-		log.Error("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s", oldSection, oldKey, newSection, newKey, version)
-	}
-}
-
-func deprecatedSettingFatal(rootCfg ConfigProvider, oldSection, oldKey, newSection, newKey, version string) {
-	if rootCfg.Section(oldSection).HasKey(oldKey) {
-		log.Fatal("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s. Shutting down", oldSection, oldKey, newSection, newKey, version)
+		msg := fmt.Sprintf("Deprecated config option `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s", oldSection, oldKey, newSection, newKey, version)
+		log.Error("%v", msg)
+		DeprecatedWarnings = append(DeprecatedWarnings, msg)
 	}
 }
 
diff --git a/modules/setting/lfs.go b/modules/setting/lfs.go
index 75463ce1e5..4232b5115b 100644
--- a/modules/setting/lfs.go
+++ b/modules/setting/lfs.go
@@ -34,7 +34,14 @@ func loadLFSFrom(rootCfg ConfigProvider) error {
 	// Specifically default PATH to LFS_CONTENT_PATH
 	// DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version
 	// if these are removed, the warning will not be shown
-	deprecatedSettingFatal(rootCfg, "server", "LFS_CONTENT_PATH", "lfs", "PATH", "v1.19.0")
+	deprecatedSetting(rootCfg, "server", "LFS_CONTENT_PATH", "lfs", "PATH", "v1.19.0")
+
+	if val := sec.Key("LFS_CONTENT_PATH").String(); val != "" {
+		if lfsSec == nil {
+			lfsSec = rootCfg.Section("lfs")
+		}
+		lfsSec.Key("PATH").MustString(val)
+	}
 
 	var err error
 	LFS.Storage, err = getStorage(rootCfg, "lfs", "", lfsSec)
diff --git a/modules/setting/lfs_test.go b/modules/setting/lfs_test.go
index 3313cae0eb..10c54fec0a 100644
--- a/modules/setting/lfs_test.go
+++ b/modules/setting/lfs_test.go
@@ -21,6 +21,30 @@ func Test_getStorageInheritNameSectionTypeForLFS(t *testing.T) {
 	assert.EqualValues(t, "minio", LFS.Storage.Type)
 	assert.EqualValues(t, "lfs/", LFS.Storage.MinioConfig.BasePath)
 
+	iniStr = `
+[server]
+LFS_CONTENT_PATH = path_ignored
+[lfs]
+PATH = path_used
+`
+	cfg, err = NewConfigProviderFromData(iniStr)
+	assert.NoError(t, err)
+	assert.NoError(t, loadLFSFrom(cfg))
+
+	assert.EqualValues(t, "local", LFS.Storage.Type)
+	assert.Contains(t, LFS.Storage.Path, "path_used")
+
+	iniStr = `
+[server]
+LFS_CONTENT_PATH = deprecatedpath
+`
+	cfg, err = NewConfigProviderFromData(iniStr)
+	assert.NoError(t, err)
+	assert.NoError(t, loadLFSFrom(cfg))
+
+	assert.EqualValues(t, "local", LFS.Storage.Type)
+	assert.Contains(t, LFS.Storage.Path, "deprecatedpath")
+
 	iniStr = `
 [storage.lfs]
 STORAGE_TYPE = minio
diff --git a/routers/web/admin/admin.go b/routers/web/admin/admin.go
index 797ba8798d..3e050e6949 100644
--- a/routers/web/admin/admin.go
+++ b/routers/web/admin/admin.go
@@ -110,6 +110,16 @@ func updateSystemStatus() {
 	sysStatus.NumGC = m.NumGC
 }
 
+func prepareDeprecatedWarningsAlert(ctx *context.Context) {
+	if len(setting.DeprecatedWarnings) > 0 {
+		content := setting.DeprecatedWarnings[0]
+		if len(setting.DeprecatedWarnings) > 1 {
+			content += fmt.Sprintf(" (and %d more)", len(setting.DeprecatedWarnings)-1)
+		}
+		ctx.Flash.Error(content, true)
+	}
+}
+
 // Dashboard show admin panel dashboard
 func Dashboard(ctx *context.Context) {
 	ctx.Data["Title"] = ctx.Tr("admin.dashboard")
@@ -120,6 +130,7 @@ func Dashboard(ctx *context.Context) {
 	updateSystemStatus()
 	ctx.Data["SysStatus"] = sysStatus
 	ctx.Data["SSH"] = setting.SSH
+	prepareDeprecatedWarningsAlert(ctx)
 	ctx.HTML(http.StatusOK, tplDashboard)
 }
 
diff --git a/routers/web/admin/config.go b/routers/web/admin/config.go
index b7d9976815..ba0d862645 100644
--- a/routers/web/admin/config.go
+++ b/routers/web/admin/config.go
@@ -171,6 +171,8 @@ func Config(ctx *context.Context) {
 
 	ctx.Data["Loggers"] = log.GetManager().DumpLoggers()
 
+	prepareDeprecatedWarningsAlert(ctx)
+
 	ctx.HTML(http.StatusOK, tplConfig)
 }
 
diff --git a/templates/admin/layout_head.tmpl b/templates/admin/layout_head.tmpl
index 6d84f8f359..0974c5fbed 100644
--- a/templates/admin/layout_head.tmpl
+++ b/templates/admin/layout_head.tmpl
@@ -1,9 +1,11 @@
 {{template "base/head" .ctxData}}
 <div role="main" aria-label="{{.ctxData.Title}}" class="page-content {{.pageClass}}">
-	<div class="ui container stackable grid">
+	<div class="ui container">
+		{{template "base/alert" .ctxData}}
+	</div>
+	<div class="ui container admin-container">
 		{{template "admin/navbar" .ctxData}}
-		<div class="twelve wide column">
-			{{template "base/alert" .ctxData}}
+		<div class="admin-main">
 			{{/* block: admin-setting-content */}}
 
 {{if false}}{{/* to make html structure "likely" complete to prevent IDE warnings */}}
diff --git a/templates/admin/navbar.tmpl b/templates/admin/navbar.tmpl
index 641d3fad81..a96e5c9367 100644
--- a/templates/admin/navbar.tmpl
+++ b/templates/admin/navbar.tmpl
@@ -1,4 +1,4 @@
-<div class="four wide column">
+<div class="admin-nav">
 	<div class="ui fluid vertical menu">
 		<div class="header item">{{.locale.Tr "settings"}}</div>
 		<a class="{{if .PageIsAdminDashboard}}active {{end}}item" href="{{AppSubUrl}}/admin">
diff --git a/web_src/css/admin.css b/web_src/css/admin.css
index 7e50b7f63d..1423b651dd 100644
--- a/web_src/css/admin.css
+++ b/web_src/css/admin.css
@@ -1,3 +1,26 @@
+.admin-container {
+  margin-top: 15px;
+  display: flex !important;
+  gap: 16px;
+}
+
+.admin-nav {
+  width: 240px;
+}
+
+.admin-main {
+  flex: 1;
+}
+
+@media (max-width: 767.98px) {
+  .admin-container {
+    flex-direction: column;
+  }
+  .admin-nav {
+    width: auto;
+  }
+}
+
 .admin.hooks .list > .item:not(:first-child) {
   border-top: 1px solid var(--color-secondary);
   padding: 0.25rem 1rem;