Servidor DokuWiki¶
Requisitos previos y supuestos¶
- Una instancia de Rocky Linux instalada en un servidor, contenedor o máquina virtual.
- Comodidad para modificar archivos de configuración desde la línea de comandos con un editor de texto (nuestros ejemplos aquí utilizarán vi, pero puede sustituirlo por su editor favorito).
- Algunos conocimientos sobre aplicaciones web y su configuración.
- Nuestro ejemplo utilizará la rutina Apache Sites Enabled para la configuración, por lo que es una buena idea revisar esa rutina si planea seguir adelante.
- Utilizaremos "wiki-doc.sudominio.com" como nombre de dominio a lo largo de este ejemplo.
- Asumiremos a lo largo de este documento que usted es el usuario root o puede llegar a él con sudo.
- Estamos asumiendo que está utilizando una instalación limpia del sistema operativo, sin embargo esto es NO un requisito.
Introducción¶
La documentación puede adoptar muchas formas en una organización. Disponer de un repositorio en el que poder consultar esa documentación tiene un valor incalculable. Un wiki (que significa rápido en hawaiano), es una forma de mantener la documentación, las notas de los procesos, las bases de conocimiento corporativas, e incluso los ejemplos de código, en una ubicación centralizada. Los profesionales de la informática que mantienen un wiki, aunque sea en secreto, tienen una póliza de seguro incorporada contra el olvido de una oscura rutina.
DokuWiki es un wiki maduro y rápido que se ejecuta sin base de datos, tiene características de seguridad incorporadas y es relativamente fácil de implementar. Para más información sobre lo que DokuWiki puede hacer, eche un vistazo a su página web.
DokuWiki es sólo uno de los muchos wiki disponibles, aunque es bastante bueno. Una gran ventaja de DokuWiki es que es relativamente ligero y puede ejecutarse en un servidor que ya esté ejecutando otros servicios, siempre que se disponga de espacio y memoria.
Instalar dependencias¶
La versión mínima de PHP para DokuWiki es 7.2, que es exactamente la misma que se incluye con Rocky Linux 8. Rocky Linux 9.0 viene con la versión 8.0 de PHP, que también es totalmente compatible. Aquí se especifican paquetes que pueden estar ya instalados:
dnf install tar wget httpd php php-gd php-xml php-json php-mbstring
Verá una lista de dependencias adicionales que se instalarán y este aviso:
Is this ok [y/N]:
Continue y responda con "y" y pulse 'Entrar' para instalar.
Crear directorios y modificar la configuración¶
Configuración de Apache¶
Si ha leído el procedimiento Apache Sites Enabled, sabe que necesitamos crear algunos directorios. Comenzaremos con las adiciones al directorio de configuración httpd:
mkdir -p p/httpd/{sites-available,sites-enabled}
Necesitamos editar el archivo httpd.conf:
vi /etc/httpd/conf/httpd.conf
Y añada esto al final del archivo:
Include /etc/httpd/sites-enabled
Cree el archivo de configuración del sitio en la carpeta sites-available:
vi /etc/httpd/sites-available/com.example
Ese archivo de configuración debería ser algo así:
<VirtualHost *>
ServerName example.com
DocumentRoot /var/www/sub-domains/com.subdominio/html
<Directory ~ "/var/www/sub-domains/com.subdominio/html/(bin/|conf/|data/|inc/)">
<IfModule mod_authz_core.c>
AllowOverride All
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</Directory>
ErrorLog /var/log/httpd/subdominio.com_error.log
CustomLog /var/log/httpd/subdominio.com_access.log combined
</VirtualHost>
Tenga en cuenta que la opción "AllowOverride All" incluido más arriba, permite que el archivo .htaccess (seguridad específica del directorio) funcione.
Continue y enlace el archivo de configuración en sites-enabled, pero todavía no inicie los servicios web:
ln -s /etc/httpd/sites-available/com.subdominio /etc/httpd/sites-enabled/
Apache DocumentRoot¶
También necesitamos crear nuestro DocumentRoot. Para hacer esto:
mkdir -p /var/www/sub-domains/com.example/html
Instalar DokuWiki¶
En su servidor, cambie al directorio raíz.
cd /root
Ahora que tenemos nuestro entorno listo para empezar, vamos a obtener la última versión estable de DokuWiki. Puedes encontrarla yendo a la página de descargas y en la parte izquierda de la página en la sección "Version" podrá ver "Stable (Recommended) (direct link)."
Haga clic derecho en la parte "(direct link)" y copie la dirección del enlace. En la consola de su servidor DokuWiki, escribe "wget", un espacio y pégue el enlace que ha copiado en el terminal. Debería ver algo como esto:
wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
Antes de descomprimir el archivo, eche un vistazo a su contenido utiliznado el comando tar ztf
para ver el contenido del archivo:
tar ztvf dokuwiki-stable.tgz
¿Ve el directorio con la fecha delante de los demás archivos?
... (more above)
dokuwiki-2020-07-29/inc/lang/fr/resetpwd.txt
dokuwiki-2020-07-29/inc/lang/fr/draft.txt
dokuwiki-2020-07-29/inc/lang/fr/recent.txt
... (more below)
tar
para excluirlo. La primera opción es "--strip-components=1" que elimina ese directorio inicial.
La segunda opción es la opción "-C", y que le indica al comando tar
dónde queremos que se descomprima el archivo. Así que descomprima el archivo con siguiente comando:
tar xzf dokuwiki-stable.tgz --strip-components=1 -C /var/www/sub-domains/com.subdominio/html/
Una vez que hayamos ejecutado este comando, DokuWiki debería descomprimido estar en nuestro DocumentRoot.
Necesitamos hacer una copia del archivo_.htaccess.dist _ que viene con DokuWiki y mantener el antiguo allí también, en caso de que tengamos que volver al contenido original en un futuro.
En el proceso, cambiaremos el nombre de este archivo a . htaccess que es lo que Apache buscará. Para hacer esto:
cp /var/www/sub-domains/com.subdominio/html/.htaccess{.dist,}
Ahora necesitamos cambiar el propietario del nuevo directorio y sus archivos al usuario y grupo apache:
chown -Rf apache.apache /var/www/sub-domains/com.subdominio/html
Configurar DNS o /etc/hosts¶
Antes de poder acceder a la interfaz de DokuWiki, necesitará establecer la resolución de nombres para este sitio. Con fines de prueba, puede utilizar su archivo /etc/hosts.
En este ejemplo, vamos a suponer que DokuWiki se ejecutará en la dirección IPv4 privada 10.56.233.179. Supongamos también que está modificando el archivo /etc/hosts en una estación de trabajo Linux. Para hacer esto, ejecute:
sudo vi /etc/hosts
Y luego modifique su archivo de hosts para que se vea tal y como se muestra a continuación (vea la dirección IP anterior en el ejemplo que se muestra a continuación):
127.0.0.1 localhost
127.0.1.1 myworkstation-home
10.56.233.179 example.com example
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Una vez que ha terminado de probar y esté listo para poner docuwiki en producción y disponible para todos, necesitará agregar este host a un servidor DNS. Puede hacer esto utilizando un servidor DNS privadoo un servidor DNS público.
Iniciar httpd¶
Antes de comenzar httpd vamos a probar para asegurarnos de que nuestra configuración está aceptada:
httpd -t
Debería obtener:
Syntax OK
Si es así, debería estar listo para iniciar httpd y luego finalizar la configuración. Empecemos activando httpd para que se inicie al arrancar el sistema:
systemctl enable httpd
Y luego iniciar el servicio:
systemctl start httpd
Probar DokuWiki¶
Ahora que nuestro nombre de host está configurado para las pruebas y el servicio web se ha iniciado, el siguiente paso es abrir un navegador web y escribir la siguiente URL en la barra de direcciones:
http://wiki-doc.sudominio.com/install.php
O
http://wiki-doc.sudominio.com/install.php
Cualquiera de los dos debería funcionar si se configura el archivo de hosts como se indica más arriba. Esto le llevará a la pantalla de configuración para que pueda terminar la configuración:
- En el campo "Wiki Name", escriba el nombre del wiki. Por ejemplo, "Documentación Técnica"
- En el campo "Superuser", escriba el nombre de usuario administrador. Ejemplo "admin"
- En el campo "Nombre real", escriba el nombre real para el usuario administrativo.
- En el campo "E-Mail", escriba la dirección de correo electrónico del usuario administrador.
- En el campo "Password", escriba una contraseña segura para el usuario administrador.
- En el campo "una vez más", vuelva a escribir la misma contraseña.
- En el menú desplegable "Initial ACL Policy", elija la opción que mejor funcione para su entorno.
- Elija la casilla de verificación apropiada para la licencia bajo la que desea poner su contenido.
- Deje marcada (o desmarque si lo prefiere) la casilla "Once a month, send anonymous usage data to the DokuWiki developers"
- Haga clic en el botón "Guardar"
Ahora su wiki está preparado para que añada contenido.
Asegurar DokuWiki¶
Además de la política ACL que acaba de crear, considere:
Su cortafuegos¶
Note
Ninguno de estos ejemplos de cortafuegos hace ningún tipo de suposición sobre qué otros servicios podrías necesitar permitir en tu servidor Dokuwiki. Estas reglas se basan en nuestro entorno de pruebas y SOLO se ocupan de permitir el acceso a un bloque ip de la red LOCAL. Necesitará más servicios permitidos para un servidor de producción.
Antes de decir que todo está hecho, hay que pensar en la seguridad. Primero, debería estar ejecutando un cortafuegos en el servidor. Supondremos que está utilizando uno de los cortafuegos indicado más abajo.
En lugar de permitir que todo el mundo tenga acceso al wiki, vamos a suponer que cualquier persona de la red 10.0.0.0/8 está en su red de área local privada, y que esas son las únicas personas que necesitan acceder al sitio.
Cortafuegos iptables
(obsoleto)¶
Important
El proceso de cortafuegos iptables
ha quedado obsoleto en Rocky Linux 9.0 (todavía está disponible, pero es probable que desaparezca en futuras versiones, quizás ya en Rocky Linux 9.1). Por esta razón, le recomendamos saltar al procedimiento firewalld
mas abajo si estás siguiendo esta docuemntación conRocky Linux 9.0 o posterior.
Tenga en cuenta que puede que necesite otras reglas para el resto de servicios en este servidor, y que en este ejemplo sólo se tienen en cuenta los servicios web.
En primer lugar, modifique o cree el archivo /etc/firewall.conf:
vi /etc/firewall.conf
#IPTABLES=/usr/sbin/iptables
# Unless specified, the default for OUTPUT is ACCEPT
# The default for FORWARD and INPUT is DROP
#
echo " clearing any existing rules and setting default policy.."
iptables -F INPUT
iptables -P INPUT DROP
# web ports
iptables -A INPUT -p tcp -m tcp -s 10.0.0.0/8 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s 10.0.0.0/8 --dport 443 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
/usr/sbin/service iptables save
Una vez que ha creado el script, asegúrese de que es ejecutable:
chmod +x /firewall.conf
Luego ejecuta el script:
/etc/firewall.conf
Esto ejecutará las reglas y las guardará para que sea recarguen en el próximo inicio de iptables o al próximo arranque del sistema.
Cortafuegos firewalld
¶
Si utiliza firewalld
como cortafuegos (y a estas alturas, probablemente debería) puede aplicar los mismos conceptos utilizando la sintaxis de firewalld's firewall-cmd
.
Vamos a duplicar las reglas iptables
(arriba) con firewalld
reglas:
firewall-cmd --zone=confiable --add-source=10.0.0.0/8 --permanent
firewall-cmd --zone=confiable --add-service=http --add-service=https --permanent
firewall-cmd --reload
Una vez que ha añadido las reglas anteriores y ha recargado el servicio firewalld, liste su zona para asegurarse de que todo lo que necesita está ahí:
firewall-cmd --zone=trusted --list-all
que debería mostrarte algo así si todo lo anterior ha funcionado correctamente:
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 10.0.0.0/8
services: http https
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
SSL¶
Para tener más seguridad, debería considerar el uso de un SSL para que todo el tráfico web esté cifrado. Puede comprar un certificado SSL directamente de un proveedor o utilizar Let's Encrypt
Conclusión¶
Ya sea que necesites documentar procesos, políticas de la empresa, códigos de programas o cualquier otra cosa, un wiki es una gran manera de hacerlo. DokuWiki es un producto seguro, flexible, fácil de usar, relativamente fácil de instalar y desplegar, y es un proyecto estable que ha existido durante muchos años.
Author: Steven Spencer
Contributors: Ezequiel Bruni, Pedro Garcia