Tutoriales, noticias y soluciones informáticas

PiServer con Docker – Parte 19 – Instalación de Wiki.js

Antes de empezar a explicar qué es Wiki.JS y como se instala, vamos a hacer un resumen de lo que hemos visto en los tutoriales anteriores.

  • Parte 1: Hemos aprendido a instalarle el sistema operativo a una Raspberry
  • Parte 2: Hemos explicado qué es Docker y sus componentes, y hemos instalado en nuestro equipo Docker y Docker compose.
  • Parte 3: Hemos instalado nuestro primer Docker: Pi-hole
  • Parte 4: Hemos explicado unos cuantos comandos útiles para resolver problemas y gestionar nuestros Dockers.
  • Parte 5: Le hemos instalado un VPN a nuestra Raspberry (Wireguard) con un gestor web de usuarios incluído
  • Parte 6: Hemos aprendido a desplegar Dockers descargados de internet por nuestra cuenta, y con la excusa hemos desplegado aMule y Transmission.
  • Parte 7: Hemos instalado Plex para tener una especie de Netflix personal.
  • Parte 8: Hemos aprendido todo lo referente a servidores web instalados sobre docker.
  • Parte 9: Hemos instalado Proxy Nginx Manager que nos servirá de proxy en los siguientes artículos.
  • Parte 10: Hemos instalado Navidrome para tener una especie de Spotify personal.
  • Parte 11: Hemos aprendido a duplicar y hacer copias de seguridad de nuestros Dockers.
  • Parte 12: Hemos instalado Nextcloud para crearnos una nube privada
  • Parte 13: Hemos instalado Vikunja para tener un gestor de tareas personal.
  • Parte 14: Hemos instalado Calibre Web para tener una biblioteca de ebooks completamente ordenada.
  • Parte 15: Hemos instalado VaultWarden para tener un excelente gestor de contraseñas y hemos aprovechado para aprender cómo convertir un Docker CLI a Docker Compose
  • Parte 16: Hemos aprendido a instalar Jellyfin, que se trata de una alternativa completamente libre a Plex.
  • Parte 17: Hemos instalado Filegator, para poder compartir todo tipo de archivos de forma simple en internet.
  • Parte 18: Hemos instalado Picsur, para poder compartir fotos individuales en internet.

Como podréis comprobar, a estas alturas ya hemos visto un montón de servicios que nos permiten tener una buena cantidad de proyectos corriendo a la vez en nuestro pequeño servidor, pero existe también un docker muy útil para tener en un equipo doméstico y modesto: Wiki-JS. Se trata de un software libre destinado a hacer pequeñas Wikis colaborativas. Se pueden crear en él distintos usuarios que editen los artículos, creen artículos nuevos o simplemente puedan leer determinadas partes de la wiki, y la verdad es que visualmente es muy atractivo. Podéis hacer cosas tan chulas como ésta, que es la propia Wiki de Wiki.JS.

Guau... pues la verdad es que tiene buena pinta. Se pueden hacer menús muy currados y se ve muy bien. Pero no sé yo si un usuario normal podrá llegar a ese nivel de perfección. 

Sí que se puede. Mira, sin ir más lejos yo mismo uso este sistema tanto en mi trabajo como a nivel personal. De hecho, para preparar estos artículos dedicados a Docker, he usado el sistema de Wiki.JS para hacerme los esquemas de cómo abordar cada artículo. Fíjate: esta página la uso a nivel personal y ahí pongo tanto los esquemas para los artículos como anotaciones para recordar cosas en mis instalaciones.

https://instrucciones.matas.com.es/

Web de manuales de Marcos
¡Ah, sí! ¡Ya veo! Parece una página muy interesante que... ¡¡Espera!! ¡Esa página tiene resumidos casi todos los artículos que has puesto sobre esta serie! ¿Me has hecho tragar tus interminables artículos y resulta que tenías todo aquí esquematizado?

