Server TeaMusicBot Reinstall & Proxy Server Configuration

yamano

TeaFanatic
Premium User
Hi Guys

Here is a simple tutorial of how to install / reinstall Teaspeak MusicBot
and how to configure a Danted Proxy Server to use with youtube-dl
(prevent / avoid frequent ip block by youtube when using TeaMusicBot).

ToC
  • Re/Install the TeaSpeak music bot and its dependencies
  • Setup a socks5 proxy with Danted
  • Disable IPv6 on your server
  • Configure YouTubeDL to use a proxy server

Re/Install the TeaSpeak music bot and its dependencies:
  1. Code:
    su teaspeak  # Assuming your TeaSpeak user is called teaspeak
  2. Code:
    cd  # Change to your come directory
  3. Code:
    ./install_music.sh install -youtube-dl -ffmpeg -y

Setup a socks 5 proxy with Danted:
  1. Code:
    apt update
  2. Code:
    apt install dante-server
  3. Code:
    nano /etc/init.d/danted
    Copy / Paste and save:
    Code:
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides: danted
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: SOCKS (v4 and v5) proxy daemon (danted)
    # Description: Starts or stops the Dante SOCKS proxy daemon.
    # Its configuration is stored in the /etc/danted.conf file;
    # see the danted.conf(5) manual page for details.
    ### END INIT INFO
    #
    # dante SOCKS server init.d file. Based on /etc/init.d/skeleton:
    # Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl
    
    . /lib/lsb/init-functions
    
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/sbin/sockd
    NAME=danted
    DESC="Dante SOCKS daemon"
    PIDFILE=/var/run/$NAME.pid
    CONFFILE=/etc/$NAME.conf
    
    test -f $DAEMON || exit 0
    
    set -e
    
    # This function makes sure that the Danted server can write to the pid-file.
    touch_pidfile ()
    {
    if [ -r $CONFFILE ]; then
    uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' $CONFFILE`"
    if [ -n "$uid" ]; then
    touch $PIDFILE
    chown $uid $PIDFILE
    fi
    fi
    }
    
    case "$1" in
    start)
    if ! egrep -cve '^ *(#|$)' \
    -e '^(logoutput|user\.((not)?privileged|libwrap)):' \
    $CONFFILE > /dev/null
    then
    echo "Not starting $DESC: not configured."
    exit 0
    fi
    echo -n "Starting $DESC: "
    touch_pidfile
    start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE \
    --exec $DAEMON -- -D
    echo "$NAME."
    ;;
    stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
    --exec $DAEMON
    echo "$NAME."
    ;;
    reload|force-reload)
    #
    # If the daemon can reload its config files on the fly
    # for example by sending it SIGHUP, do it here.
    #
    # If the daemon responds to changes in its config file
    # directly anyway, make this a do-nothing entry.
    #
    echo "Reloading $DESC configuration files."
    start-stop-daemon --stop --signal 1 --quiet --pidfile \
    $PIDFILE --exec $DAEMON -- -D
    ;;
    restart)
    #
    # If the "reload" option is implemented, move the "force-reload"
    # option to the "reload" entry above. If not, "force-reload" is
    # just the same as "restart".
    #
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
    sleep 1
    touch_pidfile
    start-stop-daemon --start --quiet --pidfile $PIDFILE \
    --exec $DAEMON -- -D
    echo "$NAME."
    ;;
    status)
    if ! egrep -cve '^ *(#|$)' \
    -e '^(logoutput|user\.((not)?privileged|libwrap)):' \
    $CONFFILE > /dev/null
    then
    configured=''
    else
    configured='1'
    fi
    if start-stop-daemon --status --quiet --pidfile $PIDFILE \
    --exec $DAEMON; then
    if [ -n "$configured" ]; then
    echo "$DESC running"
    else
    echo "$DESC running, yet not configured?!"
    fi
    else
    if [ -n "$configured" ]; then
    echo "$DESC not running"
    else
    echo "$DESC not configured"
    fi
    fi
    ;;
    *)
    N=/etc/init.d/$NAME
    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
    exit 1
    ;;
    esac
    
    exit 0
  4. Code:
    chmod +x /etc/init.d/danted
  5. Code:
    update-rc.d danted defaults
    You can start / stop danted proxy server using:
    Code:
    systemctl status danted # Get the danted server status
    systemctl start danted # Start the danted server
    systemctl stop danted # Stop the danted server
  6. check the server interface:
    Code:
    ip a[code]
    
    [*]Before edit the configuration file, you must make a backup:
    [code]mv /etc/danted.conf /etc/danted.conf.bak
  7. Code:
    nano /etc/danted.conf
    Copy / Paste and save:
    Code:
    logoutput: /var/log/socks.log
    internal: eth0 port = 1080
    external: eth0
    clientmethod: none
    socksmethod: none
    user.privileged: root
    user.notprivileged: nobody
    
    client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error connect disconnect
    }
    client block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect error
    }
    socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error connect disconnect
    }
    socks block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect error
    }
    ATTENTION: eth0 must be replaced by your interface name
    and the port 1080 (tcp) can be edited to the port you want.
  8. Start Danted proxy:
    Code:
    systemctl start danted
  9. Check if it is running:
    Code:
    systemctl status danted
  10. Dante Socks5 proxy check example:
    Code:
    curl -x socks5://your_server_ip:1080 ifconfig.co

Output example of the command:
Code:
root@your_server:~# curl -x socks5://192.168.0.1:1080 ifconfig.co
192.168.0.1
If it looks like this, Danted proxy server should now be correctly configured ;)


Disable IPv6 on your server
  1. Code:
    nano /etc/sysctl.conf
  2. Add and save:
    Code:
    net.ipv6.conf.all.disable_ipv6 = 1
  3. Code:
    sysctl -p


Configure YouTubeDL to use a proxy server

  1. Go to /home/teaspeak/providers
  2. Open "config_youtube.ini" file
  3. Edit like this and save:
    Code:
    youtubedl_command=/home/teaspeak/providers/bin/youtube-dl --proxy socks5://your_server_ip:1080
    I recommend to restart teaspeak server and test if teamusicbot is working ;)

----------------------------------------------------

AutoStart Danted Proxy in system boot:

  1. Code:
    crontab -e
    Copy / paste and save:
    Code:
    @reboot sleep 5 && systemctl start danted

(Recommended Systems: Debian 9+ / Ubuntu 18+)

Hope it helps somebody ;)
Regards
 
Last edited:

Zaltimo

New member
Hi I was followed your tutorial I have Ubuntu 20.04 and look

Python 3.8.2
root@vm5890:~# su - teaspeak
teaspeak@vm5890:~$ ./install_music.sh install -youtube-dl -ffmpeg -y
Enforcing youtube-dl install/update
Testing/Installing FFMPEG
Local installed FFMPEG version (4.2.2) is okey. No need to install FFMPEG.
Testing/Installing youtube-dl
rm: cannot remove 'tmp_files': No such file or directory
Failed to remove tmp_files directory
Installation error:
youtube-dl requires python to run! Please install python first
teaspeak@vm5890:~$

this is error you have some sugestions
 

yamano

TeaFanatic
Premium User
Thats not my tutorial fault xD
"youtube-dl requires python to run! Please install python first"
command: apt-get install python