| Crates.io | minippa |
| lib.rs | minippa |
| version | 1.0.0 |
| created_at | 2025-07-06 18:32:27.718659+00 |
| updated_at | 2025-07-06 18:32:27.718659+00 |
| description | A single-binary executable that acts as a Debian package server |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1740356 |
| size | 51,182 |
minippaThis project provides a single-binary executable that acts as a Debian package server.
Pick the one you like:
cargo install minippaThe DEB package contains a systemd service, which should slightly simplify your setup.
The app reads the config file from:
Here's an example of what must be inside:
port = 4242
token = "sekr3t"
dir = "/data-dir"
Then generate a GPG key with minippa --generate-key. The key that it generates is, of course, random every time but the metadata is static (email = "owner@this-repo.org" and name = "Owner Name").
Then run the binary. It will start listening for incoming requests on "localhost:4242" (so you need a reverse proxy, something like Caddy or NGINX) and by sending packages to the /upload endpoint you'll import them:
$ curl -F "wget-1.2.3.deb=@wget-1.2.3.deb" -H "Token: sekr3t" "https://external-name"
Package has been successfully processed
Where:
https://external-name is the URL of your machine-F "foo=@bar" means "create a chunk called foo and inside it attach a file called bar"-H "Token: ..." is where you attach a header with the token from your config file. If the token doesn't match, the server will reject your request.On any client machine that has access to the server via HTTP(S), run as sudo
$ curl https://external-name/install.sh | bash
Then run apt update and you should see how apt hits your server. Now you can apt install wget (or any of the packages that you uploaded).