Приветствую тебя, о жадный читатель, буквоед и борец за справедливость в интернетах! В нашей оружейной пополнение, называется оно tox. Сейчас я покажу тебе, %username%, его сборку-разборку.

debian_tox_dht

Есть такая замечательная система, которая называется TOX. Вот их официальный сайт, а вот профиль на github.

О tox уже писали множество раз, но я перечислю основные плюшки: DHT — нет зависимости от центрального сервера, достаточно хотя бы одной ноды, шифрование на клиенте — Вася пишет Маше, telegram Паша ничего не прочитает.


Есть три варианта установки:
  1. ручная сборка и конфигурирование, с описанием этапов (рассмотрено в статье ниже)
  2. автоматическая сборка и конфигурирование скриптом, предложенным ksenobayt (новая версия)
  3. установка из пакетов, найденных Darka (конфигурация «по-умолчанию». Пример, как править конфиг можно найти в этой статье)


Итак, для начала качаем toxcore с гитхаба: https://github.com/irungentoo/toxcore/archive/master.zip, распаковываем.

Установка расписана в официальной документации:

Именно на основе указанных выше страниц и был написан этот туториал и запущена нода.

Сие настроено и успешно работает на:

root@l64tox1:~# uname -a
Linux l64tox1 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u1 (2015-12-14) x86_64 GNU/Linux


Заходим в папку.

root@l64tox1:/usr/tox# cd toxcore-master


Что мы там видим:

root@l64tox1:/usr/tox/toxcore-master# l
total 164
-rwxr-xr-x 1 root root    68 Dec 16 23:22 autogen.sh
drwxr-xr-x 2 root root  4096 Dec 16 23:22 auto_tests
drwxr-xr-x 2 root root  4096 Dec 16 23:22 build
-rw-r--r-- 1 root root 20610 Dec 16 23:22 configure.ac
-rw-r--r-- 1 root root 35147 Dec 16 23:22 COPYING
drwxr-xr-x 2 root root  4096 Dec 16 23:22 dist-build
drwxr-xr-x 3 root root  4096 Dec 16 23:22 docs
-rw-r--r-- 1 root root   241 Dec 16 23:22 DONATORS
-rw-r--r-- 1 root root   662 Dec 16 23:22 .gitignore
-rw-r--r-- 1 root root 19317 Dec 16 23:22 INSTALL.md
-rw-r--r-- 1 root root   235 Dec 16 23:22 libtoxav.pc.in
-rw-r--r-- 1 root root   341 Dec 16 23:22 libtoxcore.pc.in
drwxr-xr-x 2 root root  4096 Dec 16 23:22 m4
-rw-r--r-- 1 root root   877 Dec 16 23:22 Makefile.am
drwxr-xr-x 6 root root  4096 Dec 16 23:22 other
-rw-r--r-- 1 root root  2524 Dec 16 23:22 README.md
drwxr-xr-x 2 root root  4096 Dec 16 23:22 super_donators
drwxr-xr-x 2 root root  4096 Dec 16 23:22 testing
drwxr-xr-x 2 root root  4096 Dec 16 23:22 toxav
drwxr-xr-x 2 root root  4096 Dec 16 23:22 toxcore
drwxr-xr-x 2 root root  4096 Dec 16 23:22 toxdns
drwxr-xr-x 3 root root  4096 Dec 16 23:22 toxencryptsave
-rw-r--r-- 1 root root  1505 Dec 16 23:22 tox.spec.in
-rw-r--r-- 1 root root  1698 Dec 16 23:22 .travis.yml


Устанавливаем библиотеки:

apt-get install build-essential libtool autotools-dev automake checkinstall check git yasm libsodium13 libsodium-dev


и

apt-get install libconfig-dev


Запускаем autogen.sh:

root@l64tox1:/usr/tox/toxcore-master# ./autogen.sh
Running autoreconf -if...
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `configure_aux'.
libtoolize: copying file `configure_aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
configure.ac:291: installing 'configure_aux/ar-lib'
configure.ac:212: installing 'configure_aux/compile'
configure.ac:292: installing 'configure_aux/config.guess'
configure.ac:292: installing 'configure_aux/config.sub'
configure.ac:9: installing 'configure_aux/install-sh'
configure.ac:9: installing 'configure_aux/missing'
build/Makefile.am: installing 'configure_aux/depcomp'
parallel-tests: installing 'configure_aux/test-driver'


Запускаем конфигуратор и оживляем демона (--enable-daemon):
./configure --enable-daemon
root@l64tox1:/usr/tox/toxcore-master# ./configure --enable-daemon
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '0' is supported by ustar format... yes
checking whether GID '0' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking linux/version.h usability... yes
checking linux/version.h presence... yes
checking for linux/version.h... yes
checking for Linux epoll(7) interface... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for crypto_pwhash_scryptsalsa208sha256 in -lsodium... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking sodium.h usability... yes
checking sodium.h presence... yes
checking for sodium.h... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for int16_t... yes
checking for int32_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking whether byte ordering is bigendian... no
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for gettimeofday... yes
checking for memset... yes
checking for socket... yes
checking for strchr... yes
checking for malloc... yes
checking for clock_gettime in -lrt... yes
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for pthread_self in -lpthread... yes
checking for OPUS... no
configure: WARNING: disabling AV support No package 'opus' found
checking for CHECK... yes
checking for LIBCONFIG... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating build/Makefile
config.status: creating libtoxcore.pc
config.status: creating tox.spec
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands



