diff --git a/backend/filesystem/image.go b/backend/filesystem/image.go
index f1aa541c2cd6b54bdf2a5363003fe762de25c17e..519dc1b25809ed6b32d33fb3c741567d86973697 100644
--- a/backend/filesystem/image.go
+++ b/backend/filesystem/image.go
@@ -398,8 +398,11 @@ func (s *Store) ImageSnowflakeHash(flake string) (string, error) {
 	}
 
 	if !s.Compat {
-		img, err := s.imageMetadataRead(s.ImageSnowflakePath(flake) + "/" + infoJson)
-		return img.Hash, err
+		if img, err := s.imageMetadataRead(s.ImageSnowflakePath(flake) + "/" + infoJson); err != nil {
+			return "", err
+		} else {
+			return img.Hash, nil
+		}
 	} else {
 		if path, err := os.ReadFile(s.ImageSnowflakePath(flake)); err != nil {
 			if os.IsNotExist(err) {
@@ -408,8 +411,11 @@ func (s *Store) ImageSnowflakeHash(flake string) (string, error) {
 			return "", err
 		} else {
 			var img *store.Image
-			img, err = s.imageMetadataRead(string(path) + "/" + infoJson)
-			return img.Hash, err
+			if img, err = s.imageMetadataRead(string(path) + "/" + infoJson); err != nil {
+				return "", err
+			} else {
+				return img.Hash, nil
+			}
 		}
 	}
 }
diff --git a/config.go b/config.go
index 9a1fcfd34e244854a403d16e780808d087c86855..35d465faf5f4bdb0a194fb000690e593e6cb1b6b 100644
--- a/config.go
+++ b/config.go
@@ -14,10 +14,11 @@ type conf struct {
 }
 
 type serverConf struct {
-	Host  string `toml:"host"`
-	Unix  bool   `toml:"unix"`
-	Port  uint16 `toml:"port"`
-	Proxy bool   `toml:"proxy"`
+	Host           string   `toml:"host"`
+	Unix           bool     `toml:"unix"`
+	Port           uint16   `toml:"port"`
+	Proxy          bool     `toml:"proxy"`
+	TrustedProxies []string `toml:"trusted_proxies"`
 }
 
 type systemConf struct {
@@ -79,5 +80,10 @@ var defConf = conf{
 		Unix:  false,
 		Port:  7777,
 		Proxy: true,
+		TrustedProxies: []string{
+			"10.0.0.0/8",
+			"172.16.0.0/12",
+			"192.168.0.0/16",
+		},
 	},
 }
diff --git a/web.go b/web.go
index 508cab3feba59a4a2399c92d96cd706fe9c5626c..c3fe0b7d41004e6afdac9452ae7a658cb8c7d41c 100644
--- a/web.go
+++ b/web.go
@@ -27,10 +27,13 @@ func webSetup() {
 	}
 
 	router = gin.New()
-	router.Use(recovery())
 	router.ForwardedByClientIP = config.Server.Proxy
+	router.TrustedProxies = config.Server.TrustedProxies
 	if config.System.Verbose {
 		router.Use(gin.Logger())
+		router.Use(gin.Recovery())
+	} else {
+		router.Use(recovery())
 	}
 	router.NoRoute(func(context *gin.Context) {
 		context.Redirect(http.StatusTemporaryRedirect, "/web")