Sí, bueno.. como ya te dije, primero hago esquemas muy básicos en mi Wiki, y luego los explico en el blog de forma más detallada para que…

¡¡Y AÚN ENCIMA VEO QUE TIENES MÁS DOCKERS PARA INSTALAR DE LOS QUE INDICAS EN LOS ARTÍCULOS!! ¡Pero serás $%&@#!

Tranquilízate y respira, Usuario Anónimo. Tengo esquematizadas en ese Wiki algunas instalaciones para posibles futuros tutoriales, enfocados ya a usuarios más avanzados o a instalaciones empresariales, pero tal y cómo iba diciendo, en este artículo vamos a aprender a realizar una Wiki para tener a mano y organizados nuestros conocimientos. Disponer de una Wiki personal es una gran solución para tener anotado todo lo que no quieres olvidar y…

¡¡PESTAÑAS!! ¡Hasta has puesto hasta pestañas en la parte dónde explicas qué son las imágenes, contenedores y volúmenes de docker! ¿para esto estoy tragándome tanto tutorial?

Me da que te va a venir bien tomarte una tila o una valeriana, Usuario Anónimo. El formato de un blog da para poder extenderse mucho más en las explicaciones que en una simple wiki, además de poder tener el feedback de los usuarios, que es algo muy a tener en cuenta. Vamos a ver cómo podemos hacer una instalación de Wiki.JS para hacer una wiki personal y tener toda nuestra documentación bien ordenada.

1) Creamos la estructura de carpetas dentro de la carpeta «docker».

Recordad que siempre estamos guardando todos nuestros contenedores en una carpeta situada dentro de la carpeta «home» de nuestro usuario y que hemos llamado «docker«. Si este es vuestro primer tutorial, aseguraos de tener en el sistema instalada la última versión de docker compose y cread la carpeta con el siguiente comando:

mkdir docker

Dentro de esa carpeta crearemos una carpeta específica para la instalación de Wiki.JS y dentro de ella vamos a crear una carpeta para que se almacenen los datos que generará este contenedor. Haremos todo ello con los siguientes comandos.

cd docker
mkdir wikijs
cd wikijs
mkdir db-data
No es exactamente lo que has puesto en tu Wiki.js. ¿Quieres cachondearte de nosotros intentando despistarnos?. Te voy a poner una vela negra, que lo sepas. 

Ya sé que hay cosas distintas en el blog y en mi Wiki. Tal y cómo te dije, mi Wiki es para organizarme yo mismo y para tomar mis apuntes. Si un día me olvido de cómo se instala tal o cual cosa, puedo ir a mi Wiki y seguir mis propias indicaciones (no será la primera vez). Pero supongo que un lector del blog no tiene por qué entender mis esquemas y por eso aquí os pongo todo de forma mucho más detallada.

2- Creamos el archivo de configuración de Wiki.js

Dentro de la carpeta wikijs vamos a crear el archivo docker-compose.yml que nos servirá para desplegar la instalación de Wiki.js. Primero usaremos el editor nano para empezar a editar el archivo. Lo haremos con este comando.

sudo nano docker-compose.yml

Una vez abierto el editor, pegaremos dentro exactamente este contenido.

version: "3"
services:

 db:
   image: postgres:15-alpine
   environment:
     POSTGRES_DB: ${DB_NAME}
     POSTGRES_PASSWORD: ${DB_PASS}
     POSTGRES_USER: ${DB_USER}
   logging:
     driver: "none"
   restart: unless-stopped
   volumes:
     - db-data:/var/lib/postgresql/data

 wiki:
   image: ghcr.io/requarks/wiki:2
   depends_on:
     - db
   environment:
     DB_TYPE: postgres
     DB_HOST: db
     DB_PORT: 5432
     DB_USER: ${DB_USER}
     DB_PASS: ${DB_PASS}
     DB_NAME: ${DB_NAME}
   restart: unless-stopped
   ports:
     - "3001:3000"

