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 -
Ahora puedes instalar el paquete Node.js utilizando el comando apt que aparece a continuación.
sudo apt install nodejs
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
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
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.
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.
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
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
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
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
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
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 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.
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«.
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.
Elige el editor que quieras utilizar. En este ejemplo, utilizaremos el editor Markdown.
Introduce el título, la descripción y los demás. Luego haz clic en«Aceptar«.
Escribe los detalles de la página índice para tu Wiki.js y haz clic en «CREAR» para confirmar.
Y deberías ver la página de inicio por defecto del Wiki.js que acabas de crear.
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.
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.