Press enter to see results or esc to cancel.

coTURN installation script

#!/bin/bash

# Check if user is running as root
if [[ $EUID -ne 0 ]]; then
    echo "This script must be run as root."
    exit 1
fi

# Function to install Coturn
install_coturn() {
    apt-get update
    apt-get install -y coturn
    truncate -s 0 /etc/turnserver.conf
}

# Function to generate random username
generate_credentials() {
    username=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 8 | head -n 1)
    password=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 12 | head -n 1)
    echo "Username: $username"
    echo "Password: $password"
    echo "lt-cred-mech" >> /etc/turnserver.conf
    echo "user=$username:$password" >> /etc/turnserver.conf
}

# Function to configure Coturn for NAT network
configure_nat() {
    # Add necessary configuration options for NAT network
    echo 'TURNSERVER_ENABLED=1' >> /etc/default/coturn
    # Get public IP
    public_ip=$(curl -s http://checkip.amazonaws.com)
    
    # Get private IP
    private_ip=$(hostname -I | awk '{print $1}')
    
    # Add external IP configuration to turnserver.conf
    echo "external-ip=$public_ip/$private_ip" >> /etc/turnserver.conf
    echo "realm=$public_ip" >> /etc/turnserver.conf
}

# Function to configure Coturn for public IP
configure_public_ip() {
    # Add necessary configuration options for public IP
    echo 'TURNSERVER_ENABLED=1' >> /etc/default/coturn

    # Get public IP
    public_ip=$(curl -s http://checkip.amazonaws.com)
    
    # Add external IP configuration to turnserver.conf
    echo "realm=$public_ip" >> /etc/turnserver.conf
}

# Main script

# Prompt user for configuration option
echo "Choose the configuration option:"
echo "1. Behind NAT network (e.g., AWS)"
echo "2. Directly accessible public IP"
read -p "Enter your choice (1 or 2): " option

case $option in
    1)
        install_coturn
        generate_credentials
        configure_nat
        ;;
    2)
        install_coturn
        generate_credentials
        configure_public_ip
        ;;
    *)
        echo "Invalid choice. Exiting."
        exit 1
        ;;
esac

# Start and enable Coturn service
systemctl restart coturn
systemctl enable coturn

echo "Coturn installation and configuration completed."