Skip to main content

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

Setup steps

  1. Log in to portal.activestate.com.
  2. Click Connect to Catalog from either the Curated Catalogs home page or the Catalog page for a specific language.
  3. Click Issue Registry Credentials if this is your first time creating credentials, or Rotate Password if you need new credentials.
  4. Save the username, password, and remote/proxy URL. You'll enter these in Sonatype Nexus.
    1. This is the only time the password is available in plaintext. If you lose it, you'll need to reissue registry credentials.
  5. Log in to your Nexus instance (for example, https://nexus.company.com) with admin credentials.
  6. Click Settings (gear icon) in the top navigation, then in the left sidebar select Repository → Repositories.
  7. Click Create repository and select the language of your curated catalog.
  8. Configure the repository settings:
    1. Name: a unique identifier for this repository (for example, activestate-platform).
    2. Online: check "This repository accepts incoming requests."
    3. Storage: use the default blob store (or your preferred blob store). Enable Strict Content Type Validation.
    4. Proxy → Remote storage: the remote/proxy URL you saved in step 4. Do not add a /simple/ suffix.
    5. Authentication: set Authentication Type to Username, enter the username (org UUID) and password you saved in step 4.
    6. HTTP request settings: enable Auto block, leave Blocked unchecked.
    7. Negative Cache: enable Not found cache enabled, and leave Not found cache TTL at its default (1440 minutes).
  9. Click Create repository to save.

Test Package Access Through Nexus UI

note

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.

  1. In the repository list, click your new repository (for example, activestate-platform).
  2. 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.
  3. 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>
  4. 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.
  5. 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:

  1. Nexus logs: <nexus-data>/log/nexus.log
  2. Look for HTTP requests to repository.activestate.com
  3. 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:

  1. Edit repository
  2. Verify URL: https://repository.activestate.com/<org-id>/pypi
  3. No trailing /simple/

Nexus Shows "Unauthorized" for Repository

Cause: Incorrect credentials

Fix:

  1. Edit repository
  2. Re-enter username (should be your organization UUID)
  3. Re-enter password (get from ActiveState if lost)
  4. Save
  5. Test connection

Nexus Not Caching

Check:

  1. Repository settings → Ensure "Blocked" is unchecked
  2. Repository health check: System → Repository browser → View repository info
  3. Check blob store has space

Verify caching works:

  1. Install package: pip install <package>
  2. Check Nexus: Browse → Components → Select repository
  3. Should see package components listed
  4. 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