Connect Your Curated Catalog to Sonatype Nexus
This guide covers how to connect your ActiveState Curated Catalog to a Sonatype Nexus Repository Manager remote repository. Once connected, developers in your organization can pull open source components directly from your secured catalog instead of the public internet.
Prerequisites
- Nexus with admin access.
- An ActiveState Curated Catalog with admin access to portal.activestate.com.
Setup steps
- Log in to portal.activestate.com.
- Click Connect to Catalog from either the Curated Catalogs home page or the Catalog page for a specific language.
- Click Issue Registry Credentials if this is your first time creating credentials, or Rotate Password if you need new credentials.
- Save the username, password, and remote/proxy URL. You'll enter these in Sonatype Nexus.
- This is the only time the password is available in plaintext. If you lose it, you'll need to reissue registry credentials.
- Log in to your Nexus instance (for example,
https://nexus.company.com) with admin credentials. - Click Settings (gear icon) in the top navigation, then in the left sidebar select Repository → Repositories.
- Click Create repository and select the language of your curated catalog.
- Configure the repository settings:
- Name: a unique identifier for this repository (for example,
activestate-platform). - Online: check "This repository accepts incoming requests."
- Storage: use the default blob store (or your preferred blob store). Enable Strict Content Type Validation.
- Proxy → Remote storage: the remote/proxy URL you saved in step 4. Do not add a
/simple/suffix. - Authentication: set Authentication Type to Username, enter the username (org UUID) and password you saved in step 4.
- HTTP request settings: enable Auto block, leave Blocked unchecked.
- Negative Cache: enable Not found cache enabled, and leave Not found cache TTL at its default (1440 minutes).
- Name: a unique identifier for this repository (for example,
- Click Create repository to save.
Test Package Access Through Nexus UI
ActiveState Curated components are not visible in the Nexus WebUI until after you pull and cache those components. Packages appear in the repository browser only after the first request for them.
- In the repository list, click your new repository (for example,
activestate-platform). - Click Browse in the left sidebar. Before any packages are requested, you'll see a message about the remote repository rather than a package list.
- Test access with pip:
export NEXUS_URL="https://nexus.company.com"export NEXUS_USER="<nexus-username>"export NEXUS_PASS="<nexus-password>"pip install --no-cache-dir --index-url "https://${NEXUS_USER}:${NEXUS_PASS}@nexus.company.com/repository/activestate-platform/simple/" <package-name>
- Expected behavior: Nexus contacts the ActiveState repository (you may see a 401 followed by a 200 in the logs — this is normal), retrieves package metadata, downloads and caches the package file, and pip installs it successfully.
- Return to Browse in the Nexus UI — the package should now appear under the repository tree.
Developer setup
Developers set up their environment as normal, pointing pip at your Nexus repository.
Option A: pip config (recommended)
pip config set global.index-url https://<nexus-host>/repository/activestate-platform/simple/
# If using authentication:
pip config set global.index-url https://<user>:<pass>@<nexus-host>/repository/activestate-platform/simple/
Option B: pip.conf / pip.ini
Linux/macOS: ~/.pip/pip.conf or /etc/pip.conf
[global]
index-url = https://<nexus-host>/repository/activestate-platform/simple/
Windows: %APPDATA%\pip\pip.ini
[global]
index-url = https://<nexus-host>/repository/activestate-platform/simple/
Option C: requirements.txt
--index-url https://<nexus-host>/repository/activestate-platform/simple/
package1
package2
Option D: Environment variable
export PIP_INDEX_URL="https://<nexus-host>/repository/activestate-platform/simple/"
Troubleshooting Nexus
Repository Returns 404
Check:
- Nexus logs:
<nexus-data>/log/nexus.log - Look for HTTP requests to
repository.activestate.com - Check for authentication errors (401) or authorization errors (403)
Common causes:
- Incorrect URL (should not have
/simple/suffix) - Wrong credentials
- Network/firewall blocking outbound HTTPS
Repository Returns 403 from Upstream
Cause: Incorrect ActiveState URL
Fix:
- Edit repository
- Verify URL:
https://repository.activestate.com/<org-id>/pypi - No trailing
/simple/
Nexus Shows "Unauthorized" for Repository
Cause: Incorrect credentials
Fix:
- Edit repository
- Re-enter username (should be your organization UUID)
- Re-enter password (get from ActiveState if lost)
- Save
- Test connection
Nexus Not Caching
Check:
- Repository settings → Ensure "Blocked" is unchecked
- Repository health check: System → Repository browser → View repository info
- Check blob store has space
Verify caching works:
- Install package:
pip install <package> - Check Nexus: Browse → Components → Select repository
- Should see package components listed
- Reinstall package (after
pip cache purge) - should be faster
Support
For Nexus-specific issues: Consult Sonatype documentation or support.
For ActiveState catalog issues: Contact ActiveState support with:
- Nexus version
- Repository configuration (screenshot)
- Nexus logs showing errors
- Package name having issues