volumes:
 db-data:
   driver: local
   driver_opts:
     type: none
     o: bind
     device: ${DOCKERDIR}/wikijs/db-data

Como podéis ver, esta instalación además de necesitar todo lo relativo al sistema de Wiki.JS va a necesitar una base de datos postgres. Ahora guardad cambios con la combinación de teclas Control + O y salid del editor nano con Control + X.

3- Creamos el archivo de variables de entorno y le damos seguridad.

Como siempre, ahora crearemos el archivo de variables de entorno. Escribid en el terminal el siguiente comando para empezar a editar el archivo.

sudo nano .env

Una vez abierto el editor, pegad este contenido.

DOCKERDIR=/home/<tu_usuario>/docker
DB_USER=elusuariodelabasededatos
DB_PASS=laclavedemibasededatos
DB_NAME=labasededatos
Aquí de nuevo estás poniendo cosas diferentes de lo que tienes en el artículo de la Wiki. ¿Alguien te ha dicho alguna vez que te odia? Porque yo estoy a punto de decírtelo. 

A ver… Recuerda que los archivos de variables de entorno que os dejo yo debéis modificarlos. Da igual lo que haya puesto dentro de las variables porque debéis modificarlas todas. No es seguro dejar los usuarios y contraseñas que estoy inventando. Así que lo que debéis hacer es lo siguiente:

  • En la primera línea debéis poner después del símbolo «=» la ruta hacia la carpeta «docker» (bastaría con cambiar <tu_usuario> por el usuario de la raspberry).
  • En las tres líneas siguientes, debéis inventaros los datos. Simplemente poned algo «raro» para no tener lo mismo que he puesto yo. Estos datos se usarán para que Wiki.JS pueda conectar con la base de datos, pero no usaremos estos usuarios y contraseñas nunca para acceder nosotros a ningún sitio.

Una vez modificado correctamente el archivo .env y después de haber guardado cambios con Control + O y salido del editor con Control + X, debemos cambiar los permisos de ese archivo para que nadie con malas intenciones pueda acceder a él. Es muy sencillo. Lo podemos hacer con el siguiente comando:

sudo chmod 600 .env

Con esto ya tendremos todo listo para realizar la instalación de Wiki.JS en nuestro sistema.

4- Instalación de Wiki.JS

La instalación de Wiki.JS, llegados a este punto, es idéntica al resto de contenedores que hemos desplegado en otros artículos. Simplemente debemos teclear este comando en nuestro terminal desde la carpeta dónde tenemos alojado el archivo docker-compose.yml

sudo docker-compose -p "wikijs" up -d

Después de un rato podríamos acceder a nuestra nueva wiki desde la siguiente dirección (pero no lo hagáis todavía. Ahora os explico).

http://ip.de.la.raspberry:3001

Esa dirección (modificada con la dirección ip local de vuestra raspberry) generaría una web similar a ésta.

Página de instalación de Wiki.JS
¿Y por qué no podemos ir rellenando los campos? Yo voy a ir haciéndolo. 

¿Pero me quieres hacer caso sólo por una vez? Si te fijas, uno de los campos que el sistema te pide rellenar es el que pone «Site URL». Aún no tenemos la web alojada en el dominio definitivo, así que antes de apresurarse a cubrir los campos vamos a configurar nuestro proxy. En cuanto la web cuelgue de una dirección accesible a través de internet, ya podríamos cubrir todos los campos.

Pero en tu Wiki.js no pones nada de que haga falta configurar el proxy. O está mal tu Wiki o está mal este artículo. ¡Qué desastre!

Los dos están bien. Como ya te he dicho, mi Wiki.js son sólo esquemas de instalación. Para mi, la instalación de Wiki.js ya ha terminado en este punto (porque la web ya se genera correctamente). Sin embargo la web aún no es accesible a través de internet, y como en el blog pretendo explicar todo el proceso del principio a fin vamos a añadir aún algunos puntos a mayores.

5- Configuración del proxy

