Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: How to setup a local network cache for Flatpak
Author: Solène
Date: 05 April 2023
Tags: linux flatpak efficiency
Description: In this article, you will learn how to setup a LAN cache
for Flatpak to speed up updates
# Introduction
As you may have understood by now, I like efficiency on my systems,
especially when it comes to network usage due to my poor slow ADSL
internet connection.
Flatpak is nice, I like it for many reasons, and what's cool is that it
can download only updated files instead of the whole package again.
Unfortunately, when you start using more and more packages that are
updated daily, and which require subsystems like NVIDIA drivers, MESA
etc... this adds up to quitea lot of daily downloads, and multiply that
by a few computers and you gets a lot of network traffic.
But don't worry, you can cache it on your LAN to download updates only
once.
# Setup
As usual for this kind of job, we will use Nginx on a local server on
the network, and configure it to act as a reverse proxy to the flatpak
repositories.
This requires modifying the URL of each flatpak repository on the
machines, it's a one time operation.
Here is the configuration you need on your Nginx to proxy Flathub:
```nginx
map $status $cache_header {
200 "public";
302 "public";
default "no-cache";
}
server {
listen 0.0.0.0:8080; # you may want to listen on port 80, or add TLS
server_name my-cache.local; # replace this with your hostname, or system IP
# flathub cache
set $flathub_cache https://dl.flathub.org;
location /flathub/ {
rewrite ^/flathub/(.*) /$1 break;
proxy_cache flathub;
proxy_cache_key "$request_filename";
add_header Cache-Control $cache_header always;
proxy_cache_valid 200 302 300d;
expires max;
proxy_pass $flathub_cache;
}
}
proxy_cache_path /var/cache/nginx/flathub/cache levels=1:2
keys_zone=flathub:5m
max_size=20g
inactive=60d
use_temp_path=off;
```
This will cause nginx to proxy requests to the flathub server, but keep
files in a 20 GB cache.
You will certainly need to create the `/var/cache/nginx/flathub`
directory, and make sure it has the correct ownership for your system
configuration.
If you want to support another flatpak repository (like Fedora's), you
need to create a new location, and new cache in your nginx config.
# Client configuration
On each client, you need to change the URL to reach flathub, in the
example above, the URL is `http://my-cache.local:8080/flathub/repo/`.
You can change the URL with the following command:
```shell command
flatpak remote-modify flathub --url=http://my-cache.local:8080/flathub/repo/`
```
Please note that if you add flathub repo, you must use the official URL
to have the correct configuration, and then you can change its URL with
the above command.
# Revert the changes
If you don't want to use the cache anymore , just revert the flathub
url to its original value:
```shell command
flatpak remote-modify flathub --url=https://dl.flathub.org/repo/
```
# Conclusion
Our dear nginx is still super useful as a local caching server, it's
super fun to see some updates going at 100 MB/s from my NAS now.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.