qcacher is a service designed for long-term caching of various content networks related to gaming. It is designed not only to maximize efficiency of fast connections with multiple clients, but also deliver long-term reliability and resiliency of caching when paired with slow, or intermittent connections.
We currently support content caching and delivery for the following services:
- PlayStation Network (PS3 & PS4)
- Xbox Live (untested)
- Nintendo (3DS & Wii U)
- Blizzard (Starcraft 2, Hearthstone, etc.)
- Riot (League of Legends)
- Steam (Broadcasts, Games, etc.)
- Origin (EA)
- Hi-Rez (Smite, etc.)
- PlanetSide 2
- Twitch.tv
- Microsoft Windows updates
- NVIDIA driver updates
- Mozilla Firefox
There are 3 components to this service:
- nginx - a fast, lightweight, and efficient web server configured to cache and store content from supported delivery networks
- unbound - a flexible and fast DNS server configured to override records of the services we support
- sniproxy - proxies incoming HTTPS and TLS connections to overridden domains to ensure successful connections to the upstream service
NOTE: This section is still incomplete. A simple tutorial will be available in the coming weeks.
To get started with this application you will require docker and docker-compose. If you don't have these tools installed please see the section of installing them.
Further documentation and configurability is pending, but configure the
DNS_IP
in docker-compose.yml
to that of your host, and have clients use
the running machine as a DNS server.
Once you have Docker installed and the IP configured, it is a as simple as
running docker-compose up
in the root of the repository to start all the
required services.
NOTE: You will need Docker Compose 1.6.0+ and Docker Engine 1.10.0+ as a minimum to run this project.
Docker is best supported on Linux, you can probably find packages for your preferred distribution here.
Install Docker and boot2docker following the instructions on this page.
Not supported yet (we just haven't tried, give it a go, it might work). Pull requests very welcome.