Para que nuestra instalación de Wiki.JS sea accesible desde internet vamos a necesitar tener un proxy en nuestro sistema. Voy a suponer que habéis hecho ya todo lo que se indica en el artículo número 9 de esta serie de tutoriales, por lo que deberíais tener instalado y configurado en vuestro sistema Nginx Proxy Manager. Si es así, vamos a entrar en su página web, pulsar sobre Hosts y luego sobre Proxy Hosts.

Configuración del proxy

Ahora pulsaremos sobre el botón que hay arriba a la derecha en el que pone «Add proxy host«.

Añadir un proxy nuevo

En la siguiente pantalla debemos cubrir los siguientes campos:

  • Domain names: ponemos un subdominio del dominio que tenemos contratado. Algo como wiki.midominio.es
  • scheme: http
  • Forward Hostname / IP: ponemos la ip local del host dónde hemos hecho la instalación de Filegator.
  • Forward Port: 3001

Después pulsamos sobre el botón que pone Save

Proxy por http

Esto nos va a permitir acceder al dominio de nuestra instalación de Wiki.JS por http, pero debemos activar también el acceso a través de https. Para ello vamos a pulsar sobre los tres puntitos que hay al final de la línea del proxy que acabamos de configurar y luego pulsaremos la opción «Edit».

Editamos el proxy

En la nueva pantalla, pulsamos sobre el desplegable llamado «SSL Certificate» y seleccionamos la opción «Request a new SSL Certificate«. Dejamos también marcadas las opciones «Force SSL» y «HTTP/2 Support» . Después, pulsamos sobre el botón «Save».

Proxy por https

Con esto hecho, ya deberíamos poder acceder a nuestra instalación de Wiki.JS a través del subdominio que hemos configurado en el proxy. Vamos ahora a terminar de configurar nuestra Wiki.

6- Configuración básica de Wiki.JS. Finalizando la instalación de Wiki.JS.

Ahora sí que vamos a acceder a la web a través de nuestro nuevo subdominio y a rellenar los campos que se nos piden.

Instalación de wiki.js - Rellenando datos

Después de unos segundos, nos podremos logar en el interface de Wiki.JS con el correo electrónico y la contraseña que hemos puesto en el apartado anterior.

Poniendo credenciales

Si elegimos ir a la zona de administración de la web, el menú principal nos mostrará un montón de opciones .

Menú de la izquierda

En «Navigation» podremos modificar el menú que nos va a aparecer a la izquierda de nuestra página principal. Luego, en el campo «icono» podemos elegir qué icono vamos a poner en cada línea del menú (Yo suelo escoger los iconos de Material Design). En «Tipo de objetivo», si escogemos «página», podemos decir a qué página va a llevar cada enlace.

Edición de menús

Además, algo muy útil es que en las zonas de «Usuarios» y «Grupos» podemos definir qué usuarios o grupos de usuarios tienen acceso a cada uno de los artículos. Esto es especialmente útil si, por ejemplo, estamos haciendo una web con documentación para determinados departamentos de una empresa. Podemos definir que algunos usuarios tengan acceso a una determinada documentación y otros usuarios tengan acceso a otra documentación completamente diferente.

Os animo a cacharrear en la web que acabáis de construir. He de reconocer que al principio me parecía un sistema algo complicado, pero una vez que te acostumbras te das cuenta de que tiene un potencial muy grande.

7- Actualización de nuestra instalación de Wiki.JS

De vez en cuando sería conveniente entrar en el terminal y desde ahí mirar si hay alguna actualización de este contenedor, y por supuesto aplicarla en caso de que la haya. Veamos cómo podemos hacerlo.

7.1- Si sólo tenemos este contenedor instalado:

Si este es el único contenedor que hemos instalado, lo más sencillo para hacerlo es crear un pequeño script que ejecute secuencialmente todos los comandos necesarios. Para ello teclearemos primero este comando en nuestro terminal.

sudo nano actualizar.sh

Dentro del editor de texto, pegaremos este código.

