Установка znc на Debian

  • 10.09.2014
  • 2 411
  • 1
  • 30.01.2017
  • 1
  • 1
  • 0
Установка znc на Debian

Установка

Для установки сервера irc-баунсера znc, нам потребуется сначала установить следующие пакеты:

aptitude install build-essential g++ libssl-dev libperl-dev pkg-config libicu-dev

После этого можно скачать последнюю версию на сайте znc.in (в моем случае это была 1.6.3):

wget http://znc.in/releases/znc-1.6.3.tar.gz

Распаковываем и устанавливаем:

tar xzvf znc-1.6.3.tar.gz
cd znc-1.6.3/
./configure
make
make install

На этом установка znc в систему завершена.

Настройка

После установки добавляем нового пользователя специально для znc:

adduser -system -home /var/lib/znc -group znc

И настраиваем из под этого пользователя znc, где указываем нужную нам папку, куда будет сохраняться конфигурация баунсера:

sudo -u znc /usr/local/bin/znc --datadir=/var/lib/znc --makeconf

Теперь нам предстоить настроить конфигурацию баунсера, отвечая на вопросы:

What port would you like ZNC to listen on? (1025 to 65535) - На каком порту вы хотите запустить znc (от 1025 до 65535, какой выбирать не имеет особого значения, за исключением возможного конфликта с каким-либо другим приложением, которое будет использовать выбранный вами порт);
Would you like ZNC to listen using both IPv4 and IPv6? (yes/no) [yes] - Хотите ли вы, чтобы znc работало и через IPv4 и IPv6?;
Load global module ? (yes/no) [no] - Загрузить глобальный модуль partyline (позволяет чатится пользователям баунсера минуя сам irc сервер);
Load global module ? (yes/no) [no] - Загрузить глобальный модуль webadmin (включает вебинтерфейс znc, очень упрощает настройку, поэтому рекомендуется включить);

Username - Имя пользователя;
Enter Password - Пароль пользователя;
Would you like this user to be an admin? (yes/no) [yes] - Хотите ли вы, чтобы данный пользователь был администратором znc?;
Nick - Никнейм для irc сервера;
Alt Nick - Альтернативный никнейм;
Ident - Ваш ident в irc;
Real Name - Будет отображаться пользователям irc сервера как "реальное имя";
Bind Host - Какой хост или адрес использовать для соединения с сервером, можно просто ничего не писать;
Number of lines to buffer per channel [50] - Количество сообщений, которое запомнит баунсер. Так как 50 очень мало, то можно поставить число побольше - например 5000;
Would you like to clear channel buffers after replay? (yes/no) [yes] - Очищать запомненные сообщения после их воспроизведения?;
Default channel modes [+stn] - Режимы каналов по умолчанию;

После этого вам будет предложено так же включить различные модули. Сразу все включать смысла нет, проще это сделать будет потом.

Would you like to set up a network? (yes/no) [no] - Хотите ли вы настроить соеденение к какому-либо серверу? (Проще сделать потом, через веб-интерфейс);

На вопрос, стоит ли запускать znc прямо сейчас, отвечаем нет.

Автозапуск

Debian 7 и более старые версии

Если у вас установлен Debian 7 или более предыдущая версия, в директории /etc/init.d/ создаем новый файл под названием znc, и копируем туда:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          znc
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: ZNC IRC bouncer
# Description:       ZNC is an IRC bouncer
### END INIT INFO
 
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="ZNC daemon"
NAME=znc
DAEMON=/usr/local/bin/$NAME
DATADIR=/var/lib/znc
DAEMON_ARGS="--datadir=$DATADIR"
PIDDIR=/var/run/znc
PIDFILE=$PIDDIR/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
USER=znc
GROUP=znc

# 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.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	if [ ! -d $PIDDIR ]
	then
		mkdir $PIDDIR
	fi
	chown $USER:$GROUP $PIDDIR
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test --chuid $USER > /dev/null || return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --chuid $USER -- $DAEMON_ARGS > /dev/null || return 2
}

#
# 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 --chuid $USER
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too if this is a daemon that forks
	# and if the daemon is only ever run from this initscript.
	# If the above conditions are not satisfied then add some other code
	# that waits for the process to drop all resources that could be
	# needed by services started subsequently.  A last resort is to
	# sleep for some time.
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON --chuid $USER
	[ "$?" = 2 ] && return 2
	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME --chuid $USER
	return 0
}

case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  status)
	status_of_proc -p $PIDFILE "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  reload)
	log_daemon_msg "Reloading $DESC" "$NAME"
	do_reload
	log_end_msg $?
	;;
  restart)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
		# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	echo "Usage: $SCRIPTNAME {status|start|stop|reload|restart}" >&2
	exit 3
	;;
esac

:

После этого делаем этот файл исполняемым:

chmod 755 /etc/init.d/znc

Добавляем этот скрипт в загрузку при старте системы:

sudo update-rc.d znc defaults

И запускаем сам демон (службу):

service znc start

Debian 8 и более новые версии

Если у вас стоит Debian 8, и выше, то переходим в директорию /lib/systemd/system и создаем там файл znc.service следующего содержания:

[Unit]
Description=ZNC, an advanced IRC bouncer
After=network-online.target
     
[Service]
ExecStart=/usr/local/bin/znc -f --datadir=/var/lib/znc
User=znc
     
[Install]
WantedBy=multi-user.target

Запускаем сервис znc, и включаем его в автозапуск:

systemctl start znc.service
systemctl enable znc.service

Настройка окончена. Теперь веб интерфейс баунсера должен быть доступен по http(s)://ваш_ип:выбранный_вами_порт.

Была ли эта статья Вам полезна?

Комментарии к статье (1)

    • Savannah

    За статью огромная благодарность, все по делу.

Добавить комментарий

Ваш адрес email не будет опубликован.

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.