Host a reverse proxy to postmarketOS and Alpine Repositories
Jump to navigation
Jump to search
When you don't have the access to Internet, it would be annoying to setup route and packet forwarding/masquerading on a PC. What if you just want to install a package from apk repositories, but it depends on a lot of packages? This guide shows you how to setup a reverse proxy to APK repositories on PC.
Contents
Nginx
We use nginx for example.
Installation
Debian/Ubuntu
# apt-get install nginx
Fedora/RHEL/CentOS/Rocky
# dnf install nginx
Alpine/postmarketOS
# apk add nginx
Configuration
Reverse proxy
The configs could be stored in /etc/nginx/conf.d/
or /etc/nginx/http.d/
.
In this config we use port 8000
.
# nano /etc/nginx/http.d/apk_reverse_proxy.conf
server {
listen 8000;
listen [::]:8000;
location /alpine {
proxy_pass http://dl-cdn.alpinelinux.org/alpine;
}
location /postmarketos {
proxy_pass http://mirror.postmarketos.org/postmarketos;
}
}
Local repository server
Like the other HTTP servers, Nginx can serve a local path.
Note that a standard HTTP port 80
is used in this example.
# nano /etc/nginx/http.d/apk_local_repo.conf
server {
listen 80;
listen [::]:80;
location /local {
alias /home/user/.local/var/pmbootstrap/packages;
autoindex on;
}
}
All-in-one
# nano /etc/nginx/http.d/apk_aio.conf
server {
listen 80;
listen [::]:80;
location /alpine {
proxy_pass http://dl-cdn.alpinelinux.org/alpine;
}
location /postmarketos {
proxy_pass http://mirror.postmarketos.org/postmarketos;
}
location /local {
alias /home/user/.local/var/pmbootstrap/packages;
autoindex on;
}
}
Restart
Restart to apply the changes.
systemd distros
# systemctl restart nginx
OpenRC distros
# rc-service nginx restart
Add the repository
# nano /etc/apk/repositories
http://172.16.42.2/local/edge
http://172.16.42.2:8000/postmarketos/master
http://172.16.42.2:8000/alpine/edge/main
http://172.16.42.2:8000/alpine/edge/community
http://172.16.42.2:8000/alpine/edge/testing
http://mirror.postmarketos.org/postmarketos/master
http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
http://dl-cdn.alpinelinux.org/alpine/edge/testing
Install packages
# apk update
fetch http://172.16.42.2/local/edge/aarch64/APKINDEX.tar.gz
fetch http://172.16.42.2:8000/postmarketos/master/aarch64/APKINDEX.tar.gz
fetch http://172.16.42.2:8000/alpine/edge/main/aarch64/APKINDEX.tar.gz
fetch http://172.16.42.2:8000/alpine/edge/community/aarch64/APKINDEX.tar.gz
fetch http://172.16.42.2:8000/alpine/edge/testing/aarch64/APKINDEX.tar.gz
2022-10-21 23:17:22.167857 [http://172.16.42.2/local/edge]
2022-10-22 12:50:04.451869 [http://172.16.42.2/postmarketos/master]
v20220809-6418-g42ed31be94 [http://172.16.42.2/alpine/edge/main]
v20220809-6433-g8fe86c9aea [http://172.16.42.2/alpine/edge/community]
v20220809-6434-geafcdb2299 [http://172.16.42.2/alpine/edge/testing]
# apk add postmarketos-ui-phosh