Cómo instalar Wiki.js basado en NodeJS en Fedora 29

Wiki.js es una aplicación wiki de código abierto, moderna y potente, basada en Node.js, Git y Markdown. Wiki.js se ejecuta en el rapidísimo motor Node.js y está optimizado para conservar los recursos de la CPU. Algunas de las características de Wiki.js que vale la pena mencionar son

  • Edición en Markdown, respaldada por Git
  • Ligero, pero extremadamente potente
  • Un bonito diseño para la web moderna
  • Control de acceso integrado
  • Gestión intuitiva de los activos
  • Motor de búsqueda incorporado

En este tutorial, te guiaremos a través del proceso de instalación de la versión 1 de Wiki.js en un sistema operativo Fedora 29utilizando NGINX comoservidor proxy inverso, MongoDB como servidor de bases de datos, PM2 como gestor de procesos y, opcionalmente, puedes asegurar la capa de transporte utilizando el clienteacme.shy la autoridad de certificadosLet’s Encrypt para añadir soporte SSL.

Requisitos

Los requisitos para ejecutar Wiki.js son los siguientes

  • Node.js 6.11.1 a 10.x
  • MongoDB versión 3.2 o posterior.
  • Git versión 2.7.4 o posterior.
  • Software de servidor web como NGINX, Apache, Caddy, H2O…
  • Un repositorio Git vacío (opcional).
  • Un mínimo de 512MB deRAM. Se recomienda1GB de RAM.
  • Unos 300MBde espacio en disco.
  • Nombre de dominio con registrosDNS A/AAAAconfigurados.

Requisitos previos

  • Un sistema operativo Fedora 29.
  • Un usuario no root con privilegios ensudo.

Pasos iniciales

Comprueba tu versión de Fedora:

cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)

Configura la zona horaria:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Actualiza los paquetes de tu sistema operativo (software). Este es un primer paso importante porque garantiza que tienes las últimas actualizaciones y correcciones de seguridad de los paquetes de software por defecto de tu sistema operativo:

sudo dnf check-upgrade || sudo dnf upgrade -y

Instala algunos paquetes esenciales que son necesarios para la administración básica del sistema operativo Fedora:

sudo dnf install -y curl wget vim git unzip socat bash-completion

Paso 1- Instalar Node.js y npm

Wiki.js está construidosobre Node.js.Vamos a instalar la última versión recomendada paraWiki.js, que es la versión 10 en el momento de escribir este artículo.En Linux, tienes varias opciones de instalación de Node.js: Binarios Linux (x86/x64), Código Fuente o a través de Gestores de Paquetes. Utilizaremos la opción del Gestor de Paquetes, que facilita la instalación y actualización de Node.js.

Descarga e instala la última versión desoporte a largo plazo (LTS) de Node.js desde el repositorio de Fedora:

sudo dnf -y install nodejs

Para compilar e instalar complementos nativos desde npm, es posible que también necesites instalar herramientas de compilación:

sudo dnf install -y gcc-c++ make
# or
# sudo dnf groupinstall -y 'Development Tools'

NOTAnpmse distribuye con Node.js, lo que significa que cuando descargas Node.js, automáticamente se instala npm en tu sistema.

Comprueba las versiones de Node.js y npmen las versiones de Node.js y npm:

node -v && npm -v
# v10.15.0
# 6.4.1

Npm es un proyecto independiente de Node.js, y suele actualizarse con más frecuencia. Como resultado, incluso si acabas de descargar Node.js (y por tanto npm), probablemente necesitarás actualizar tu npm. Por suerte, ¡npm sabe cómo actualizarse! Para actualizar tu npm, escribe esto en tu terminal:

sudo npm install -g npm@latest

Este comando actualizará npm a la última versión estable.

Vuelve a comprobar la versión de npm con:

npm -v
# 6.7.0

Y debería devolver el número de la última versión.

Paso 2 – Instalar la base de datos MongoDB

Wiki.jsnecesita una base de datos para almacenar sus datos, y la versión estable actual de Wiki.js sólo soporta el motor de base de datos MongoDB.De acuerdo con esto, necesitaremos instalar la base de datos MongoDB.

Descarga e instala la base de datos MongoDB:

sudo dnf install -y mongodb mongodb-server

Comprueba la versión de MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.1
# db version v4.0.1

Inicia y habilita (configúralo para que se inicieal reiniciar)el servicioMongoDB sino está ya iniciado y habilitado:

sudo systemctl start mongodb.service
sudo systemctl enable mongodb.service

Paso 3 – Instalar el clienteacme.shy obtener el certificado Let’s Encrypt (opcional)

Asegurar tu sitio web con HTTPS no es necesario, pero es una buena práctica para asegurar el tráfico de tu sitio. Para obtener un certificado SSL de Let’s Encrypt, utilizaremos el clienteacme.sh.Acme.shes un software de shell UNIX puro para obtener certificados SSL de Let’s Encrypt con cero dependencias.

Descarga e instala:acme.sh

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Comprueba la versión deacme.sh:

acme.sh --version
# v2.8.1

Obténcertificados RSAy ECC/ECDSA paratu dominio/nombre de host:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Si quieres certificados falsos para hacer pruebas, puedes añadir--staginga los comandos anteriores.

Para listar tus certificados emitidos puedes ejecutar:

acme.sh --list

Crea carpetas para almacenar tus certificados. Nosotros utilizaremos/etc/letsencrypt pero puede ser cualquier cosa que prefieras para almacenar los certificados SSL.

mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_ecc

Instala/copia los certificados en/etc/letsencryptdirectorio.

# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"

Después de ejecutar los comandos anteriores, tuscertificados y claves estarán en:

  • Para RSA: directorio/etc/letsencrypt/example.com.
  • Para ECC/ECDSA: directorio/etc/letsencrypt/example.com_ecc.

Todos los certificados se renovarán automáticamente cada 60 días.

Tras obtener los certificados, sal del usuario root y vuelve al usuario sudo normal:

exit

Paso 4 - Instalar y configurar NGINX

Wiki.js (o cualquier aplicación HTTP Node.js) puede funcionar sin ningún servidor web real (como NGINX o Apache). Sin embargo, es muy recomendable poner un servidor web estándar delante de Wiki.js. Esto garantiza que puedas utilizar características como SSL, múltiples sitios web, almacenamiento en caché, etc. En este tutorial utilizaremos NGINX, pero cualquier otro servidor servirá, sólo tienes que configurarlo adecuadamente.

Instala el paquete Nginx, emitiendo el siguiente comando:

sudo dnf install -y nginx

Después de la instalación, puedes verificar la versión de Nginx ejecutando:

nginx -v
# 1.14.1

Inicia y habilita (configúralo para quese inicie al reiniciar) el servicioNginx:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Ejecutasudo vim /etc/nginx/conf.d/wiki.js.conf

sudo vim /etc/nginx/conf.d/wiki.js.conf

y configura NGINX como proxy inverso HTTPS.

server {
    
listen [::]:443 ssl http2;
listen 443 ssl http2; listen [::]:80; listen 80; server_name example.com; charset utf-8; client_max_body_size 50M;

ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_next_upstream error timeout http_502 http_503 http_504; } }

Lo único que tienes que cambiar en la configuración anterior es la directivaserver_name, el nombre de dominio en las rutas de los archivos ssl y, potencialmente, la directivaproxy_passsi decidesconfigurar otro puerto que no sea3000. Wiki.js utiliza el puerto3000por defecto.

Comprueba la configuración de NGINX:

sudo nginx -t

Por último, para que los cambios surtan efecto, debemos recargar NGINX:

sudo systemctl reload nginx.service

Paso 5 - Instalar y configurar Wiki.js

Crea un directorio raíz del documento en el que debería residir Wiki.js:

sudo mkdir -p /var/www/wiki.js

Navega hasta el directorio raíz del documento:

cd /var/www/wiki.js

Crea un usuario para wikijs

sudo useradd -d /var/www/wiki.js wikijs

Cambia la propiedad del directorio/var/www/wiki.jsal usuario wikijs:

sudo chown -R wikijs:wikijs /var/www/wiki.js

Desde el directorio/var/www/wiki.js, ejecuta el siguiente comando para obtener e instalar la última aplicación Wiki.js:

cd /var/www/wiki.js
sudo su wikijs
curl -sSo- https://wiki.js.org/install.sh | bash

Una vez completada la instalación, puedes ejecutar el siguiente comando para ver la versión actualmente instalada de Wiki.js:

node wiki --version
# 1.0.117

Una vez completada la instalación, se te pedirá que inicies el asistente de configuración.

Entonces, inicia el asistente de configuración ejecutando

node wiki configure

Usando tu navegador web, navega ahttp://example.comy sigue las instrucciones en pantalla. Todos los ajustes introducidos durante el asistente de configuración se guardan en el archivoconfig.yml.El asistente de configuración iniciará automáticamente Wiki.js por ti.

Primero, verás un mensaje de bienvenida. Haz clic en el botón"Iniciar":

Instalador de Wiki.js

A continuación aparecerá la página "Comprobación del sistema". Si se cumplen todos los requisitos, haz clic en el botón "Continuar".

Comprobación del sistema

Introduce información general sobre tu wiki y haz clic en el botón"Continuar":

Información general

Lee el aviso "Consideración importante" y haz clic en"Continuar" para el siguiente paso:

Es importante tener en cuenta

A continuación, conéctate a la base de datos y continúa:

Conexión a la base de datos

Deberías ver un mensaje de que Wiki.js se haconectado con éxito ala base de datos. Haz clic en el botón"Continuar":

Conexión a la base de datos con éxito

Establece las rutas y continúa:

Establece el camino

Configura el repo Git remoto si quieres o salta este paso. Este paso es opcional pero muy recomendable:

Configurar el repositorio GIT remoto

A continuación, haz clic en el botón "Continuar":

Continúa con la instalación

Crea una cuenta de administrador y haz clic en el botón"Continuar":

Crear una cuenta de administrador

Y por último, inicia el Wiki.js:

Iniciar Wiki.js

Espera unos 30 segundos y deberías ser redirigido a la página principal de Wiki.js:

Página de inicio de Wiki.js

La instalación se ha completado. Deberías ver la página de bienvenida de Wiki:

Bienvenido a Wiki.js

Paso 6 - Configurar el gestor de procesos PM2

Por defecto, Wiki.js no se iniciará automáticamente tras un reinicio del sistema. Para que se inicie en el arranque, tenemos que configurar el gestor de procesos PM2. PM2 viene incluido con Wiki.js como un módulo local de npm, así que no necesitamos instalar PM2 globalmente.

Dile a PM2 que se configure como servicio de inicio ejecutando:

/var/www/wiki.js/node_modules/pm2/bin/pm2 startup

Por último, guarda la configuración actual de PM2 ejecutando el comando

/var/www/wiki.js/node_modules/pm2/bin/pm2 save

Tu Wiki.js ahora se ejecuta como un proceso en segundo plano, utilizando PM2 como su gestor de procesos.

También te podría gustar...