• Hey Guest, we're evolving the future of TeaSpeak.
    You're invited to join the discussion here!

Server TeaMusicBot Reinstall & Proxy Server Configuration (Linux)

yamano

TeaSpeak Team
Staff member
TeaTeam
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:
    ./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 [email protected]
    
    . /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

TeaSpeak Team
Staff member
TeaTeam
Thats not my tutorial fault xD
"youtube-dl requires python to run! Please install python first"
command: apt-get install python
 

eduardoroeder

Fanatic member
Premium User
Like, this tutorial is for hosting a server and setting up the proxy server, which is outside the TeaServer environment, right? Or is it in the same machine?

Also, is it possible to change the proxy in config_youtube.ini without having to restart TeaServer? Just like having rotating proxies?

I'm looking into enabling musicbot in my instances, but idk for how long my host ip will be safe from YT block, and even then after setting up the proxies, how long each proxy will stay alive for youtube.

I use a service which provides me more than 3500 proxies ips, but some of them just doesn't work. Or they do work and sometime after it just stops working. I just need to keep rotating between them to make sure they work alright, but If I'd to restart TeaServer each time I switch ips, that would be impossible in the long run.
 

dension

Well-known member
Premium User
Hi,

I made that on Debian 10. It did worked for me in last 1 mounth. But today when I checked my server I got
Got an error while trying to load next song: failed to query info: ERROR: Unable to download webpage: HTTP Error 429: Too Many Requests (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
My ffmpeg and youtbe-dl is up to dated. TeaServer is 1.4.15-beta-2 (this version to use, suggested for me by WolverinDEV).

Can you help for me to solve this problem?

Bestregards:
dension
 
Last edited:

yamano

TeaSpeak Team
Staff member
TeaTeam
Thats not an error.
Probably your server ip is banned by youtube.
Wait some hours so the ip gets unbanned and it will work again.
 

dension

Well-known member
Premium User
Thats not an error.
Probably your server ip is banned by youtube.
Wait some hours so the ip gets unbanned and it will work again.
Hi,
I waited some DAYS but the results same.
Do you have any idea, what can I do?
 

dension

Well-known member
Premium User
maybe your ip is youtube banned for weeks or even months ;)
Oh. Than I have to wait more time.....

---- Automatically Merged Double Post ----

Hi,

I was able to resolve the youtube ban issue.

If you used the Danted proxy and the youtube banned your server, you can solve it on Debian 10 based server system, with follow steps. You need enough server resources for next steps!

0. Stop the TeaSpeak server!!!

Code:
./TEASPEAK_SERVER_FOLDER_NAME/teastart.sh stop

1. First time, you have to solve Captcha, in youtube.com from your server IP. Command line browser are not good for that, so youe have to install on your teaspeak server X11 grafical interface, and Xrdp for remote desktop, and Firefox browser with next steps:

Code:
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils -y
Code:
sudo apt install xrdp -y
Code:
sudo adduser CURRENT_USER_NAME ssl-cert
Code:
sudo apt install firefox-esr -y

2. Now in TeaSpeak server folder you have to create one folder with "cookies" name. I use for file browsing the mc file browser.
If you want, you can install that (very usefull command line file browser):

Code:
sudo apt-get install mc -y

3. Open 3389 TCP port and 3389 UDP port for remote desktop services in your firewall of your TeaSpeak server.

4. Open and edit in TeaSpeak server folder the providers/config_youtube.ini file and write before "--proxy....." the follow and save it:

--cookies /home/CURRENT_USER_NAME/TEASPEAK_SERVER_FOLDER_NAME/cookies/cookies.txt
After that your file content look like this:
[general]
youtubedl_command=/home/CURRENT_USER_NAME/TEASPEAK_SERVER_FOLDER_NAME/providers/bin/youtube-dl --cookies /home/CURRENT_USER_NAME/TEASPEAK_SERVER_FOLDER_NAME/cookies/cookies.txt --proxy socks5://YOUR_SERVER_PUBLIC_IP:1080

5. Connect to your server from your Windows based computer with Remote Desktop Connection application (need Windows 10 Pro!).

6. For connecting use that user its password what you wrote in "sudo adduser CURRENT_USER_NAME ssl-cert" command, wich user have right to make SSH connection anyway.

7. Accept Xfce desktop base configuration.

8. Open Firefox webbrowser (it will be base webrowser) and add the follow add-ons for save the cookiest into *.txt in Netscape HTTP Cookie File. You can install from follow url:


9. Open in Firefox the youtube (if you want you can login with your google account), and try play one video. When trying you have to resolve some Captchas. When you finisd and you can play video, stop the video. On top-right in Firefox browser windov you will see a cookie shaped icon, click on that, and save current site cookies. The save root will be:

