A community driven UI for Pulp.
You can follow the pulp-oci-images quickstart, TLDR:
mkdir -p ~/pulp-backend-oci/{settings/certs,pulp_storage,pgsql,containers}
cd ~/pulp-backend-oci/
echo "
CONTENT_ORIGIN='http://$(hostname):8080'
ANSIBLE_API_HOSTNAME='http://$(hostname):8080'
ANSIBLE_CONTENT_HOSTNAME='http://$(hostname):8080/pulp/content'
" >> settings/settings.pycd ~/pulp-backend-oci/
podman run --publish 8080:80 \
--replace --name pulp \
--volume "$(pwd)/settings":/etc/pulp \
--volume "$(pwd)/pulp_storage":/var/lib/pulp \
--volume "$(pwd)/pgsql":/var/lib/pgsql \
--volume "$(pwd)/containers":/var/lib/containers \
docker.io/pulp/pulpcurl localhost:8080/pulp/api/v3/status/ | jqor open http://localhost:8080/pulp/api/v3/status/
podman exec -it pulp pulpcore-manager reset-admin-password --password admindocker exec -it compose-pulp_api-1 pulpcore-manager reset-admin-password --password adminpip install pulp-cli[pygments]
pulp config create --username admin --base-url http://localhost:8080 --password admin
pulp --help
pulp user listYou can clone the frontend from https://github.com/pulp/pulp-ui .
npm install
npm run startand open http://localhost:8002/ 🎉 :)
If your API listens elsewhere, you can use API_PROXY=http://elsewhere:12345 npm run start instead. Do note that the server at elsewhere has to be configured to allow CORS requests for localhost (where UI actually listens); using something like changeOrigin is out of scope for pulp-ui, and breaks pulp API URLs (because the domains are based on the Origin header). Do NOT use webpack proxy in production.
The UI builds produced by npm run build can be further configured by serving a /pulp-ui-config.json alongside the built UI.
(Note it has to be mapped at /, not just wherever index.html is served from.)
API_BASE_PATH- defaults to/pulp/api/v3/- change when using domains or a different pathUI_BASE_PATH- defaults to/ui/- change when only serving index in a subdirectory, or want different browser path prefixUI_EXTERNAL_LOGIN_URI- defaults to nothing. When unset, Pulp UI uses its built-in HTTP Basic login. Set it to the backend login endpoint, for example/auth/login/, to enable cookie-based external authentication such as SSO. Pulp UI appends a URL-encodednextquery parameter so the backend can return the browser to the requested UI route after authentication. In this mode the UI validates the Django session after every page load and does not persist a session identity or password in browser storage. The UI and API must share an origin, or be configured so the browser sends the Django session cookie to both. The backend must expose its standard browsable users API and Django logout endpoint. Session detection reads only the authenticated username shown in the users API header; it does not depend on task permissions.EXTRA_VERSION- an extra version string to display in about modal