# SteamCache2

SteamCache2 is a blazing fast download cache for Steam, designed to reduce bandwidth usage and speed up game downloads.

## Features

- High-speed caching for Steam downloads
- Tiered storage for getting the most out of your storage media
- Garbage Collected storage for limiting the size of RAM or Disk cache and will not go above what you choose or stop caching unlike others
- Reduces bandwidth usage
- Easy to set up and configure aside from dns stuff to trick Steam into using it
- Supports multiple clients

## Usage

1. Start the cache server:
    ```sh
    ./SteamCache2 --memory 1G --disk 10G --disk-path tmp/disk
    ```

### Advanced Configuration

#### Garbage Collection Algorithms

SteamCache2 supports multiple garbage collection algorithms for both memory and disk caches:

```sh
# Use LFU for memory cache (good for long-running servers)
./SteamCache2 --memory 4G --memory-gc lfu --disk 100G --disk-gc lru

# Use FIFO for predictable eviction (good for testing)
./SteamCache2 --memory 2G --memory-gc fifo --disk 50G --disk-gc fifo

# Use size-based eviction for disk cache
./SteamCache2 --memory 1G --disk 200G --disk-gc largest
```

**Available GC Algorithms:**

- **`lru`** (default): Least Recently Used - evicts oldest accessed files
- **`lfu`**: Least Frequently Used - evicts least accessed files (good for popular content)
- **`fifo`**: First In, First Out - evicts oldest created files (predictable)
- **`largest`**: Size-based - evicts largest files first (maximizes file count)
- **`smallest`**: Size-based - evicts smallest files first (maximizes cache hit rate)
- **`hybrid`**: Combines access time and file size for optimal eviction

**Use Cases:**
- **LAN Events**: Use `lfu` for memory caches to keep popular games
- **Gaming Cafes**: Use `hybrid` for balanced performance
- **Testing**: Use `fifo` for predictable behavior
- **Large Files**: Use `largest` to prioritize keeping many small files
2. Configure your DNS:
    - If your on Windows and don't want a whole network implementation (THIS)[#windows-hosts-file-override]

### Windows Hosts File Override

1. Open Notepad as Administrator:
    - Click on the Start menu, type `Notepad`, right-click on Notepad, and select `Run as administrator`.

2. Open the Hosts File:
    - In Notepad, go to `File` > `Open`.
    - Navigate to `C:\Windows\System32\drivers\etc`.
    - Select `All Files` from the dropdown menu to see the hosts file.
    - Open the `hosts` file.

3. Add the Override Entry:
    - At the end of the file, add a new line with the IP address of your SteamCache2 server followed by `lancache.steamcontent.com`. For example:
      ```plaintext
      192.168.1.100 lancache.steamcontent.com
      ```
      Replace `192.168.1.100` with the actual IP address of your SteamCache2 server.

4. Save the Hosts File:
    - Save the changes by going to `File` > `Save`.

5. Flush DNS Cache (optional but recommended):
    - Open Command Prompt as Administrator.
    - Run the following command to flush the DNS cache:
      ```sh
      ipconfig /flushdns
      ```

6. Restart
    - Restart Steam or Restart Your PC

This will direct any requests to `lancache.steamcontent.com` to your SteamCache2 server.

## License

See the [LICENSE](LICENSE) file for details.
But just for clarity this covers all files in this project unless stated in the individual file.

## Acknowledgements

- Inspired by [Lancache.net](https://lancache.net/)