/home/CURRENT_USER_NAME/TEASPEAK_SERVER_FOLDER_NAME/cookies/
folder and the file name will be
cookies.txt

10. Now you can close the Firefox and leave Remote Desktop if you want, and start your teaspeak server. Now you can use your music bot(s) again.

Code:
./TEASPEAK_SERVER_FOLDER_NAME/teastart.sh start

Next time if you banned again just repeat the next steps:

1. Stop your TeaSpeak server

2. Login into your server with Remote Desktop

3. Open in Firefox browser the youtube website, try again play one video in browser and resolve some Captchas.

4.When you can play video in Firfeox browser stop the video and save cookies.txt again owerwrite the exist one in:

/home/CURRENT_USER_NAME/TEASPEAK_SERVER_FOLDER_NAME/cookies/
folder

5. Close the Firefox browser, leave Remote Desktop if you want and start your teaspeak server. Now you can use your music bot(s) again.

I hope this usefull for others.

Tested, working in DEBIAN 10, and work with Danted proxy solution.

Bestregards,
dension
 
Last edited:
Any guess?
Code:
root@TeaspeakServer:/home/teaspeak# ./install_music.sh install -youtube-dl -ffmpeg -y
...
...

youtube-dl installed successfully

root@TeaspeakServer:/home/teaspeak# youtube-dl -v EXaLvBGqQww
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'EXaLvBGqQww']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.09.10
[debug] Python version 2.7.12 (CPython) - Linux-4.4.0-142-generic-x86_64-with-Ubuntu-16.04-xenial
[debug] exe versions: ffmpeg 2.8.17-0ubuntu0.1, ffprobe 2.8.17-0ubuntu0.1
[debug] Proxy map: {}
[youtube] EXaLvBGqQww: Downloading webpage
[youtube] EXaLvBGqQww: Downloading video info webpage
ERROR: EXaLvBGqQww: YouTube said: Invalid parameters.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 792, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 502, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/youtube.py", line 1641, in _real_extract
    expected=True, video_id=video_id)
ExtractorError: EXaLvBGqQww: YouTube said: Invalid parameters.
Also tryd:
Code:
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
But then:
Code:
Song replay aborted due to an unrecoverable error. Replaying next song.
 
Last edited:

dension

Well-known member
Premium User
Any guess?
Code:
root@TeaspeakServer:/home/teaspeak# ./install_music.sh install -youtube-dl -ffmpeg -y
...
...

youtube-dl installed successfully

root@TeaspeakServer:/home/teaspeak# youtube-dl -v EXaLvBGqQww
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'EXaLvBGqQww']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.09.10
[debug] Python version 2.7.12 (CPython) - Linux-4.4.0-142-generic-x86_64-with-Ubuntu-16.04-xenial
[debug] exe versions: ffmpeg 2.8.17-0ubuntu0.1, ffprobe 2.8.17-0ubuntu0.1
[debug] Proxy map: {}
[youtube] EXaLvBGqQww: Downloading webpage
[youtube] EXaLvBGqQww: Downloading video info webpage
ERROR: EXaLvBGqQww: YouTube said: Invalid parameters.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 792, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 502, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/youtube.py", line 1641, in _real_extract
    expected=True, video_id=video_id)
ExtractorError: EXaLvBGqQww: YouTube said: Invalid parameters.
Also tryd:
Code:
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
But then:
Code:
Song replay aborted due to an unrecoverable error. Replaying next song.
Hi,

Do not use the TeaSpeak under root. Create an user and use sudo if root access need. Download and run TeaSpeak non root user always.
If you used "./install_music.sh install -youtube-dl -ffmpeg -y" not need install again youtube-dl. The youtube-dl file is in

/home/teaspeak/providers/bin/youtube-dl

So if you want to use it, first navigate in

/home/teaspeak/providers/bin/
after that you can call it.

If you use DEBIAN you can make users with root right:

Code:
adduser USERNAME

After you can add password (twice) and if you want to give answer questions (not necessary just hit enter) and finally accept with push "y" and push enter.

Install sudo (if not installed yet):

Code:
apt install sudo -y

Add user the sudo group:

Code:
usermod -aG sudo USERNAME
Now you can login as new user. After that download teaserver and run command. Use root right if it is necessary.

Regards
 
Last edited:
Yup.

Yes, at final test I was just doing it as root in order to discard permission problem or something like that.

At the end solved it just deleting all but sql file and reinstalling it. Now music working like a charm.
 

aslupo98

New member
guys, i have a weird problem with the music bot.
Everything works, but when it plays a song, after a certain amount of minutes, it will start to lag and give more and more stattering problems, to the point of completely stopping and not going further.

ideas?

(I have viewed the server resources, no, they are not saturated at all)