Компилируем и прогоняем тесты. Тесты могут занят до 5 минут.
make check
root@l64tox1:/usr/tox/toxcore-master# make check
make  check-recursive
make[1]: Entering directory '/usr/tox/toxcore-master'
Making check in build
make[2]: Entering directory '/usr/tox/toxcore-master/build'
  CC       ../toxcore/libtoxcore_la-DHT.lo
  CC       ../toxcore/libtoxcore_la-network.lo
  CC       ../toxcore/libtoxcore_la-crypto_core.lo
  CC       ../toxcore/libtoxcore_la-ping_array.lo
  CC       ../toxcore/libtoxcore_la-net_crypto.lo
  CC       ../toxcore/libtoxcore_la-friend_requests.lo
  CC       ../toxcore/libtoxcore_la-LAN_discovery.lo
  CC       ../toxcore/libtoxcore_la-friend_connection.lo
  CC       ../toxcore/libtoxcore_la-Messenger.lo
  CC       ../toxcore/libtoxcore_la-ping.lo
  CC       ../toxcore/libtoxcore_la-tox.lo
  CC       ../toxcore/libtoxcore_la-util.lo
  CC       ../toxcore/libtoxcore_la-group.lo
  CC       ../toxcore/libtoxcore_la-assoc.lo
  CC       ../toxcore/libtoxcore_la-onion.lo
  CC       ../toxcore/libtoxcore_la-logger.lo
  CC       ../toxcore/libtoxcore_la-onion_announce.lo
  CC       ../toxcore/libtoxcore_la-onion_client.lo
  CC       ../toxcore/libtoxcore_la-TCP_client.lo
  CC       ../toxcore/libtoxcore_la-TCP_server.lo
  CC       ../toxcore/libtoxcore_la-TCP_connection.lo
  CC       ../toxcore/libtoxcore_la-list.lo
  CCLD     libtoxcore.la
  CC       ../toxdns/libtoxdns_la-toxdns.lo
  CCLD     libtoxdns.la
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-pbkdf2-sha256.lo
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-pwhash_scryptsalsa208sha256.lo
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-utils.lo
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-crypto_scrypt-common.lo
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-runtime.lo
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-scrypt_platform.lo
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/nosse/libtoxencryptsave_la-pwhash_scryptsalsa208sha256_nosse.lo
  CC       ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/sse/libtoxencryptsave_la-pwhash_scryptsalsa208sha256_sse.lo
  CC       ../toxencryptsave/libtoxencryptsave_la-toxencryptsave.lo
  CCLD     libtoxencryptsave.la
  CC       ../other/DHT_bootstrap-DHT_bootstrap.o
  CCLD     DHT_bootstrap
  CC       ../other/bootstrap_daemon/tox_bootstrapd-tox-bootstrapd.o
  CCLD     tox-bootstrapd
  CC       ../testing/DHT_test-DHT_test.o
  CCLD     DHT_test
  CC       ../testing/Messenger_test-Messenger_test.o
  CCLD     Messenger_test
  CC       ../testing/dns3_test-dns3_test.o
  CCLD     dns3_test
  CC       ../testing/tox_sync-tox_sync.o
  CCLD     tox_sync
  CC       ../testing/tox_shell-tox_shell.o
  CCLD     tox_shell
  CC       ../testing/irc_syncbot-irc_syncbot.o
  CCLD     irc_syncbot
make  encryptsave_test messenger_autotest crypto_test network_test assoc_test onion_test TCP_test tox_test dht_autotest
make[3]: Entering directory '/usr/tox/toxcore-master/build'
  CC       ../auto_tests/encryptsave_test-encryptsave_test.o
  CCLD     encryptsave_test
  CC       ../auto_tests/messenger_autotest-messenger_test.o
  CCLD     messenger_autotest
  CC       ../auto_tests/crypto_test-crypto_test.o
  CCLD     crypto_test
  CC       ../auto_tests/network_test-network_test.o
  CCLD     network_test
  CC       ../auto_tests/assoc_test-assoc_test.o
  CCLD     assoc_test
  CC       ../auto_tests/onion_test-onion_test.o
  CCLD     onion_test
  CC       ../auto_tests/TCP_test-TCP_test.o
  CCLD     TCP_test
  CC       ../auto_tests/tox_test-tox_test.o
  CCLD     tox_test
  CC       ../auto_tests/dht_autotest-dht_test.o
  CCLD     dht_autotest
make[3]: Leaving directory '/usr/tox/toxcore-master/build'
make  check-TESTS
make[3]: Entering directory '/usr/tox/toxcore-master/build'
make[4]: Entering directory '/usr/tox/toxcore-master/build'
PASS: encryptsave_test
PASS: messenger_autotest
PASS: crypto_test
PASS: network_test
PASS: assoc_test
PASS: onion_test
PASS: TCP_test
PASS: tox_test
PASS: dht_autotest
make[5]: Entering directory '/usr/tox/toxcore-master/build'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/usr/tox/toxcore-master/build'
============================================================================
Testsuite summary for tox 0.0.0
============================================================================
# TOTAL: 9
# PASS:  9
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
make[4]: Leaving directory '/usr/tox/toxcore-master/build'
make[3]: Leaving directory '/usr/tox/toxcore-master/build'
make[2]: Leaving directory '/usr/tox/toxcore-master/build'
make[2]: Entering directory '/usr/tox/toxcore-master'
make[2]: Nothing to be done for 'check-am'.
make[2]: Leaving directory '/usr/tox/toxcore-master'
make[1]: Leaving directory '/usr/tox/toxcore-master'



