| Action | read | write | admin |
|---|---|---|---|
| Install and pull | |||
| Publish and push | |||
| Set up the repository and its rights |
Three rights per repository
read, write or admin, granted user by user. The server checks them on every route; they are not just hidden in the interface.
Hosted repositories, proxies and groups, quotas, retention, dependency audits and image scans: one Rust binary and one PostgreSQL. In production, the server and its database take about fifty MiB of memory together.
$docker compose up -d --buildNo third-party account, no telemetry sent. See the architecture.
$ kubectl top pod -n artiferris --containers
POD NAME CPU(cores) MEMORY(bytes)
artiferris-7f497fb86-pcft9 artiferris-api 2m 5Mi
artiferris-postgres-7f7784f89f-rcd4s postgres 9m 48MiFour typical situations, and how ArtiFerris answers them.
registry.npmjs.org or Docker Hub: the first request fetches the package upstream, the next ones serve it from ArtiFerris. A group puts that proxy and your packages behind a single address.Excerpts of the real interface, not mock-ups. The interface exists in French, English, Spanish, Italian and German.
Feature 1 of 8
One process, six crates, a hexagonal architecture: the domain knows nothing of the database, and each registry protocol has its own crate.
Fig. 1 One instance. The orange line follows an install, from the client to the upstream registry a proxy asks.
Worth knowing before you deploy.
What is planned, with no version yet. An item is only ticked once it ships.
The public instance lets you discover the product. Your instance keeps your packages.
git clone https://github.com/Masmarino/ArtiFerris.git
cd ArtiFerris
cp .env.example .env
# set POSTGRES_PASSWORD, JWT_SECRET, SECRETS_ENCRYPTION_KEY, PUBLIC_URL and the first admin in .env
docker compose up -d --build