Satis — Private Package Registry¶
We run a self-hosted Satis instance at packagist.subscribed.build as our private Composer registry. It serves packages under the barberklingen/*, barberklingen-premium/*, and subscribed/* vendor namespaces.
Access¶
IP restriction
The Satis registry is IP-restricted via Cloudflare Access policies. If you are working remotely or cannot reach it, enable the VPN first.
Adding Satis to a project¶
Any project that requires packages from our private namespaces must add Satis as a repository source in composer.json:
{
"repositories": [
{
"type": "composer",
"url": "https://packagist.subscribed.build",
"only": [
"barberklingen/*",
"barberklingen-premium/*",
"subscribed/*"
]
}
]
}
The only field tells Composer to use Satis exclusively for those namespaces and fall through to packagist.org for everything else. This keeps resolution fast and avoids unnecessary lookups.
After adding the repository, require packages as normal:
CI/CD¶
In GitHub Actions, the runner must be able to reach packagist.subscribed.build. Our CI runners are allowlisted in Cloudflare — no VPN needed in pipelines.
If you see authentication or connectivity errors in CI, check that the workflow is running on our standard ubuntu-latest runners and that no custom network policies are blocking outbound HTTPS.
Troubleshooting¶
Could not find package in local development
You are likely off VPN. Connect and run composer install again.
Could not find package in CI
Check that composer.json includes the Satis repository block above, and that the package has been published to Satis. Newly published packages may take a few minutes to index.
The "https://packagist.subscribed.build" file could not be downloaded
Network or Cloudflare policy issue. Verify VPN is active locally, or check the Cloudflare Access logs if the issue is in CI.