Cómo instalar Wiki.js con Apache2 Reverse Proxy en Ubuntu 22.04

Wiki.js es un software wiki gratuito y de código abierto basado en Node.js, Git y Markdown. Está publicado bajo la Licencia AGPL-v3 y diseñado para el rendimiento y la conservación de los recursos del sistema. Wiki.js es un potente software wiki que puede instalarse en cualquier parte de tu sistema; puedes instalarlo en tu sistema operativo o utilizando servicios en la nube como Heroku y también desplegar Wiki.js en tus entornos de contenedores como Docker y Kubernetes.

Wiki.js es compatible con la base de datos PostgreSQL y proporciona más de 50 integraciones para autenticación adicional, sistemas de registro, motores de búsqueda, renderizado y almacenamiento. Es un potente software Wiki construido sobre hermosas e intuitivas interfaces para el panel de administración y las páginas. Es un software wiki totalmente personalizable para documentar tu pila tecnológica.

En esta guía, instalarás y configurarás Wiki.js en un servidor Ubuntu 22.04, utilizando PostgreSQL como base de datos por defecto y Apache2 como proxy inverso. Además, tendrás una conexión segura HTTPS/SSL en tu instalación de Wiki.js. Cuando hayas terminado, tendrás un Wiki.js totalmente funcional y seguro en tu sistema Ubuntu.

Requisitos previos

Para completar esta guía, primero necesitarás los siguientes requisitos:

  • Un servidor Ubuntu 22.04.
  • Un usuario no root con privilegios de root/administrador.
  • Un nombre de dominio apuntando a la dirección IP de tu servidor Ubuntu.

Instalar Node.js

Antes de instalar Wiki.js, debes instalar las dependencias que requiere Wiki.js.

Wiki.js es un software wiki escrito principalmente en JavaScript, por lo que en este primer paso instalarás el tiempo de ejecución JavaScript Node.js. El repositorio por defecto de Ubuntu proporciona el paquete Node.js, pero para esta guía, utilizarás el repositorio Nodesource para instalar Node.js.

Ejecuta el siguiente comando curl para añadir el repositorio Nodesource a tu sistema Ubuntu. En el momento de escribir esto, Wiki.js requería al menos Node.js v8 y superior. Y para esta guía, instalarás la versión LTS de Node.js v16.

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

añadir repositorio nodesource

Ahora puedes instalar el paquete Node.js utilizando el comando apt que aparece a continuación.

sudo apt install nodejs

instalar nodejs lts

Una vez completada la instalación, comprueba y verifica la versión de Node.js utilizando el siguiente comando. Deberías ver la versión Node.js v16 LTS en la pantalla de tu terminal.

node --version
npm --version

comprobar la versión del nodo

Instalación de la base de datos PostgreSQL

Por defecto, WIki.js admite varios RDBMS como PostgreSQL, MySQL/MariaDB y SQLite (por defecto), pero la base de datos recomendada para producción es PostgreSQL. Instalarás el paquete PostgreSQL en el sistema Ubuntu, y luego crearás la base de datos y el usuario para Wiki.js.

Para empezar, ejecuta el siguiente comando apt para instalar la base de datos PostgreSQL en tu servidor. Introduce Y para confirmar la instalación y pulsa ENTER para continuar, y comenzará la instalación.

sudo apt install postgresql postgresql-common

instalar postgresql

Cuando termine la instalación, ejecuta el siguiente comando systemctl para comprobar y verificar el servicio PostgreSQL. Y deberías ver que el servicio PostgreSQL está activado, lo que significa que se iniciará automáticamente al arrancar el sistema. Y el estado actual del servicio PostgreSQL es«Activo«.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Accede a la consola PostgreSQL utilizando el siguiente comando para crear la base de datos y el usuario PostgreSQL.

sudo -u postgres psql

Ejecuta el siguiente comando desde tu consola PostgreSQL para crear una nueva base de datos y un nuevo usuario para el Wiki.js. En este ejemplo, estamos creando una base de datos«wikijs» y el usuario«wiki» con la contraseña«wikijspassword«.

CREATE DATABASE wikijs;
CREATE USER wiki WITH ENCRYPTED PASSWORD 'wikijspassword';
GRANT ALL PRIVILEGES ON DATABASE wikijs TO wiki;

Ahora puedes utilizar«Ctrl+d» para salir de la consola PostgreSQL, o simplemente utilizar el comando«\q» para salir.

crear base de datos postgresql

Instalar Wiki.js

