TIPS – Kiwix como servicio en Ubuntu Server 16.04 para tu LAN

Kiwix es una aplicación que te permite llevar archivos zim a todos los lugares que quieras como ellos mismos dicen en su wiki:

¡Kiwix te permite tener toda la Wikipedia en tu mano donde quiera que vayas! En un barco, en medio de la nada o en la cárcel, Kiwix te da acceso al conocimiento humano. ¡No necesitas Internet, todo se almacena en tu ordenador, memoria USB o DVD!

Famosa por ser la aplicación en la que muchos tenemos Wikipedia offline, este articulo tiene como referencia varias cosas que he encontrado en Internet  ademas del articulo del colega Lázaro de como crear un servicio kiwix pero yo quiero llevarlo un poco mas allá y explicar un par de cosas que no están explicadas en su articulo.

Preparando todo lo necesario

Primero vamos a descargar kiwix hay versiones para todos los sistemas operativos pero en este caso voy a descargar la versión 64 bits para linux.

Evidentemente necesitamos un archivo zim con los datos que necesitamos podemos usar uno que ya tengamos como es mi caso que tengo wikipedia_es_all_2017-05.zimecured_es_all_2017-12.zim los archivos de zim están nombrados por tipodewiki, idioma, características (sin imágenes, sin vídeos, todos el contenido) y la fecha de creación, podemos descargarlos desde http://download.kiwix.org/zim/.

Una vez que tengamos todo montamos nuestro servidor en mi caso un CT en PVE con 512 MB de RAM 1 core y 50GB, en mi caso use como ruta de toda mi configuración para kiwix /opt.

Extraemos kiwix en la carpeta /opt

tar -C /opt -xvjf kiwix-linux-x86_64.tar.bz2

 

Una vez que tengamos kiwix en /opt para ver nuestra wiki en la web desde cualquier equipo de la red podemos usar:

#Kiwix server usando puerto 80
/opt/kiwix/bin/kiwix-serve /opt/data/content/wikipedia_es_all_2017-05.zim
#Kiwix server usando puerto 9091
/opt/kiwix/bin/kiwix-serve --port=9091 /opt/data/content/wikipedia_es_all_2017-05.zim

El servicio kiwix-serve provee algunas opciones que utilizaremos mas adelante:

  • –port=PORT para especificar el puerto en el que va a escuchar (80 por omisión)
  • –index=foobar.idx para especificar el directorio de índice de texto completo
  • –daemon para ejecutar el programa en segundo plano
  • –attachToProcess=PID para adjuntar el proceso kiwix-serve a otros procesos
  • –verbose para obtener algunos registros (logs)

Para una mayor organización de todo el contenido me he creado una carpeta data con varias sub-carpetas(no explico como crear carpetas ni el manejo de sus permisos porque no es el objetivo del manual):

  • content que sera donde agrupare los archivos zim que vaya agregando a mi server
  • index que es donde indexare los datos de cada fichero zim para facilitar la búsqueda a los usuarios
  • library para poner el library.xml que tiene toda la información sobre los archivos zim de nuestro server; esta ultima la puedes omitir y colocar library.xml dentro de la misma carpeta data.

Indexando datos de nuestros ficheros zim para mejorar la búsqueda

Otra de las utilidades de Kiwix es kiwix-index que nos ayuda con el indexado de nuestros archivos zim para eso vamos a hacer uso de la carpeta /opt/data/index y vamos a repetir el comando para cuantos archivos zim queramos indexar, en la investigación no encontré como indexar mas de un archivo a la vez; ademas cada archivo indexado va a llevar su tiempo..:D

/opt/kiwix/bin/kiwix-index -v /opt/data/content/wikipedia_es_all_2017-05.zim /opt/data/index/wikipedia.idx

 

Para la indexar uso el tipodewiki.idx por lo tanto para la ecured_es_all_2017-12.zim nos quedaría ecured.idx

Creando el fichero library.xml

Como les comente al principio del articulo cree /opt/data/ para poner ahí los ficheros de configuración uno de estos ficheros es el library.xml, pero debemos crearlo agregándole tantos ficheros zim tengamos usando la utilidad kiwix-manage

