Skip to content

Bootstrap Administrators

Bootstrap administrators are created automatically when RAMP starts for the first time. This ensures you have immediate administrator access without needing to manually create users in the database.

  • Auto-created on first startup
  • Supports all authentication providers (RAMP, OIDC, LDAP, Windows, ADFS)
  • Automatically assigned Administrator role
  • Multiple admins supported
  • Safe re-runs (won’t duplicate existing users)

  • Initial RAMP deployment
  • Disaster recovery scenarios
  • Automated deployments (Docker, Kubernetes)
  • Development/testing environments
  • Ensuring admin access after database restore
  • Adding users after initial setup (use web UI instead)
  • Production password management (change after first login)
  • Long-term credential storage (rotate immediately)

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "admin",
"Email": "admin@yourcompany.com",
"Password": "Passw0rd"
}
]
}
}
Terminal window
cd src/RAMP.API
dotnet run

Look for bootstrap confirmation:

[INFO] Checking bootstrap administrators...
[INFO] Bootstrap administrator created: admin
[INFO] Assigned Administrator role to: admin
  1. Navigate to RAMP login page
  2. Username: admin
  3. Password: Passw0rd
  4. Immediately change password after first login

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "admin",
"Email": "admin@yourcompany.com",
"Password": "SecurePassword123!"
}
]
}
}

Requirements:

  • Password must meet complexity requirements:
    • Minimum 8 characters
    • At least 1 uppercase letter
    • At least 1 lowercase letter
    • At least 1 digit
    • At least 1 special character

You can configure multiple administrators across different identity providers:

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "localadmin",
"Email": "localadmin@yourcompany.com",
"Password": "LocalAdmin@123"
},
{
"IdentityProvider": "OIDC",
"Username": "john.doe@yourcompany.com",
"Email": "john.doe@yourcompany.com"
},
{
"IdentityProvider": "LDAP",
"Username": "jsmith",
"Email": "jsmith@contoso.com"
}
]
}
}

Use Case:

  • Local admin for emergency access
  • OIDC/LDAP admins for regular use
  • Multiple team members as admins

Store passwords securely during development:

Terminal window
cd src/RAMP.API
# Store bootstrap password
dotnet user-secrets set "Bootstrap:Administrators:0:Password" "DevAdmin@123"

Or use appsettings.Development.json:

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "devadmin",
"Email": "devadmin@localhost",
"Password": "DevAdmin@123"
}
]
}
}

version: '3.8'
services:
ramp-api:
image: ramp-api:latest
environment:
- Bootstrap__Administrators__0__IdentityProvider=RAMP
- Bootstrap__Administrators__0__Username=admin
- Bootstrap__Administrators__0__Email=admin@yourcompany.com
- Bootstrap__Administrators__0__Password=${RAMP_ADMIN_PASSWORD}
ports:
- "5165:8080"
Terminal window
RAMP_ADMIN_PASSWORD=SecureAdminPassword123!
Terminal window
docker-compose up -d

apiVersion: v1
kind: Secret
metadata:
name: ramp-bootstrap-secret
type: Opaque
stringData:
admin-password: "SecureAdminPassword123!"
apiVersion: apps/v1
kind: Deployment
metadata:
name: ramp-api
spec:
template:
spec:
containers:
- name: ramp-api
image: ramp-api:latest
env:
- name: Bootstrap__Administrators__0__IdentityProvider
value: "RAMP"
- name: Bootstrap__Administrators__0__Username
value: "admin"
- name: Bootstrap__Administrators__0__Email
value: "admin@yourcompany.com"
- name: Bootstrap__Administrators__0__Password
valueFrom:
secretKeyRef:
name: ramp-bootstrap-secret
key: admin-password

  1. RAMP API starts
  2. Reads Bootstrap:Administrators configuration
  3. For each administrator:
    • Checks if user already exists (by username)
    • If user doesn’t exist:
      • Creates new user account
      • Sets identity provider
      • For RAMP users: hashes and stores password
      • Assigns Administrator role
    • If user exists:
      • Skips creation (no duplicate)
      • Ensures Administrator role is assigned
  4. Logs results

Bootstrap is safe to run multiple times:

  • Existing users are not modified
  • No duplicate users created
  • Administrator role is ensured
  • Passwords are NOT updated on re-run

Check 1: Verify configuration syntax

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "admin",
"Email": "admin@example.com",
"Password": "Passw0rd"
}
]
}
}

Check 2: Check application logs for bootstrap messages

Check 3: Verify password requirements (RAMP users only)

  • Minimum 8 characters
  • Uppercase + lowercase + digit + special character

Check 1: Verify username/password — usernames are case-sensitive, no extra spaces

Check 2: Check database

SELECT * FROM Users WHERE Username = 'admin';

Check 3: Verify role assignment

SELECT u.Username, ur.RoleId
FROM Users u
JOIN UserRoles ur ON u.Id = ur.UserId
WHERE u.Username = 'admin';

Error: “Password must have at least one uppercase letter”

Ensure password contains:

  • Uppercase: A-Z
  • Lowercase: a-z
  • Digit: 0-9
  • Special: !@#$%^&*()
  • Length: 8+ characters

Example valid passwords:

  • Passw0rd
  • SecurePassword1!
  • Bootstrap#2024

  1. Log in with bootstrap credentials
  2. Navigate to Settings -> Change Password
  3. Set a strong, unique password
  4. Store securely (password manager)

2. Remove Bootstrap Config After Initial Setup

Section titled “2. Remove Bootstrap Config After Initial Setup”
{
"Bootstrap": {
"Administrators": []
}
}

Or delete the entire Bootstrap section after first deployment.

  • Minimum 12 characters (not just 8)
  • Mix of character types
  • Avoid common words/patterns
  • Use password generator
  • Never commit passwords to source control
  • Use environment variables or secrets management
  • Rotate credentials after initial setup
  • Create only the minimum number needed
  • Prefer external IdP accounts over RAMP native
  • Use individual accounts (not shared)

Check audit logs after deployment:

SELECT * FROM AuditLogs
WHERE Action LIKE '%Bootstrap%'
ORDER BY Timestamp DESC;

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "admin",
"Email": "admin@yourcompany.com",
"Password": "ChangeMe@123"
}
]
}
}

After deployment:

  1. Log in as admin
  2. Change password
  3. Create individual user accounts
  4. Remove bootstrap config
{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "OIDC",
"Username": "john.doe@yourcompany.com",
"Email": "john.doe@yourcompany.com"
},
{
"IdentityProvider": "RAMP",
"Username": "emergency",
"Email": "emergency@yourcompany.com",
"Password": "EmergencyAccess@123"
}
]
}
}

Use case: Primary access via OIDC, local admin for IdP outages.

appsettings.Development.json:

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "devadmin",
"Email": "devadmin@localhost",
"Password": "DevAdmin@123"
}
]
}
}

Yes, but use the web UI (Admin -> Users) instead of bootstrap config. Bootstrap is only for initial setup.

Reset it in configuration and restart RAMP. Existing password will NOT be updated automatically — you’ll need to reset via database.

Yes. Bootstrap-created users are regular users. Delete via Admin -> Users in the web UI.

Do bootstrap admins count toward license limits?

Section titled “Do bootstrap admins count toward license limits?”

Yes. Bootstrap admins are regular user accounts and count toward any license limits (if applicable).