Sonatype Nexus
Nexus Repository Manager Setup
Audience: Customer administrators setting up Sonatype Nexus to proxy the ActiveState Curated Catalog.
Prerequisites
- Sonatype Nexus Repository Manager installed (Community or Pro edition)
- Version: 3.x recommended (tested with 3.87.0)
- Admin access to Nexus
- ActiveState catalog credentials:
- Repository URL
- Username (your organization UUID)
- Password
Step-by-Step Configuration
1. Login to Nexus
Navigate to your Nexus instance (e.g., https://nexus.company.com) and login with admin credentials.
2. Create PyPI Proxy Repository
- Click Settings (gear icon) in top navigation
- In left sidebar: Repository → Repositories
- Click Create repository button
- Select recipe: pypi (proxy)
3. Configure Repository Settings
Name:
activestate-platform
(or your preferred name - be descriptive)
Online:
- ✅ Check "This repository accepts incoming requests"
Storage:
- Blob store: default (or your preferred blob store)
- Strict Content Type Validation: ✅ Enabled (recommended)
Proxy:
- Remote storage:
IMPORTANT:
https://repository.activestate.com/<YOUR-ORG-ID>/pypi- Replace
<YOUR-ORG-ID>with your actual organization UUID - Do NOT add
/simple/suffix - Example:
https://repository.activestate.com/b5865a43-1f24-48df-b6f3-8c932c7aae29/pypi
- Replace
Authentication (expand section):
- Authentication Type: Username
- Username:
<YOUR-ORG-ID>(same UUID as in URL) - Password: (paste password provided by ActiveState)
HTTP request settings:
- Auto block enabled: ✅ Enabled
- Blocked: ☐ Unchecked
Negative Cache:
- Not found cache enabled: ✅ Enabled
- Not found cache TTL: 1440 (minutes, default is fine)
4. Save Configuration
Click Create repository button at bottom.
5. Verify Repository
- In repository list, click on your new repository (
activestate-platform) - Click Browse in left sidebar
- Should see message about remote repository (packages appear on first access)
6. Test Access
Option A: Via Nexus Web UI
- Go to Browse → Browse
- Select your repository
- After first access, should see package index appear
Option B: Via pip
# Replace with your Nexus URL and credentials
export NEXUS_URL="https://nexus.company.com"
export NEXUS_USER="admin"
export NEXUS_PASS="admin123"
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 ActiveState repository (may see 401 then 200 in logs - this is normal)
- Package metadata retrieved
- Package file downloaded and cached
- pip installs package successfully
7. Configure pip to Use Nexus (End Users)
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/"
Advanced Configuration
Optional: Create PyPI Group Repository
If you need to combine ActiveState catalog with your internal packages:
- Create repository → pypi (hosted) for your internal packages
- Create repository → pypi (group)
- Add members:
activestate-platform(proxy)- Your internal hosted repository
- DO NOT add public PyPI proxy to this group
- Configure pip to use group repository URL
Security: Anonymous Access
By default, Nexus may allow anonymous access. Consider:
Disable anonymous:
- Security → Anonymous Access
- Uncheck "Allow anonymous users to access the server"
- Developers must authenticate to Nexus
Create dedicated pip user:
- Security → Users → Create user
- Grant
nx-repository-view-pypi-*-browseandnx-repository-view-pypi-*-readroles - Distribute Nexus credentials (not ActiveState credentials) to developers
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