#Agregamos Wikipedia
/opt/kiwix/bin/kiwix-manage  /opt/data/library/library.xml add  /opt/data/content/wikipedia_es_all_2017-05.zim -i=/opt/data/index/wikipedia.idx
#Agregamos Ecured
/opt/kiwix/bin/kiwix-manage  /opt/data/library/library.xml add  /opt/data/content/ecured_es_all_2017-12.zim -i=/opt/data/index/ecured.idx
#Agregamos Wikibooks
/opt/kiwix/bin/kiwix-manage  /opt/data/library/library.xml add  /opt/data/content/wikibooks_es_all_2017-02.zim -i=/opt/data/index/wikibooks.idx

De lo anterior va a resultar un archivo library.xml con los siguientes datos y a medida que agreguen ficheros zim con kiwix-manage crecerá.

Creando Kiwix como servicio en Ubuntu 16.04 con systemd

Primero debemos conocer que los unit files(archivos de unidad) se emplean en la configuración de servicios. Son archivos de texto que contienen las diferentes instrucciones y están alojados por defecto en la ruta /etc/systemd/system/. Para profundizar un poco mas de estos archivos luego voy a escribir un articulo de como crear servicios en systemd con todas sus características o puede ser algo que le encarguemos a Arian @linuxcuba(leerse la regla 6.2)

Vamos a crear un fichero unit de nombre kiwix.service(para los nombres de los units de usa nombre.service) con nuestro editor preferido vamos a crear el fichero unit, Ubuntu trae por defecto nano yo prefiero vim para la creación del unit file  vim /etc/systemd/system/kiwix.service, y le agregamos el siguiente código:

[Unit]
Description=el kiwix como daemon en http://wiki.topesdecollantes.cu
After=network.target

[Service]
Type=forking
ExecStart=/opt/kiwix/bin/kiwix-serve --daemon --library /opt/data/library/library.xml

[Install]
WantedBy=multi-user.target

 

Como pueden ver en lugar de llamar directamente al fichero zim como hice anteriormente estoy usando library.xml, esto es debido a que con el library.xml podemos cargar mas de un fichero zim ademas también agregue la opción –index que no ayudara en la búsqueda dentro del contenido y no solo en los títulos.

Solo nos queda acceder a nuestro servidor y disfrutar del contenido de las wikis en nuestra red.


Saludos, hasta un próximo articulo…

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.8 / 5. Recuento de votos: 5

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Rafael L. Salgueiro 12 artículos
Administrador de redes y sistemas. Melómano, hedonista Usuario de GNU/Linux, Linux-User: #418573. Amante de las tecnologías en general.

5 comentarios


  1. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 63.0 Firefox 63.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0

    Hola, me pareció muy bueno el artículo, solo tengo una duda, ¿el archivo de library.xml como quedaría? es que no me deja abrir kiwix como servicio en el navegador

    • Firefox 63.0 Firefox 63.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0

      Hola Ariagna, el contenido de `library.xml` es extenso, no entiendo cuando dices que no te deja abrir kiwix como servicio, es una de las cosas que se explican en el articulo. sigue los pasos.

  2. Firefox 57.0 Firefox 57.0 GNU/Linux x64 GNU/Linux x64
    Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0

    Muy bueno el artículo, pero con un pequeño error, si vemos el USAGE del wiki-manage:

    kiwix-manage LIBRARY_PATH add ZIM_PATH [–zimPathToSave=../content/foobar.zim] [–current] [–indexBackend=xapian] [–indexPath=FULLTEXT_IDX_PATH] [–url=http://…metalink]

    Entonces el paso de añadir ZIMS a la librería, sería:

    /opt/kiwix/bin/kiwix-manage /opt/kiwix/data/library/library.xml add /opt/kiwix/data/content/wikibooks_es_all_2017-02.zim –indexPath=/opt/kiwix/data/index/wikibooks.idx

    S@lu2

    • Firefox 58.0 Firefox 58.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0

      Muchas gracias por el comentario del articulo; no hay ningún error si revisas http://wiki.kiwix.org/wiki/Kiwix-manage veras que la opción dice [–indexPath|-i=FULLTEXT_IDX_PATH], es decir lo que agregas es valido pero -i es simplemente la misma opción mas corta.

      • Firefox 68.0 Firefox 68.0 Windows 10 x64 Edition Windows 10 x64 Edition
        Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0

        Sabes q tuve un problema con eso cuando pongo -i=camino…el me pone en el indexpath=»=camino al idx» asi q el comando realmente seria -i camino sin el = …te hablo de la kiwinx 1.0
        alex out

Responder a TuxIsla Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.


*