When “Snap Update” Becomes a Bandwidth Nightmare
Whether you manage Web Servers or K8s clusters, Snap is a familiar tool for installing Docker or LXD. However, it has one critical weakness when deployed at scale: it consumes a massive amount of internet bandwidth.
Let’s do the math: Your system has 50 servers. Every time Docker releases a 200MB update, all 50 machines will simultaneously “eat up” 10GB of data from Canonical’s servers. The result? Your office network hits a bottleneck, and you’re left watching progress bars crawl. Controlling which machine has been updated and which is still on the old version also becomes incredibly messy.
Back when I was an Admin for an Edge Computing project with 30 Ubuntu nodes, I once spent an entire week just dealing with timeout errors during package downloads. That’s when Snap Store Proxy solved the problem completely. It helps reduce outgoing internet traffic by up to 90% and provides centralized management in a heartbeat.
How Does Snap Store Proxy Work?
Simply put, Snap Store Proxy acts as a local cache located right within your internal network. Instead of each client machine downloading data from the internet, they ask the Proxy first. If the Proxy already has the cached version, it returns it immediately at LAN speeds (usually 1Gbps instead of sluggish internet speeds). If not, the Proxy downloads it once and then distributes it to all other machines.
Another extremely valuable feature is “Validation Sets.” This feature allows you to lock software versions across the entire system, ensuring every server runs the exact version that has been tested.
Required Hardware Configuration
You should use a clean Ubuntu server (preferably 22.04 or 24.04 LTS). The specs don’t need to be high-end, but pay attention to the storage:
- CPU: 2 Cores.
- RAM: 4GB.
- Disk: 40GB – 100GB dedicated, depending on the number of Snaps you need to cache.
- OS: Ubuntu Server.
Deployment Steps for Snap Store Proxy
Step 1: Install the Proxy Package
First, update your system and install the snap-store-proxy package:
sudo apt update && sudo apt upgrade -y
sudo snap install snap-store-proxy
Once installed, check if the services are running stably with the command:
snap-store-proxy status
Step 2: Register with Canonical
For the Proxy to function, you need to link it to Canonical’s system via an Ubuntu One account. If you don’t have one, register at login.ubuntu.com.
Start the registration process with the command:
sudo snap-store-proxy register
A code will appear on the screen. Simply visit the link displayed in the terminal, log in, and enter this code. After confirmation, the system will grant you a unique Store ID.
Step 3: Set Up the Domain
The Proxy runs on port 80 by default. For convenience, you should configure an internal DNS record (e.g., snap-proxy.local) pointing to this Proxy machine’s IP.
sudo snap-store-proxy config domain=snap-proxy.yourdomain.com
Configuring Client Machines to Use the Proxy
Now it’s time to instruct the client machines to stop downloading directly from the internet. On each client machine, perform these two steps:
1. Load the Trust Certificate (Assertion):
The client machine needs an identification file to trust and work with the internal Proxy.
curl -s http://<PROXY_IP>/v2/auth/store/assertions | sudo snap ack /dev/stdin
2. Declare the Store ID:
Take the Store ID you received in Step 2 and assign it to the client machine’s configuration:
sudo snap set core proxy.store=<YOUR_STORE_ID>
3. For Client Machines Without Internet Access:
If the client machine is in a completely isolated network, force it to use the Proxy for all HTTP/HTTPS requests:
sudo snap set core proxy.http="http://<PROXY_IP>"
sudo snap set core proxy.https="http://<PROXY_IP>"
Verifying Real-World Performance
Try installing a heavy Snap like VLC or MicroK8s on the first client machine. Then, install that same Snap on a second client machine. You will see the download speed on the second machine is incredibly fast, almost instantaneous, because the data is pulled over a 1000Mbps LAN.
Pro tip: You can go to the /var/snap/snap-store-proxy/common/ directory to see the cached files. Witnessing the internet bandwidth saved each month will definitely keep your boss happy.
Crucial Lessons from the Field
After years of administration, I’ve gathered a few points to ensure the system doesn’t “crash” unexpectedly:
- Don’t let the disk get full: If the disk hits 100%, the Proxy will hang, and client machines won’t be able to install anything. Set an alert threshold at 80% capacity.
- Automatic Updates: The Proxy package itself updates via Snap. Occasionally run the
statuscommand to ensure all services are still in an Active state. - Firewall Security: Always use UFW to block unknown IPs. Only allow internal IP ranges to access ports 80/443 of the Proxy to avoid unintended bandwidth exploitation.
Setting up Snap Store Proxy might take a bit of effort during the initial registration, but the long-term benefits are enormous. It allows you to fully master your Ubuntu infrastructure, save on bandwidth costs, and speed up software deployment. If you are managing over 10 Ubuntu machines, you should deploy it today!

