Skip to content

Installation Guide

This guide provides detailed instructions for installing and configuring TelcoAPI in your environment.

System Requirements

Minimum Requirements

  • Node.js 18.x or later
  • npm 7.x or yarn 1.22.x
  • 2GB RAM
  • 1GB free disk space
  • Node.js 20.x
  • npm 9.x or yarn 2.x
  • 4GB RAM
  • 5GB free disk space
  • SSD storage

Installation Methods

NPM Installation

# Install the SDK
npm install @telco-api/sdk

# Install optional components
npm install @telco-api/diameter @telco-api/ss7 @telco-api/sim

Yarn Installation

# Install the SDK
yarn add @telco-api/sdk

# Install optional components
yarn add @telco-api/diameter @telco-api/ss7 @telco-api/sim

Docker Installation

# Pull the Docker image
docker pull telcoapi/sdk:latest

# Run the container
docker run -d \
  -e TELCO_API_KEY=your-api-key \
  -e NODE_ENV=production \
  -p 3000:3000 \
  telcoapi/sdk:latest

Configuration

Basic Configuration

import { TelcoAPIClient } from '@telco-api/sdk';

const client = new TelcoAPIClient({
  apiKey: process.env.TELCO_API_KEY,
  environment: process.env.NODE_ENV === 'production' ? 'production' : 'sandbox',
  timeout: 30000, // 30 seconds
  retryAttempts: 3
});

Advanced Configuration

const client = new TelcoAPIClient({
  apiKey: process.env.TELCO_API_KEY,
  environment: 'production',
  timeout: 30000,
  retryAttempts: 3,
  logging: {
    level: 'debug',
    format: 'json',
    destination: './logs/telco-api.log'
  },
  ssl: {
    cert: fs.readFileSync('path/to/cert.pem'),
    key: fs.readFileSync('path/to/key.pem'),
    ca: fs.readFileSync('path/to/ca.pem')
  },
  proxy: {
    host: 'proxy.example.com',
    port: 8080,
    auth: {
      username: 'proxyuser',
      password: 'proxypass'
    }
  },
  rateLimit: {
    maxRequests: 100,
    perSecond: 10
  }
});

Environment Setup

Environment Variables

Create a .env file in your project root:

# API Configuration
TELCO_API_KEY=your-api-key
TELCO_API_ENV=production

# Protocol Settings
DIAMETER_HOST=diameter.example.com
DIAMETER_PORT=3868
SS7_POINT_CODE=1-1-1

# Security
SSL_CERT_PATH=/path/to/cert.pem
SSL_KEY_PATH=/path/to/key.pem
SSL_CA_PATH=/path/to/ca.pem

# Monitoring
METRICS_ENABLED=true
METRICS_INTERVAL=60000

Directory Structure

Recommended project structure:

your-project/
├── src/
│   ├── config/
│   │   ├── telco.config.ts
│   │   └── protocols/
│   ├── services/
│   │   ├── diameter/
│   │   ├── ss7/
│   │   └── sim/
│   └── utils/
├── logs/
├── certs/
├── tests/
└── .env

Verification

Installation Check

import { TelcoAPIClient } from '@telco-api/sdk';

async function verifyInstallation() {
  try {
    const client = new TelcoAPIClient({
      apiKey: process.env.TELCO_API_KEY,
      environment: 'sandbox'
    });

    // Test API connection
    const status = await client.system.status();
    console.log('API Status:', status);

    // Test protocol modules
    const diameter = client.protocols.diameter;
    const ss7 = client.protocols.ss7;
    const sim = client.sim;

    console.log('Installation verified successfully');
  } catch (error) {
    console.error('Installation verification failed:', error);
    process.exit(1);
  }
}

verifyInstallation();

Health Check

async function healthCheck() {
  const client = new TelcoAPIClient({
    apiKey: process.env.TELCO_API_KEY
  });

  const health = await client.system.health();
  console.log('System Health:', health);

  // Check individual components
  const components = [
    'api',
    'diameter',
    'ss7',
    'sim',
    'database'
  ];

  for (const component of components) {
    const status = await client.system.componentHealth(component);
    console.log(`${component} status:`, status);
  }
}

Troubleshooting

Common Issues

  1. API Key Issues

    // Verify API key
    const client = new TelcoAPIClient({ apiKey: 'your-key' });
    await client.system.verifyCredentials();
    

  2. Connection Problems

    // Test connectivity
    await client.system.ping();
    

  3. SSL/TLS Issues

    // Verify SSL configuration
    await client.system.verifySSL();
    

Logging

// Enable debug logging
client.setLogLevel('debug');

// Custom logger
client.setLogger({
  debug: (msg) => console.debug(msg),
  info: (msg) => console.info(msg),
  warn: (msg) => console.warn(msg),
  error: (msg) => console.error(msg)
});

Next Steps