Установка utorrent для Linux + демонизация (Updated)

Utorrent для LinuxАльфа версия одного из самых популярных торрент клиентов uTorrent доступна с 2010 года. По видимому разработчики не спешат выпускать релиз uTorrent для Linux. Версия для Linux не полноценна и включает в себя только веб-интерфейс, такой вариант подходит для домашнего или не домашнего :). Последний раз установка и настройка была проверена на Ubuntu 16.04 Desktop. Скачать актуальную версию можно с официального сайта. Исходя из имени файла utorrent, разработчики позиционируют сервер для ubuntu linux, но как показала практика клиент “Сходу” не запускается под Ubuntu, Debian, Mint (всему виной отсутствие libssl0.9.8, но об этом позже).

Используем wget или скачиваем и перебрасываем utorrent для Linux в каталог /opt/

sudo cp utserver.tar.gz /opt/ && cd /opt/

Распаковываем и удаляем архив командой:

sudo tar -xzf utserver.tar.gz && sudo rm -rf utserver.tar.gz

Для начала необходимо проверить запуск сервера. Переходим в каталог с utorrent и запускаем файл utserver.

./utserver

Если при выполнении получаем сообщение:

./utserver: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory

значит у Вас отстутствует libssl0.9.8 (библиотека входит в комплект openssl). Устанавливаем командой:

sudo aptitude install libssl0.9.8

Проверить работу можно перейдя по ссылке http://localhost:8080/gui. В случае, если Вы ставите utorrent для Linux сервера, то вместо localhost введите IP сервера.

Учетные данные по умолчанию: Admin без пароля

Запускать вручную неудобно. Для этого рекомендую использовать скрипт (источник).

Создаем файл (В качестве редактора используйте, что Вам удобно):

sudo vi /etc/init/utorrent

Записываем в него:

#!/bin/sh
#
#
# Original source: http://forum.utorrent.com/viewtopic.php?id=88044
#
# uTorrent start stop service script
#
# copy to /etc/init.d
# run "update-rc.d utorrent defaults" to install
# run "update-rc.d utorrent remove" to remove
#
#
# version 2 improvments by:
# @author FanFan Huang ([email protected])
#
#
UTORRENT_PATH=/opt/utorrent-server-alpha-v3_3 #where you extracted your utserver executable
LOGFILE=/opt/utorrent-server-alpha-v3_3/utorrent.log #must be a writable directory
USER=vortex-5 #any user account you can create the utorrent user if you like
GROUP=users
NICE=15
SCRIPTNAME=/etc/init.d/utorrent #must match this file name

DESC="uTorrent Server for Linux"
CHDIR=$UTORRENT_PATH
NAME=utserver
UT_SETTINGS=$UTORRENT_PATH
UT_LOG=$LOGFILE

DAEMON_ARGS="-settingspath ${UT_SETTINGS} -logfile ${UT_LOG}"
DAEMON=$CHDIR/$NAME
PIDFILE=/var/run/utorrent.pid
STOP_TIMEOUT=5
INIT_VERBOSE=yes

FAILURE=false

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
	FAILURE=false
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
		#	3 if port bind failed
				
        start-stop-daemon --start --nicelevel $NICE --quiet --make-pidfile --pidfile $PIDFILE --chuid $USER:$GROUP --chdir $CHDIR --background --exec $DAEMON --test > /dev/null 
		if [  "$?" = "1" ]; then 
			return 1
		fi
		
        start-stop-daemon --start --nicelevel $NICE --quiet --make-pidfile --pidfile $PIDFILE --chuid $USER:$GROUP --chdir $CHDIR --background --exec $DAEMON -- $DAEMON_ARGS
		if [ "$?" != "0" ]; then
			return 2
		fi
		
		#bind validation
		while [ ! -e $LOGFILE ]; do
			sleep 1 #Wait for file to be generated
		done