Устанавливаем: с make install или checkinstall. Лучше с checkinstall, вот почему: http://habrahabr.ru/post/130868/
make install
root@l64tox1:/usr/tox/toxcore-master# make install
make  install-recursive
make[1]: Entering directory '/usr/tox/toxcore-master'
Making install in build
make[2]: Entering directory '/usr/tox/toxcore-master/build'
make[3]: Entering directory '/usr/tox/toxcore-master/build'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libtoxcore.la libtoxdns.la libtoxencryptsave.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libtoxcore.so.0.0.0 /usr/local/lib/libtoxcore.so.0.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libtoxcore.so.0.0.0 libtoxcore.so.0 || { rm -f libtoxcore.so.0 && ln -s libtoxcore.so.0.0.0 libtoxcore.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libtoxcore.so.0.0.0 libtoxcore.so || { rm -f libtoxcore.so && ln -s libtoxcore.so.0.0.0 libtoxcore.so; }; })
libtool: install: /usr/bin/install -c .libs/libtoxcore.lai /usr/local/lib/libtoxcore.la
libtool: install: warning: relinking `libtoxdns.la'
libtool: install: (cd /usr/tox/toxcore-master/build; /bin/bash /usr/tox/toxcore-master/libtool  --silent --tag CC --mode=relink gcc -I.. -I../toxcore -pthread -g -O2 -version-info 0:0:0 -lm -lrt -o libtoxdns.la -rpath /usr/local/lib ../toxdns/libtoxdns_la-toxdns.lo libtoxcore.la -lsodium )
libtool: install: /usr/bin/install -c .libs/libtoxdns.so.0.0.0T /usr/local/lib/libtoxdns.so.0.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libtoxdns.so.0.0.0 libtoxdns.so.0 || { rm -f libtoxdns.so.0 && ln -s libtoxdns.so.0.0.0 libtoxdns.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libtoxdns.so.0.0.0 libtoxdns.so || { rm -f libtoxdns.so && ln -s libtoxdns.so.0.0.0 libtoxdns.so; }; })
libtool: install: /usr/bin/install -c .libs/libtoxdns.lai /usr/local/lib/libtoxdns.la
libtool: install: warning: relinking `libtoxencryptsave.la'
libtool: install: (cd /usr/tox/toxcore-master/build; /bin/bash /usr/tox/toxcore-master/libtool  --silent --tag CC --mode=relink gcc -I.. -I../toxcore -pthread -g -O2 -version-info 0:0:0 -lm -lrt -o libtoxencryptsave.la -rpath /usr/local/lib ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-pbkdf2-sha256.lo ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-pwhash_scryptsalsa208sha256.lo ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-utils.lo ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-crypto_scrypt-common.lo ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-runtime.lo ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/libtoxencryptsave_la-scrypt_platform.lo ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/nosse/libtoxencryptsave_la-pwhash_scryptsalsa208sha256_nosse.lo ../toxencryptsave/crypto_pwhash_scryptsalsa208sha256/sse/libtoxencryptsave_la-pwhash_scryptsalsa208sha256_sse.lo ../toxencryptsave/libtoxencryptsave_la-toxencryptsave.lo libtoxcore.la -lsodium )
libtool: install: /usr/bin/install -c .libs/libtoxencryptsave.so.0.0.0T /usr/local/lib/libtoxencryptsave.so.0.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libtoxencryptsave.so.0.0.0 libtoxencryptsave.so.0 || { rm -f libtoxencryptsave.so.0 && ln -s libtoxencryptsave.so.0.0.0 libtoxencryptsave.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libtoxencryptsave.so.0.0.0 libtoxencryptsave.so || { rm -f libtoxencryptsave.so && ln -s libtoxencryptsave.so.0.0.0 libtoxencryptsave.so; }; })
libtool: install: /usr/bin/install -c .libs/libtoxencryptsave.lai /usr/local/lib/libtoxencryptsave.la
libtool: install: /usr/bin/install -c .libs/libtoxcore.a /usr/local/lib/libtoxcore.a
libtool: install: chmod 644 /usr/local/lib/libtoxcore.a
libtool: install: ranlib /usr/local/lib/libtoxcore.a
libtool: install: /usr/bin/install -c .libs/libtoxdns.a /usr/local/lib/libtoxdns.a
libtool: install: chmod 644 /usr/local/lib/libtoxdns.a
libtool: install: ranlib /usr/local/lib/libtoxdns.a
libtool: install: /usr/bin/install -c .libs/libtoxencryptsave.a /usr/local/lib/libtoxencryptsave.a
libtool: install: chmod 644 /usr/local/lib/libtoxencryptsave.a
libtool: install: ranlib /usr/local/lib/libtoxencryptsave.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/usr/local/bin'
  /bin/bash ../libtool   --mode=install /usr/bin/install -c DHT_bootstrap tox-bootstrapd '/usr/local/bin'
