RuckZuck Cache
source link: https://rzander.azurewebsites.net/ruckzuck-cache/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
RuckZuck Cache
Roger Zander
Aug.2019: This content is obsolete and replaced by https://github.com/rzander/ruckzuck/wiki/RuckZuck-Proxy-Server
All the RuckZuck.tools (ruckzuck.exe, rzupdate.exe and the OneGet Provider) where designed to get the software binaries from the vendors web-site in the internet. This is fine for a single device at home, but if you have multiple devices, you may want to share the downloaded content to reduce network traffic...
Overview
RZCache is a Web-Service that works like a Proxy for all the RuckZuck-Tools, to have a single connection to the Internet.
Clients will find their RZCache Server via broadcast (UDP:5001) or they can be configured via Policy (registry) to connect a specific RZCache Server.
RZCache Servers can build a chain to follow the network topology.
Setup RZCache
The setup of an RZCache Server is very simple as the Service is "just" a Website and the cache is fully file based.
Requirements
- Docker. The Service is currently only available as a Docker container
- Container must be able to run an aspnetcore v2.0.0 Image which is based on Linux (Jessie)
Install
If you have Docker up and running, just pull the Image from hub.docker.com :docker pull zanderr/ruckzuck
Configuration
Variables
If you are not familiar with configuring docker containers, you can install
Kitematic to have a simple UI for the configuration:
docker run -e "localURL=http://192.168.2.146:5000" zanderr/ruckzuck
- localURL (required): specify the URL how clients can access the RZCache Service. Note: All File-Downloads will be redirected to this URL and no longer from the SW Vendor.
- RZUser: RuckZuck User Account. If specified, you can authenticate all child tools with your account. Leave it empty if the client tools can have custom accounts or run anonymous.
- RZPW: Password for the RuckZuck Account.
- Parent Server: leave the default value if the RZCache Server is connected to the Internet or specify the URL of a parent RZCache Server.
- CatalogTTL (hours): Specify how long (in hours) catalog-items are cached. Note: binaries for Software are not affected.
Ports
RZCache is a Web-Service that is running internally (in the Container) on port TCP:5000, but you can expose this port to any free port on your Host (e.g. Port 80). To allow Clients to find their RZCache Server automatically, the Port UDP:5001 must be published on UDP:5001.
Content Store
RZCache does store all the cached Content in "/app/wwwroot". You can mount a directory from your physical host on "/app/wwwroot" to store the cached content in the mounted Folder. This is helpful if you want to modify or preload some of the data or if you want the backup/restore the Cache.
Note: configuration changes may clean your conatiner. It's recommended to store all data on an external volume.
Script Example
# Pull the Image from hub.docker.com...
docker pull zanderr/ruckzuck
# start the Container, set the Varibale localURL, Expose the ports
# and redirect the Content to a local Folder (d:\rzcache)...
docker run --name RZCache -d -e "localURL=http://192.168.2.146:5000" -p 5000:5000/tcp -p 5001:5001/udp -v d:/rzcache:/app/wwwroot zanderr/ruckzuck
Testing
To check if the Web-Service is running, just browse the "localURL" and you will get the following message:"RuckZuck-Proxy (c) 2017 by Roger Zander; Version: 1.0.0"
caching details
RZCache is a file based cache the files are stored within the container in the Folder "wwwroot"
once you start a fresh docker Image, there are no files stored. A Client must request Content before you will see some files...- rzcat.json : The RuckZuck Catalog, with all SW entries. RuckZuck.exe will Show all Items from this catalog.
- Icons Folder: stores all the Icon used for RuckZuck.exe
- rzsw Folder: contains a .json per {productname}{version}{vendor} with all the details for a product.
- files Folder: stores the Software binaries in a subfolder for each {contentid}
Known Limitation/Issues with current Version (1.0.0)
- First download from a Client will load the data from WWW and triggers a second download to the cache. The item is downloaded twice!
- SoftwareUpdate detection traffic cannot be cached as it requires access to the RuckZuck.tools backend. The request will be forwarded from RZCache to the parent Server.
changes on clients
- the latest Version of ruckzuck.exe and rzupdate.exe will automaticall discover the RZCache Server via UDP broadcast. To prevent this, create a registry key to specify the WebService:
#region WebService
#Create the key if missing
If((Test-Path 'HKLM:\Software\Policies\RuckZuck') -eq $false ) { New-Item -Path 'HKLM:\Software\Policies\RuckZuck' -force -ea SilentlyContinue }
#Enable Settings
Set-ItemProperty -Path 'HKLM:\Software\Policies\RuckZuck' -Name 'WebService' -Value 'http://192.168.2.146:5000' -ea SilentlyContinue
#endregion
- RuckZuck Provider for OneGet: tbd.
What's next ?
This is the first release of RZCache. Please provide Feedback and Ideas on github.com/rzander/ruckzuck.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK