|  | @@ -202,6 +202,31 @@ namespace Jellyfin.Server
 | 
	
		
			
				|  |  |                  Directory.CreateDirectory(configDir);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            string cacheDir = Environment.GetEnvironmentVariable("JELLYFIN_CACHE_DIR");
 | 
	
		
			
				|  |  | +            if (string.IsNullOrEmpty(cacheDir))
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                if (options.CacheDir != null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    cacheDir = options.CacheDir;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    // $XDG_CACHE_HOME defines the base directory relative to which user specific non-essential data files should be stored.
 | 
	
		
			
				|  |  | +                    cacheDir = Environment.GetEnvironmentVariable("XDG_CACHE_HOME");
 | 
	
		
			
				|  |  | +                    // If $XDG_CACHE_HOME is either not set or empty, $HOME/.cache should be used.
 | 
	
		
			
				|  |  | +                    if (string.IsNullOrEmpty(cacheDir))
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        cacheDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".cache");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    cacheDir = Path.Combine(cacheDir, "jellyfin");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (cacheDir != null)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Directory.CreateDirectory(cacheDir);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              string logDir = Environment.GetEnvironmentVariable("JELLYFIN_LOG_DIR");
 | 
	
		
			
				|  |  |              if (string.IsNullOrEmpty(logDir))
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -223,7 +248,7 @@ namespace Jellyfin.Server
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              string appPath = AppContext.BaseDirectory;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            return new ServerApplicationPaths(programDataPath, appPath, appPath, logDir, configDir);
 | 
	
		
			
				|  |  | +            return new ServerApplicationPaths(programDataPath, appPath, appPath, logDir, configDir, cacheDir);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          private static async Task createLogger(IApplicationPaths appPaths)
 |