libtool: install: /usr/bin/install -c .libs/DHT_bootstrap /usr/local/bin/DHT_bootstrap
libtool: install: /usr/bin/install -c .libs/tox-bootstrapd /usr/local/bin/tox-bootstrapd
 /bin/mkdir -p '/usr/local/include/tox'
 /usr/bin/install -c -m 644 ../toxcore/tox.h ../toxcore/tox_old.h '/usr/local/include/tox'
 /bin/mkdir -p '/usr/local/include/tox'
 /usr/bin/install -c -m 644 ../toxdns/toxdns.h '/usr/local/include/tox'
 /bin/mkdir -p '/usr/local/include/tox'
 /usr/bin/install -c -m 644 ../toxencryptsave/toxencryptsave.h '/usr/local/include/tox'
make[3]: Leaving directory '/usr/tox/toxcore-master/build'
make[2]: Leaving directory '/usr/tox/toxcore-master/build'
make[2]: Entering directory '/usr/tox/toxcore-master'
make[3]: Entering directory '/usr/tox/toxcore-master'
make[3]: Nothing to be done for 'install-exec-am'.
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -m 644 ./libtoxcore.pc '/usr/local/lib/pkgconfig'
make[3]: Leaving directory '/usr/tox/toxcore-master'
make[2]: Leaving directory '/usr/tox/toxcore-master'
make[1]: Leaving directory '/usr/tox/toxcore-master'



Добавляем юзера tox-bootstrapd, под которым все будет работать, и копируем файл конфигурации:

useradd --home-dir /var/lib/tox-bootstrapd --create-home --system --shell /sbin/nologin --comment "TOX DHT bootstrap daemon" --user-group tox-bootstrapd
chmod 700 /var/lib/tox-bootstrapd
cp tox-bootstrapd.conf /etc/tox-bootstrapd.conf
cp other/bootstrap_daemon/tox-bootstrapd.conf /etc/tox-bootstrapd.conf


Редактируем этот файл:

vi /etc/tox-bootstrapd.conf


enable_lan_discovery = true — у нас сервер, и он в ДЦ (а то и виртуалка на нем же!). Так что нет смысла бустить ноды в локалке, меняем true на false.
tcp_relay_ports = [443, 3389, 33445] — порты, на которые отвечает наша нода. То есть если у вы сменили порт ноды по умолчанию на port = 12345 вместо port = 33445, то ваша нода будет работать на порту 12345 и обслуживать порты 443, 3389 и 33445, при включенном enable_tcp_relay = true. В моем случае я оставил enable_tcp_relay = true и указал tcp_relay_ports = [12345, 33445].

enable_motd = true — motd (Message Of The Day), при значении true отдаст первые 255 символов из motd, то есть если у вас motd = "Vive le TOX", то субъект, запросивший motd получит Vive le TOX

Так как мы работаем в DHT и мы очень-очень хотим поддержать tox, то добавляем в конец файла к разделу bootstrap_nodes следующий код. Это все текущие ноды, взятые с их wiki.

bootstrap_nodes
bootstrap_nodes = (
  {
    address = "144.76.60.215"
    port = 33445
    public_key = "04119E835DF3E78BACF0F84235B300546AF8B936F035185E2A8E9E0A67C8924F"
  },
  {
    address = "23.226.230.47"
    port = 33445
    public_key = "A09162D68618E742FFBCA1C2C70385E6679604B2D80EA6E84AD0996A1AC8A074"
  },
  {
    address = "195.154.119.113"
    port = 33445
    public_key = "E398A69646B8CEACA9F0B84F553726C1C49270558C57DF5F3C368F05A7D71354"
  },
  {
    address = "198.46.138.44"
    port = 33445
    public_key = "F404ABAA1C99A9D37D61AB54898F56793E1DEF8BD46B1038B9D822E8460FAB67"
  },
  {
    address = "46.38.239.179"
    port = 33445
    public_key = "F5A1A38EFB6BD3C2C8AF8B10D85F0F89E931704D349F1D0720C3C4059AF2440A"
  },
  {
    address = "178.62.250.138"
    port = 33445
    public_key = "788236D34978D1D5BD822F0A5BEBD2C53C64CC31CD3149350EE27D4D9A2F9B6B"
  },
  {
    address = "130.133.110.14"
    port = 33445
    public_key = "461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F"
  },
  {
    address = "104.167.101.29"
    port = 33445
    public_key = "5918AC3C06955962A75AD7DF4F80A5D7C34F7DB9E1498D2E0495DE35B3FE8A57"
  },
  {
    address = "205.185.116.116"
    port = 33445
    public_key = "A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702"
  },
  {
    address = "198.98.51.198"
    port = 33445
    public_key = "1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F"
  },
  {
    address = "80.232.246.79"
    port = 33445
    public_key = "CF6CECA0A14A31717CC8501DA51BE27742B70746956E6676FF423A529F91ED5D"
  },
  {
    address = "108.61.165.198"
    port = 33445
    public_key = "8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832"
  },
  {
    address = "212.71.252.109"
    port = 33445
    public_key = "C4CEB8C7AC607C6B374E2E782B3C00EA3A63B80D4910B8649CCACDD19F260819"
  },
  {
    address = "194.249.212.109"
    port = 33445
    public_key = "3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B"
  },
  {
    address = "185.25.116.107"
    port = 33445
    public_key = "DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43"
  },
  {
    address = "192.99.168.140"
    port = 33445
    public_key = "6A4D0607A296838434A6A7DDF99F50EF9D60A2C510BBF31FE538A25CB6B4652F"
  },
  {
    address = "46.101.197.175"
    port = 443
    public_key = "CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707"
  },
  {
    address = "95.215.46.114"
    port = 33445
    public_key = "5823FB947FF24CF83DDFAC3F3BAA18F96EA2018B16CC08429CB97FA502F40C23"
  },
  {
    address = "5.189.176.217"
    port = 5190
    public_key = "2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F"
  },
  {
    address = "148.251.23.146"
    port = 2306
    public_key = "7AED21F94D82B05774F697B209628CD5A9AD17E0C073D9329076A4C28ED28147"
  },
  {
    address = "104.223.122.15"
    port = 33445
    public_key = "0FB96EEBFB1650DDB52E70CF773DDFCABE25A95CC3BB50FC251082E4B63EF82A"
  },
  {
    address = "78.47.114.252"
    port = 33445
    public_key = "1C5293AEF2114717547B39DA8EA6F1E331E5E358B35F9B6B5F19317911C5F976"
  },
  {
    address = "83.137.53.211"
    port = 1813
    public_key = "53737F6D47FA6BD2808F378E339AF45BF86F39B64E79D6D491C53A1D522E7039"
  },
  {
    address = "81.4.110.149"
    port = 33445
    public_key = "9E7BD4793FFECA7F32238FA2361040C09025ED3333744483CA6F3039BFF0211E"
  },
  {
    address = "95.31.20.151"
    port = 33445
    public_key = "9CA69BB74DE7C056D1CC6B16AB8A0A38725C0349D187D8996766958584D39340"
  },
  {
    address = "104.233.104.126"
    port = 33445
    public_key = "EDEE8F2E839A57820DE3DA4156D88350E53D4161447068A3457EE8F59F362414"
  },
  {
    address = "51.254.84.212"
    port = 33445
    public_key = "AEC204B9A4501412D5F0BB67D9C81B5DB3EE6ADA64122D32A3E9B093D544327D"
  }
)