Ahora instalarás manualmente Wiki.js en tu sistema Ubuntu. A través de esta guía, crearás un usuario de sistema para Wiki.js, descargarás el código fuente de Wiki.js, configurarás Wiki.js con la base de datos PostgreSQL y, por último, ejecutarás Wiki.js como un servicio systemd.

Primero, ejecuta el siguiente comando para crear un nuevo usuario para Wiki.js. En este ejemplo, estamos creando un nuevo usuario de sistema llamado«wiki» con el directorio de inicio por defecto«/opt/wikijs» y como se trata de un usuario de sistema, estamos deshabilitando el acceso al shell.

sudo useradd -r -d /opt/wikijs -s /usr/sbin/nologin wiki

Ahora descarga el código fuente de Wiki.js utilizando el siguiente comando wget.

wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

Cuando termine la descarga, crea un nuevo directorio«/opt/wikijs» y extrae en él el código fuente de Wiki.js. Deberías ver que el código fuente de Wiki.js está disponible en el directorio de instalación «/opt/wikijs«.

mkdir -p /opt/wikijs
tar xzf wiki-js.tar.gz -C /opt/wikijs

Para configurar Wiki.js con la base de datos PostgreSQL, copiarás la configuración de ejemplo por defecto«config.sample.yml» y la modificarás/editarás utilizando tu editor de texto.

Ejecuta el siguiente comando para copiar el archivo de configuración de ejemplo de Wiki.js a«/opt/wikijs/config.yml». A continuación, edita el nuevo archivo«/opt/wikijs/config.yml» utilizando el editor nano.

cp /opt/wikijs/config.sample.yml /opt/wikijs/config.yml
nano /opt/wikijs/config.yml

Cambia la configuración por defecto como se indica a continuación.

En este ejemplo, ejecutaremos el Wiki.js en el puerto TCP por defecto«3000«. Asegúrate de cambiar el nombre, usuario y contraseña de la base de datos PostgreSQL. En la opción«bindIP«, cambia a localhost o«127.0.0.1«. Para la configuración del registro Wiki.js, utilizaremos el nivel por defecto«info» con el formato«json«.

# default port wikijs will run
port: 3000
# PostgreSQL database details
db:
type: postgres
host: localhost
port: 5432
user: wiki
pass: wikijspassword
db: wikijs
ssl: false

# bind wikijs to localhost only
bindIP: 127.0.0.1

# setup log and the format
loglevel: info
logFormat: json

Guarda y cierra el archivo cuando hayas terminado.

descargar y configurar wikijs

Ahora ejecuta el siguiente comando chown para cambiar la propiedad del directorio de instalación de Wiki.js «/opt/wikijs» al usuario «wiki».

sudo chown -R wiki:wiki /opt/wikijs

En este ejemplo, ejecutaremos Wiki.js como un servicio systemd. Por lo tanto, necesitas crear un nuevo archivo de servicio systemd para Wiki.js.

Ejecuta el siguiente comando para crear un nuevo archivo de servicio systemd «/etc/systemd/system/wikijs.service».

sudo nano /etc/systemd/system/wikijs.service

Añade la siguiente configuración al archivo.

[Unit]
Description=Wiki.js
After=network.target postgresql.service
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always

User=wiki
Environment=NODE_ENV=production
WorkingDirectory=/opt/wikijs

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para recargar el gestor del sistema y aplicar el nuevo archivo de servicio«wikijs.service»

sudo systemctl daemon-reload

Ahora puedes iniciar y activar el servicio «wikijs» mediante el siguiente comando.

sudo systemctl start wikijs
sudo systemctl enable wikijs

configurar el servicio wikijs systemd

Por último, comprueba y verifica el servicio «wikijs» utilizando el siguiente comando. Ahora deberías ver que el servicio «wikijs» se ejecuta en el puerto TCP por defecto«3000» con PostgreSQL como base de datos por defecto.

sudo systemctl status wikijs

comprobar servicio wikijs

Configurar Apache2 como Proxy Inverso

En este ejemplo, Wiki.js se ejecuta ahora en el puerto TCP «3000». Para exponerlo a redes externas o a Internet, es mejor configurar el proxy inverso delante de Wiki.js y aplicar el HTTPS/SSL sobre él para proteger cualquier credencial e inicio de sesión. También utilizarás Apache2 como proxy inverso para Wiki.js.

Ejecuta el siguiente comando apt para instalar el paquete Apache2. Introduce Y para confirmar la instalación y pulsa ENTER para continuar, y comenzará la instalación.

sudo apt install apache2

instala apache2

Una vez finalizada la instalación, ejecuta el siguiente comando «ufw» para abrir los puertos HTTP y HTTPS en tu sistema ubuntu. A continuación, verifica la lista de reglas UFW.

