Cómo crear un eepiste con i2pd y apache2 con VirtualHost en linux

Publicado por Neo el 01/12/2020

En el post anterior explicábamos de forma resumida como crear nuestro primer eppsite en i2p. Pero, ¿y si en el mismo servidor apache queremos tener más de un sitio web alojado? ¿Cómo hago?

Apache dispone de la directiva precisamente para alojar varios sitios web con distintos dominios en el mismo servidor. Su creación es trivial.

Primero copiamos todos los ficheros de nuestro sitio web a una carpeta, generalmente dentro de /var/www. Si no es en esta carpeta debe ser en otra que apache tenga permisos al menos de lectura, que su propietario sea www-data o que pertenezca al grupo www-data con permisos de lectura.

Luego creamos un archivo de configuración de nuestro sitio dentro de /etc/apache2/sites-available/ algo así:

<VirtualHost neoniet.i2p:80>
ServerName neoniet.i2p
ServerAlias jf32pdnofckjvedni77vjt26m6opzzz6ocpkpxof4fptzym56raq.b32.i2p
ServerAdmin webmaster@localhost
DocumentRoot /var/www/neoniet.i2p/public
ErrorLog ${APACHE_LOG_DIR}/error.neoniet.i2p.log
CustomLog ${APACHE_LOG_DIR}/access.neoniet.i2p.log combined
</VirtualHost>

<VirtualHost neoniet.i2p:80> Le indica a apache que todo lo encerrado en este tag corresponde a la configuración de un nuevo sitio web que escucha en el puerto 80 del servidor de la ip correspondiente a nombre de dominio neoniet.i2p.

ServerName neoniet.i2p Indica el nombre de dominio de nuestro sitio y se corresponde con la cabecera host del cliente o del navegador que hace la petición.

ServerAlias Nos permita indicar un nombre alternativo para nuestro servidor, en este caso, nuestra dirección i2p abreviada en Base32 y nuestra clave criptográfica completa en Base64.

ServerAdmin webmaster@localhost Indica la dirección de correo electrónico

Tal y como tenemos el archivo de configuración ya estría listo. Creamos un enlace simbólico a /etc/apache2/sites-availabe/neoniet.i2p.conf a /etc/apache2/sites-enabled/.

Para un sitio en la internet normal ya estaría todo listo, pero i2p es distinto, apache2 y nuestro sistema no saben qué es una dirección i2p, no saben resolver el nombre de dominio pues no se trata de un estándar. De alguna forma tenemos que hacerle saber a apache que neoniet.i2p es un nombre de dominio y que la dirección en Base32 y Base64 también lo son. Para ello tendremos que editar el archivo /etc/hosts.

Si tenemos el router i2p corriendo en la misma máquina en la que tenemos apache habría que añadir las siguiente líneas:

127.0.0.1 neoniet.i2p
127.0.0.1 jf32pdnofckjvedni77vjt26m6opzzz6ocpkpxof4fptzym56raq.b32.i2p

Si el router i2p lo tenemos en una máquina de nuestra red local y el servidor web en otra tendríamos que cambiar 127.0.0.1 por la ip del servidor apache, por ejemmplo 192.168.0.69:

192.168.0.69 neoniet.i2p
192.168.0.69 jf32pdnofckjvedni77vjt26m6opzzz6ocpkpxof4fptzym56raq.b32.i2p

Ahora si reiniciamos apache:

systemctl restart apache2

Y listo ya tendríamos nuestro servidor apache despachando sitios webs en i2p según sus nombres de dominio.