Теперь копируем скрипт для нашего демона в init.d, и даем ему права на запуск и запускаем!

cp other/bootstrap_daemon/tox-bootstrapd.sh /etc/init.d/tox-bootstrapd
chmod 755 /etc/init.d/tox-bootstrapd
update-rc.d tox-bootstrapd defaults
service tox-bootstrapd start


Проверяем, как оно работает:

root@l64tox1:~# service tox-bootstrapd status
? tox-bootstrapd.service - LSB: Starts the Tox DHT bootstrapping server daemon
   Loaded: loaded (/etc/init.d/tox-bootstrapd)
   Active: active (running) since Wed 2015-12-23 17:12:53 CET; 13min ago
  Process: 396 ExecStart=/etc/init.d/tox-bootstrapd start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/tox-bootstrapd.service
           L-436 /usr/local/bin/tox-bootstrapd /etc/tox-bootstrapd.conf

Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #13: 185.25.116.107:33445 DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA25...7FF9AF7B43
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #14: 192.99.168.140:33445 6A4D0607A296838434A6A7DDF99F50EF9D60A2C510BBF31FE5...5CB6B4652F
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #15: 46.101.197.175:443 CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #16: 95.215.46.114:33445 5823FB947FF24CF83DDFAC3F3BAA18F96EA2018B16CC08429CB97FA502F40C23
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #17: 5.189.176.217:5190 2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #18: 198.46.138.44:33445 F404ABAA1C99A9D37D61AB54898F56793E1DEF8BD46B1038B9D822E8460FAB67
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: List of bootstrap nodes read successfully.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Public Key: *тут был мой паблик кей*
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Forked successfully: PID: 436.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[436]: Connected to other bootstrap node successfully.
Hint: Some lines were ellipsized, use -l to show in full.


пример лога
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Running "tox-bootstrapd" version 2014101200.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully read:
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'pid_file_path': /var/run/tox-bootstrapd/tox-bootstrapd.pid
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'keys_file_path': /var/lib/tox-bootstrapd/keys
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'port': 12345
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'enable_ipv6': true
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'enable_ipv4_fallback': true
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'enable_lan_discovery': false
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'enable_tcp_relay': true
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Read 2 TCP ports:
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Port #0: 12345
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Port #1: 33445
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'enable_motd': true
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: 'motd': blog.saraeff.net
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: General config read successfully
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Set MOTD successfully.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Keys are managed successfully.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Initialized Tox TCP server successfully.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #0: 144.76.60.215:33445 04119E835DF3E78BACF0F84235B300546AF8B936F035185E2A8E9E0A67C8924F
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #1: 23.226.230.47:33445 A09162D68618E742FFBCA1C2C70385E6679604B2D80EA6E84AD0996A1AC8A074
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #2: 195.154.119.113:33445 E398A69646B8CEACA9F0B84F553726C1C49270558C57DF5F3C368F05A7D71354
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #3: 46.38.239.179:33445 F5A1A38EFB6BD3C2C8AF8B10D85F0F89E931704D349F1D0720C3C4059AF2440A
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #4: 178.62.250.138:33445 788236D34978D1D5BD822F0A5BEBD2C53C64CC31CD3149350EE27D4D9A2F9B6B
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #5: 130.133.110.14:33445 461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #6: 104.167.101.29:33445 5918AC3C06955962A75AD7DF4F80A5D7C34F7DB9E1498D2E0495DE35B3FE8A57
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #7: 205.185.116.116:33445 A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #8: 198.98.51.198:33445 1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #9: 80.232.246.79:33445 CF6CECA0A14A31717CC8501DA51BE27742B70746956E6676FF423A529F91ED5D
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #10: 108.61.165.198:33445 8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #11: 212.71.252.109:33445 C4CEB8C7AC607C6B374E2E782B3C00EA3A63B80D4910B8649CCACDD19F260819
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #12: 194.249.212.109:33445 3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #13: 185.25.116.107:33445 DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #14: 192.99.168.140:33445 6A4D0607A296838434A6A7DDF99F50EF9D60A2C510BBF31FE538A25CB6B4652F
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #15: 46.101.197.175:443 CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #16: 95.215.46.114:33445 5823FB947FF24CF83DDFAC3F3BAA18F96EA2018B16CC08429CB97FA502F40C23
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #17: 5.189.176.217:5190 2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Successfully added bootstrap node #18: 198.46.138.44:33445 F404ABAA1C99A9D37D61AB54898F56793E1DEF8BD46B1038B9D822E8460FAB67
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: List of bootstrap nodes read successfully.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Public Key: *тут был мой паблик кей*
Dec 23 17:12:53 l64tox1 tox-bootstrapd[404]: Forked successfully: PID: 436.
Dec 23 17:12:53 l64tox1 tox-bootstrapd[436]: Connected to other bootstrap node successfully.