cd /home/<tu_usuario>/docker/wikijs
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f

Aseguraos de modificar la primera línea del script por la ruta correcta en la que reside la configuración de vuestro Wiki.JS. Luego, pulsaremos Control + O para guardar cambios y Control + X para salir del editor de texto.

El script, aunque ya está terminado, aún no es ejecutable, pero no es nada que no podamos evitar. Simplemente debemos teclear este comando en el terminal para hacerlo ejecutable.

sudo chmod +x actualizar.sh

Ahora, cuando queramos actualizar, sólo tendremos que ejecutar este comando (Desde la carpeta en la que hayamos creado el script, claro).

sudo ./actualizar.sh

7.2- Si hemos instalado más contenedores en la carpeta docker:

Si hemos seguido el resto de artículos, deberíamos tener un montón de contenedores corriendo a la vez y todos los tenemos dentro de la carpeta «docker«, podemos hacer un pequeño script que vaya recorriendo todas las subcarpetas que hay dentro de «docker» y que vaya actualizando poco a poco cada contenedor. De hecho seguro que ya lo tenéis hecho, pero en caso contrario os digo cómo crear este script.

Lo primero sería iniciar la edición del script con este comando:

sudo nano actualizar.sh

Una vez que estemos dentro del editor de texto, pegaríamos este contenido en el archivo (Cambiando la línea BASE_DIR="/home/<tu_usuario>/docker" por la ruta correcta, claro):

#!/bin/bash

# Actualizo el sistema operativo
sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove -y
sudo apt-get autoclean -y


# Definimos el directorio base
BASE_DIR="/home/<tu_usuario>/docker"

# Recorro todas las subcarpetas dentro del directorio base
for dir in $BASE_DIR/*; do
  if [ -d "$dir" ]; then
    echo "Procesando $dir ..."
    cd "$dir"
    sudo docker-compose pull
    sudo docker-compose up -d --remove-orphans
    sudo docker image prune -f
  fi
done

# Ya he actualizado todo. Ahora reinicio el sistema. 
sudo shutdown -r now

Una vez hecho esto, guardamos cambios con Control + O y cerramos el editor con Control + X. Por último, hacemos ese archivo ejecutable con el siguiente comando:

sudo chmod +x actualizar.sh

Antes de ejecutar ese comando (que os actualizará todos los contenedores que tengáis en esa carpeta) tenéis que tener muy claro que si hay algún contenedor parado o que no estéis utilizando, este script os lo va a iniciar, así que revisad bien primero si todos los contenedores que hay ahí necesitan estar levantados. Si es así, para actualizar todos el comando a usar sería éste.

./actualizar.sh

Con esto ya deberíamos tener nuestra wiki perfectamente configurada. Creo que la instalación es muy sencilla. ¿Se os ha complicado algo en el camino? ¿Preferís algún otro sistema de wikis como bookstack o docuwiki? Cada uno tiene sus ventajas y sus inconvenientes, pero para mi (y esto es ya una opión personal completamente discutible) este es el que más se adecúa a lo que pretendo hacer yo con una wiki. Estaré atento a vuestros comentarios.

Share

3 comentarios

  1. yepaswepas

    Solo escribo para decirte que te llevo al día en el blog pero que ando liado (entre playa y piscina) y tengo las practicas acumuladas para septiembre. Que tendré que comprar la pi5, que la 3 va a sacar fuego. Además tengo un problemilla con pi-hole que no le encuentro solución. A ver que me puedes decir.

    Gracias por seguir escribiendo en verano!

    • Marcos

      No veo ningún comentario tuyo pendiente de solucionar en el artículo sobre pi-hole. Cuando puedas comenta el problema que tienes en ese artículo y a ver si entre todos le encontramos solución.

  2. Carlos

    Gracias Marcos,
    Funcionando! A la primera y desde el sofá
    Un saludo!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

© 2024 Flopy.es

Tema por Anders NorenArriba ↑

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies