Zeronet

Zeronet

Integrar ZeroNet con systemd

Aquí van las instrucciones para controlar ZeroNet con systemd y por lo tanto poder configurar que se encienda solo al arrancar, y poderlo encender y parar facilmente

Las instrucciones parten de la base que tendrenis zeronet instalado en /srv/ZeroNet y que lo ejecutaremos con un nuevo usuario que crearemos:

$ sudo adduser --system --home=/srv/zeronet --group zeronet
$ sudo -u zeronet git clone https://github.com/HelloZeroNet/ZeroNet /srv/zeronet

Para ejecutar ZeroNet hace falta tener dos dependencias instaladas en el sistema. Podemos usar pip para instalarlas por ejemplo:

$ sudo pip install msgpack-python gevent

o tambien las podemos instalar des de los repositorios de nuestra distro, por ejemplo en Debian:

$ sudo apt install python-msgpack python-gevent

Luego creamos un pequeño script para lanzar ZeroNet, que ejecutara ZeroNet des del direcotrio donde lo tenemos instalado. Este será el script que usara systemd.

$ sudo -u zeronet vim /srv/zeronet/zeronet.sh
#! /bin/sh

cd /srv/zeronet/
./zeronet.py

Creamos la unit de systemd:

$ sudo chmod +x /srv/zeronet/zeronet.sh
$ sudo vim /etc/systemd/system/zeronet.service
[Unit]
Description=ZeroNet
After=syslog.target network.target

[Service]
Type=simple
User=zeronet
Group=zeronet
ExecStart=/srv/zeronet/zeronet.sh

[Install]
WantedBy=multi-user.target

Finalmente habilitamos el servicio de systemd que hemos creado y lo encendemos :)

$ sudo systemctl enable zeronet 
$ sudo systemctl start zeronet

Usar ZeroNet des de Tor

Aquí va una pequeña guia para usar ZeroNet des de Tor para ocultar vuestro nodo:

Primero hace falta instalar tor. Por ejemplo, en Debian:

$ sudo apt-get install tor

Sin embargo, en Debian Jessie la versión de Tor es demasiada antigua para ZeroNet (menos que 0.2.7.5). Para descargar la versión más nueva compatible y mantener las actualizaciones, tenemos que añadir el repositorio para Debian de Tor Project.

# echo 'deb http://deb.torproject.org/torproject.org jessie main'>> /etc/apt/sources.list.d/tor.list
# gpg --keyserver pool.sks-keyservers.net --recv 886DDD89
# gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
# apt-get update
# apt-get install tor

Podemos comprovar la versión con tor --version

Usaremos una instancia de tor solo para ZeroNet que correrá con nuestro usuario, así que creamos un archivo de configuración para tor en la carpeta donde tenemos instalado zeronet, y le diremos que use unos puertos diferentes de los que van por defecto, para que no afecte a una posible instancia de tor corriendo en nuestro sistema:

$ vim tor.rc
# Tor config for ZeroNet

DataDirectory data
DirReqStatistics 0
#GeoIPFile geoip\geoip
#GeoIPv6File geoip\geoip6

# Log notice file data\notice.log

ControlPort 49052
SOCKSPort 49053

CookieAuthentication 1
CookieAuthFile tor.control.authcookie

Luego creamos un pequeño script para iniciar tor y zeronet configurado para usar tor y deshabilitando udp ya que tor solo enruta tcp. Este script puede sustituir el de más arriba para ser lanzado desde systemd.

$ vim zeronet.sh
#!/bin/sh

# Print a trace of simple commands and their arguments
# after they are expanded and before they are executed. -o xtrace
set -x

# Exit immediately if a simple command exits with a non-zero status, unless
# the command that fails is part of an until or  while loop, part of an
# if statement, part of a && or || list, or if the command's return status
# is being inverted using !.  -o errexit
set -e

# Discover zeronet dir
ZERONET_DIR=$(dirname $0)
cd $ZERONET_DIR

# Start tor daemon with custom config
# and zeronet with options to use it
tor -f ./tor.rc &
./zeronet.py --disable_udp --tor always --tor_controller 127.0.0.1:49052 --tor_proxy 127.0.0.1:49053

Le damos permisos de ejecucion y ya podemos encender:

$ chmod +x zeronet.sh
$ ./zeronet.sh