Troubleshooting
Common errors and how to fix them: 401, 403, 404, docker login failures, cache issues, and slow pulls.
Using an AI assistant? Give it this file.
/llms.md is a single Markdown file covering installation, configuration, quickstart, clients, upstreams, permissions, TLS, and production deployment. Copy it and paste it into your AI chat, or tell the AI to fetch https://drevnix.tech/llms.md.
Troubleshooting
401 Unauthorized
Cause: Invalid client credentials, or the client has expired.
Fix:
- Verify the client ID and password are correct
- Check the client’s expiration date in the portal. Expired clients always return
401 - Confirm you are sending HTTP Basic Auth (not a bearer token)
# Test authentication manually
curl -v -u client-id:password http://drevnix.company.com:8000/v2/
403 Forbidden
Cause: The client authenticated successfully but has no permission matching the requested repository.
Fix:
- In the portal, go to Clients → select the client → view its permissions
- Check whether any permission pattern covers the repository being pulled
- Remember: wildcards only work at the end.
ghcr/myorg/*is valid,ghcr/*/apiis not - Add a permission if one is missing
404 Not Found
Cause: The upstream ID in the pull URL does not exist in Drevnix.
Fix:
- Check your pull URL format:
drevnix-host:8000/<upstream-id>/<repo>:<tag> - Verify the upstream ID exists in the portal under Upstreams
- IDs are case-sensitive
docker login fails
Symptom: Error response from daemon: Get "https://drevnix.company.com/v2/": ...
Fix:
- Confirm the proxy port is reachable:
curl -v http://drevnix.company.com:8000/v2/ - If using HTTPS, verify the TLS certificate is valid and trusted
- If using HTTP for local development only, add the host to Docker’s insecure registries:
// /etc/docker/daemon.json
{"insecure-registries": ["drevnix.company.com:8000"]}
Then restart the Docker daemon.
Cache not working
Symptom: Pulls are still slow; no entries appear in the portal Cache page.
Fix:
- Confirm
CACHE_ENABLED=trueis set and the container was restarted after adding it - Confirm
CACHE_DIRexists and is writable - The admission policy requires a blob to be pulled at least 3 times within 10 minutes (or 10 times within 1 hour) before it is cached. Pull the same image multiple times to trigger caching
- Check the portal Cache page for disk usage and entry count
Database connection issues
Symptom: Drevnix fails to start; logs show a JDBC connection error.
Fix:
- Confirm PostgreSQL is running and reachable from the Drevnix container
- Check
JDBC_URLis correct. Credentials are embedded in the URL (e.g.jdbc:postgresql://user:password@host:5432/drevnix) - Test the connection:
psql -h host -U username -d drevnix
Slow pulls
Cause: Cache miss on first pull, or admission threshold not yet met.
Fix:
- Enable the blob cache. Subsequent pulls of the same layer will be served from disk
- If cache is enabled but pulls are still slow, the admission threshold may not be met yet. Try lowering
CACHE_MIN_HITS_SHORTto1temporarily - Check network connectivity to the upstream registry from the Drevnix host
Lost admin access
If all super-admin portal accounts are locked out, run init-admin to create a new super-admin account:
docker exec -it drevnix java -jar /opt/drevnix.jar init-admin --config=/etc/drevnix/config.edn
This does not remove existing accounts. It just adds a new one.
Checking logs
docker logs drevnix --tail 100 -f
Look for ERROR and WARN level entries. Most issues are surfaced clearly in the logs on startup or on the failing request.