######################## DISABLED ENABLE THIS SECTION IF YOU HAVE IPv6 HANGS WITH NO IPv6 Support ################
#		while [ ! -n "$(cat $LOGFILE|grep 'IPv6 is installed')" ]; do
#        	#wait until utorrent has finished bootup (IPv6 MESSAGE is the last message)#
#			sleep 1
#		done

		RESULT=$(cat $LOGFILE|grep 'bind failed')
        if [ -n "$RESULT" ]; then
			return 3
        fi
		
		return 0
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
		RETVAL="$?"
        if [ "$RETVAL" = 2 ]; then
			return 2
		fi
        
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
		RETVAL="$?"
        if [ "$RETVAL" = 2 ]; then
			return 2
		fi
		
		#block process until server is completed shutting down fully
		while [ -n "$(pidof "$NAME")" ]; do
			sleep 1
		done
		
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
		rm -f $LOGFILE #we don't want to keep our logfile
        return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
        #
        # If the daemon can reload its configuration without
        # restarting (for example, when it is sent a SIGHUP),
        # then implement that here.
        #
        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
        return 0
}

msg_start() {
	case "$1" in
			0|1) 
				if [ "$VERBOSE" != no ]; then 
					log_end_msg 0 
				fi
			;;
			2) 
				if [ "$VERBOSE" != no ]; then
					log_end_msg 1 
				fi
			;;
			3)
				if [ "$VERBOSE" != no ]; then
					log_daemon_msg "Port bind failure detected uTorrent may have limited functionality please change the bind port and restart uTorrent"
					log_end_msg 1
				fi
			;;
	esac
}

msg_stop() {
	case "$1" in
			0|1)
				if [ "$VERBOSE" != no ]; then
					log_end_msg 0
				fi
			;;
			*) 
				if [ "$VERBOSE" != no ]; then
					log_daemon_msg "Failed to stop service exit status $STATUS"
					log_end_msg 1 
				fi
	esac
}

case "$1" in
	start)
        if [ "$VERBOSE" != no ]; then
			log_daemon_msg "Starting $DESC"
		fi
        do_start
        msg_start "$?"
		;;
	stop)
        if [ "$VERBOSE" != no ]; then 
			log_daemon_msg "Stopping $DESC"
		fi
        do_stop
		msg_stop "$?"
        ;;
	status)
		if [ -e "$PIDFILE" ]; then
			PID=" PID:($(cat $PIDFILE))"
		else
			PID=""
		fi
		status_of_proc "$DAEMON" "uTorrent$PID"
		
			if [ "$?" != "0" ]; then
				exit $?
			fi
		;;
	restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC"
        do_stop
		STATUS="$?"
		if [ "$STATUS" -ne 0 ] && [ "$STATUS" -ne 1 ]; then
			log_daemon_msg "Could not stop exit status $STATUS"
			log_end_msg 1
			exit 1
		fi
		
		do_start
		STATUS="$?"
		case "$STATUS" in
			0)
			log_end_msg 0
			;;
			*)
			log_daemon_msg "Restart failed start exist status $STATUS"
			log_end_msg 1
		esac	
	;;
	log)
		if [ -e "$LOGFILE" ]; then
			LOG=$(cat $LOGFILE)
				echo "$LOG"
		else
			echo "uTorrent is not running no active log file"
		fi
	;;

	*)
        
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload|log}" >&2
        exit 3
        ;;
esac

Изменяем строки и сохраняем:
UTORRENT_PATH = пишем путь с распакованым utorrent

LOGFILE = путь к логфалу

USER = полььзователь от имени котрого будет запущен сервис

SCRIPTNAME  = должен совпадать с именем созданого нами файла

Выполняем:

sudo chmod +x /etc/init.d/utorrent
sudo systemctl enable utorrent

Теперь utserver сервер можно запускать и сотанавливать командами:

sudo systemctl start utorrent

sudo systemctl stop utorrent

 

Pin It

5 Replies to “Установка utorrent для Linux + демонизация (Updated)”

  1. Скрипт для запуска не работает. Система: Linux Mint 18.1 Xfce. Вообще не понимаю, что это дает “sudo ln -s /lib/init/upstart-job /etc/init.d/utorrent”.
    Такое впечатление, что что-то упустили

    1. $ sudo start utorrent
      start: Не удается подключиться к Upstart: Failed to connect to socket /com/ubuntu/upstart: В соединении отказано

      1. Старая уже статейка. Попробую на виртуалочке прогнать сценарий на актуальность

      2. Актуализировал статейку. Прогнал все на Ubuntu 16.04 Desktop. Скрипт запуска по сути был не актуален, на GitHub был найден отличный инит скрипт, за что автору отдельное Thank’s!

Leave a Reply

Your email address will not be published. Required fields are marked *