Ошибка вида:
error while loading shared libraries: libtoxcore.so.0: cannot open shared object file: No such file or directory

решается вызовом ldconfig

Смотреть лог в режиме реального времени можно вот так: tail -f /var/log/syslog|grep "tox-bootstrapd", но если все работает нормально, то там ничего после запуска, окромя технички, нету.

Теперь о трафике и нагрузке:

toxnode_01

Трафик держится на уровне 230-250 кбит, иногда доходит до 330 кбит. tcpdump выдает только udp пакеты. За сутки работы прилетели и улетело по 2.5Гб трафика, что даст за месяц 75 гигов на выдув. Нагрузка на систему составляет 1%-2%, постоянные 1% я бы сказал (0.4%-1.4%). Сие работает на 8.2 дебиане_64, располагает одним ядром и несет на борту 1Гб оперативки. Если к концу недели все будет без изменений, то вместо 1Гб останется 512Мб.

Будущее анонимного и свободного общения у вас в руках, фактически это свобода слова «as is». Поэтому если каждый вложит свои 5 копеек в виртуалку, то окажет этим огромную пользу сообществу tox.

/nikitasius 4339E5C156D4858940E20F82BE6625BC69B4167EAE1E9924EF79AA474E2A454BE4323FE37C61

upd: 2015-12-23242527, обновил список node, всего там 202627 node (отсюда и автогенератор).
upd: 2015-12-24@10:03, после запуска своей ноды вам надо связаться с image, сообщив страну, ipv4/ipv6, порт, publickey ноды и желаемый никнейм (например, чтобы сохранить анонимность). После этого вашу ноду добавять в вики и в трекер. Это нужно для того, чтобы новые люди могли вас бустить. Хотя ваша нода будет работать и без добавления и писем админу, достаточно указать в конфиге другие ноды.

upd: 2015-12-24@1206, добавлю, что при добавления друга по хешу клиент получает public key добавленного человека и после этого может видеть ip адрес. (Prevent_Tracking.txt, ycombinator). Имейте это в виду, если авторизовываете кого попало.

Еще остается такой вопрос: я прогнал wireshark на чистом аккаунте в группе из 20 человек (groupbot), и видел udp от ip, которые не соответствуют нодам. Получается, находясь в группе, все члены могут «видеть» ip друг-друга. Информация из моих рук, я не проверял, что пишут другие люди. Но если это правда, то нужно проявлять осторожность, получая приглашения вступить куда-либо. Если я не прав — прошу написать об этом в комментах ну, и сноску откуда дровишки.

upd: 2015-12-25@2010, в начало статьи добавлены 3 варианта установки: «сам», «сам с скриптом» и «из пакетов».

upd: 2015-12-25@2305, генератор списка нод для конфига, детали под спойлером.
вот этим
И так: http://tox.0x10k.com/bootstrapd-conf
Как это работает:


Фильтр по странам работает простым дополнением "-de" или "-DE" (регистр не влияет), или "-us". Для двух стран добавляем "-de-us", например как tox.0x10k.com/bootstrapd-conf-ipv46-de-us.txt, который выдаст IPv4 (и, если IPv4 не найдено, то IPv6) для германии (DE) и штатов (US).

Так же есть исключение из конфига ноды по ее ID, что полезно тем, кто хочет обновить свой конфиг, например:
tox.0x10k.com/bootstrapd-conf-ipv46-2.txt — все ноды кроме #2
tox.0x10k.com/bootstrapd-conf-ipv46-fr-3.txt — все ноды из FR кроме ноды #3 (можно сравнить с tox.0x10k.com/bootstrapd-conf-ipv46-fr.txt, где только ноды из FR).

Комментарии (44)


  1. iXCray
    23.12.2015 21:26
    +1

    А они уже прошли аудит безопасности?
    Из последнего, что помню, с лета в Tox Foundation разногласия и разлад с интригами и сомнительными комитами.


    1. nikitasius
      23.12.2015 21:30

      Без понятия. Но почитать можете тут.


  1. gtbear
    23.12.2015 21:52

    А есть кто из разработчиков тох на хабре?


    1. dvor
      23.12.2015 22:05
      +5

      Есть разработчики клиентов.

      isotoxin делает isotoxin.
      Я делаю antidote.


      1. vagran
        24.12.2015 09:28

        Пытался недавно перейти на tox со скайпа, но в итоге ничего не вышло из-за крайней сырости клиентов (рассматривались только кроссплатформенные варианты, qtox, utox). Пользоваться этим пока невозможно.


        1. r44083
          24.12.2015 12:04

          Чем именно qTox не устроил?


          1. BiTHacK
            24.12.2015 13:21

            Вообще говоря qTox довольно забагован. Там куча багов в аудио-видео, хотя пачка исправлений почти подоспела к 1.2.2 версии, но ввиду того, что она добавила несколько новых багов, её не стали включать в релиз. Посмотрите bugtracker qtox (https://github.com/tux3/qTox/issues). Судя по нему почти во всех основных функциях qTox есть существенные недоработки.


            1. ksenobayt
              24.12.2015 13:24
              +1

              При всем при этом, он все ещё более юзабелен, чем мьютокс.


              1. redmanmale
                24.12.2015 14:21

                Сижу уже полтора года на uTox'е и большинство багов, с какими сталкивался, доставляет лишь небольшое неудобство, некритичное для использования.


                1. Darka
                  24.12.2015 15:33
                  +1

                  Где все эти люди которые используют TOX?


                  1. isotoxin
                    25.12.2015 16:25
                    +1

                    Тут. Кстати, Россия на втором месте по использованию токса, после США


                1. ksenobayt
                  25.12.2015 08:35

                  Я не знаю, как у него на винде дела, но на линуксах он нормально не стэчится в нотифай-трей, постоянно какие-то проблемы с отрисовкой кнопок, не говоря уже о том, что он частенько в х64 у меня крашится. И да, я использую родную сборку.


                  1. Darka
                    25.12.2015 11:59

                    qtox на Debian Sid, DE — MATE. Ничего подобного не наблюдаю.


                    1. ksenobayt
                      25.12.2015 14:21

                      Очень странно — по сути, у нас с вами одно и то же. Хмм.
                      Время задуматься, ЧЯДНТ.


            1. r44083
              24.12.2015 20:13

              С какими именно багами qTox вы сталкивались? Что конкретно мешает вам его использовать?


              1. BiTHacK
                24.12.2015 20:30

                Даже не знаю с чего начать. Подвисания интерфейса секунд на 15 при открытии вкладки AV в настройках (это должно быть исправлено свежим фиксом из PR antis81), некорректная работа передачи файлов (tux3 в курсе, но фикса так и нету), проблемы при начале видеовызовов (видимо должно исправиться тем же PR от antis81). И это только актуальные, сколько уже было исправлено из того, что мешало не счесть. Что ещё мешает использовать tox вместо skype? Да та же неготовность перманентных групповых чатов, невозможность использовать один аккаунт с нескольких устройств.


                1. r44083
                  24.12.2015 21:09

                  Да, отсутствие возможности одновременного использования одного ID и глюки с передачей файлов (которые уже довольно редко можно поймать) имеют место быть. Но в целом, смотря на ситуацию в сфере интернет-безопасности, в мире, а в частности в России — не такие уж и критические баги. Я думаю в скором времени допилят.


                  1. BiTHacK
                    24.12.2015 21:36

                    Я ловлю проблемы с передачей файлов с поразительным успехом. Сначала я их ловил из-за проблем в DHT, которые поправили уже в toxcore, потом начал ловить их из-за клиента. Вероятность — единица. Один файл не могу передать уже несколько месяцев.
                    Если абстрагироваться то да, как-то пользоваться можно, альтернатив особо то и нету. Надо вносить свой вклад в развитие ядра и qTox, чтобы завязать свой вклад с тем, чем пользуемся.


          1. vagran
            25.12.2015 11:42

            Видеочат толком не заработал. То есть он иногда работал, иногда нет. Логику работы нотификаций о входящих сообщениях/звонках так и не удалось понять. Даже текущий статус звонка в интерфейсе не всегда соответствует действительности. В общем, оставил впечатление очень сырого продукта.


  1. isotoxin
    23.12.2015 23:24
    +2

    Забавно, буквально неделю назад поднял ноду на CentOS'е
    Я сто раз уже пожалел, что взял VPS'ку на CentOS'е. Учитывая мои, мягко говоря, неглубокие знания внутренней линукс-кухни, каждая установка чего-то в CentOS'е выливается в испытание моей воли и терпения.
    В принципе, если опустить всякие заморочки с устаревшими dev-тулзами, которые приходилось вытягивать из отдельных репозиториев или собирать самому, то по минимуму осталась одна заморочка с запуском ноды в виде демона. Инструкции по запуску, которые идут в комплекте с исходниками toxcore, для CentOS'а не подходят. Пришлось импровизировать.
    Походу обнаружился косяк в online-определителе nodes.tox.chat — там моя нода (и некоторые другие) по началу была в OFFLINE, хотя на самом деле она ONLINE. Impyy (автор этого проверяльщика) выкатил фикс и ONLINE нод в списке стало больше. Сейчас в этом списке моя нода снова OFFLINE, хотя на самом деле с ней все хорошо. Недофиксили.


    1. nikitasius
      23.12.2015 23:41

      Спасибо за ссылку. Они там сами сканируют, как я понимаю?


      1. isotoxin
        23.12.2015 23:51
        +1

        Там крутится вот это: github.com/Tox/ToxStatus
        Само оно только умеет определять состояние ноды, и не всегда правильно. Чтобы попасть в этот список, нужно написать письмо на infrastructure(мыло)tox.chat


        1. nikitasius
          24.12.2015 00:38

          Спасибо! Уже списался с admin@ ящиком!


    1. isotoxin
      24.12.2015 02:01

      Прошу прощения за неверную информацию: я ошибался. Детектор статуса работает прекрасно. Просто я умудрился запустить ноду с другим ключем. Т.е. нода работала и участвовала в DHT сети, но с другим публичным ключем. А под тем ключем, который был в таблице нод, детектор мою ноду не обнаруживал и показывал ее как OFFLINE. Сейчас все работает как надо.


    1. ivlis
      24.12.2015 05:46
      +8

      Два docker контейнера этому господину!


  1. ComodoHacker
    24.12.2015 05:33
    +1

    А можно ли его настроить на минимальное потребление памяти? Чтобы работало на микро-VPS c 64/96/128 Мб, например.


  1. Meklon
    24.12.2015 09:39
    +4

    checkinstall же.


    1. nikitasius
      24.12.2015 12:18

      Совесть уже мучает, добавлю ваш вариант в статью.


      1. Meklon
        24.12.2015 12:20

        Спасибо) а то нехорошо в системе мусорить.


    1. Darka
      24.12.2015 12:43
      +1

      Кстати да, запилите кто-нибудь шелл скрипт, который будет пакет собирать. Тогда ноды будут как грибы после дождя расти.


      1. Meklon
        24.12.2015 12:58

        Лучше PPA для Ubuntu.


        1. Darka
          24.12.2015 13:00
          +2

          Была мысль, что левые пакеты с таким софтом собранные неизвестно кем ставить не комильфо =)

          UPD:
          Смотрите, что я нашел — software.opensuse.org/download.html?project=home%3Aantonbatenev%3Atox&package=tox-bootstrapd


          1. nikitasius
            24.12.2015 13:09

            Если ставить tox с тех пакетов, то надо конфиг править (добавлять ноды и отключать локальный поиск), так как у него там ванильный вариант, «прямо с гитхаба» и других нод не прописано.


            1. Darka
              24.12.2015 13:12

              Ну зато все ставится в две команды.


            1. antonbatenev
              27.12.2015 13:47

              Я могу прописать конфиг, который будет работать «из коробки» и поддерживать некоторый актуальный список bootstrap-нод. Но наверняка же всем не угодить :)

              А вот собрать rpm под CentOS / Fedora / OpenSUSE наверное нужно заняться.


          1. Meklon
            24.12.2015 13:18
            +2

            Проще надо быть. И ближе к народу. Параноики себе сами и так соберут. Типа кто-то смотрит в эти исходники. 99% гордо соберут пакет и успокоются. Тогда уже проще готовый взять.


  1. nikitasius
    24.12.2015 14:16
    +1

    Важное замечание: при добавления друга по хешу клиент получает public key добавленного человека и после этого может видеть ip адрес. (Prevent_Tracking.txt, ycombinator). Имейте это в виду, если авторизовываете кого попало.


    1. nikitasius
      24.12.2015 20:21

      Еще остается такой вопрос: я прогнал wireshark на чистом аккаунте в группе из 20 человек (groupbot), и видел udp от ip, которые не соответствуют нодам. Получается, находясь в группе, все члены могут «видеть» ip друг-друга. Информация из моих рук, я не проверял, что пишут другие люди. Но если это правда, то нужно проявлять осторожность, получая приглашения вступить куда-либо. Если я не прав — прошу написать об этом в комментах ну, и сноску откуда дровишки.


  1. nikitasius
    24.12.2015 14:45
    +1

    Вчера провел небольшой тест: за 25 минут через ноду прошло пакетов от 880 разных ip адресов (она работает на нестардартном порте) и 1888 ip использовали ее как relay на стандартном порте.


  1. ksenobayt
    25.12.2015 12:55
    +2

    Я тут накидал кривоскрипт: pastebin.com/nc2LnbRW

    Удаляет, чекаутит, компилит, собирает пакет (на этом этапе нужно будет ручками дважды нажать энтер), правит конфиг (не автоматизировал только подмену списка нод — мой уровень awk-магии тут сдался), запускает, создаёт инит-скрипт, подметает за собой.

    Если есть какие-то (выкинуть и переписать по-человечески, например) пожелания и правки — велкам.
    Всё должно нормально работать на Jessie и бубунте 15.04. На wheezy придётся подключить руками main от Jessie, поскольку libsodium нет даже в бэкпортах, а собирать руками ещё и его — лишний гемор.


    1. nikitasius
      25.12.2015 22:10

      Спасибо! Добавил в начало статьи. Теперь там три варианта: «сам», «сам с скриптом» и «из пакетов».


  1. nikitasius
    27.12.2015 01:39

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


    1. ksenobayt
      28.12.2015 12:15
      +1

      paste.ee/p/BLQJ2
      Допилил полностью автоматизированный по мотивам всего этого скрипт (фиксы старого, etc)
      Должно полностью из коробки работать на Debian Jessie и Ubuntu 15.04+


      1. nikitasius
        28.12.2015 13:58

        Добавил, спасибо!