sudo ufw allow "Apache Full"
sudo ufw status

permitir apache2 ufw

A continuación, habilita algunos módulos de Apache2 mediante el siguiente comando. Utilizarás estos módulos para configurar el proxy inverso Apache2.

sudo a2enmod proxy proxy_http ssl remoteip http2

activar módulos apache2

Ahora crea una nueva configuyración de host vitual Apache2«/etc/apache2/sites-available/wikijs.conf» utilizando el siguiente comando.

sudo nano /etc/apache2/sites-available/wikijs.conf

Añade la siguiente configuración al archivo. En este ejemplo, utilizaremos el dominio«wiki.hwdomain.io» para la instalación de Wiki.js y los certificados SSL de letsencrypt. Asegúrate de cambiar el nombre de dominio y la ruta de los certificados SSL.

<VirtualHost *:80>
    ServerName wiki.hwdomain.io
# Comment to prevent HTTP to HTTPS redirect
Redirect permanent / https://wiki.hwdomain.io

ErrorLog /var/log/apache2/wiki.hwdomain.io-error.log
CustomLog /var/log/apache2/wiki.hwdomain.io-access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName wiki.hwdomain.io

ProxyPreserveHost On

ProxyPass "/" "http://127.0.0.1:3000/"
ProxyPassReverse "/" "http://127.0.0.1:3000/"

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/wiki.hwdomain.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wiki.hwdomain.io/privkey.pem
Protocols h2 http/1.1

# Enable only strong encryption ciphers and prefer versions with forwarding Secrecy
SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
SSLHonorCipherOrder on

# Disable insecure SSL and TLS versions
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

ErrorLog /var/log/apache2/wiki.hwdomain.io-error.log
CustomLog /var/log/apache2/wiki.hwdomain.io-access.log combined
</VirtualHost>
</IfModule>

Guarda y cierra el archivo cuando hayas terminado.

A continuación, activa el archivo de host virtual‘wikijs.conf» utilizando el siguiente comando.

sudo a2ensite wikijs.conf

Comprueba y verifica la configuración de Aache2 utilizando el siguiente comando. si recibes un mensaje de salida como«Sintaxis OK«, significa que la configuración de Apache2 está lista. A continuación, reinicia el servicio Apache2 para aplicar los nuevos cambios.

sudo apachectl configtest
sudo systemctl restart apache2

configurar el host virtual apache2

Configurar la instalación de Wiki.js

Abre tu navegador web y visita el nombre de dominio de tu instalación de Wiki.js (es decir https://wiki.hwdomain.io/).

Introduce el nuevo correo electrónico del administrador, la contraseña y la URL del sitio para tu instalación de Wiki.js. A continuación, haz clic en el botón«INSTALAR» para iniciar la instalación.

instalar wiki.js

Una vez finalizada la instalación, verás la página de inicio de sesión de Wiki.js. Introduce el correo electrónico y la contraseña del administrador y haz clic en «Iniciar sesión«.

inicio de sesión wiki.js

Ahora verás el mensaje de bienvenida de Wiki.js. Haz clic en el botón«CREAR PÁGINA DE INICIO» para configurar la página índice por defecto de tu Wiki.js.

bienvenido crear página de inicio

Elige el editor que quieras utilizar. En este ejemplo, utilizaremos el editor Markdown.

elegir editor

Introduce el título, la descripción y los demás. Luego haz clic en«Aceptar«.

crear página de inicio

Escribe los detalles de la página índice para tu Wiki.js y haz clic en «CREAR» para confirmar.

editar página de inicio wiki.js

Y deberías ver la página de inicio por defecto del Wiki.js que acabas de crear.

Página de inicio de wiki.js

Para acceder al panel de administración de Wiki.js, haz clic en el icono de engranaje de configuración de la parte superior izquierda. A continuación deberías ver el panel de administración de Wiki.js.

wiki.js panel de administración

Conclusión

En este tutorial, has configurado Wiki.js sobre la base de datos PostgreSQL y el proxy inverso Apache2, ejecutándose en el último servidor Ubuntu 22.04. También has asegurado tu Wiki.js con un cortafuegos UFW y SSL/HTTPS activado en el proxy inverso Apache. Al final, también has configurado la página de inicio o índice por defecto para tu instalación de Wiki.js.

Puedes crear contenido adicional y configurar categorías para tu proyecto Wiki. También puedes añadir algunos módulos a tu Wiki.js para ampliar su funcionalidad o configurar nuevos temas para Wiki.js.

Scroll al inicio