Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org/
Licencia de este documento: Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2022 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.
Geeklog es un software para CMS escrito en PHP y MySQL/MariaDB. Es una excelente alternativa para Blogs. Es ligero, muy seguro, dispone de funcionalidad para establecer permisos de acceso y edición por usuario o grupo, tiene una colección de complementos pequeña pero suficiente para la mayoría de las necesidades.
Su principal ventaja frente a alternativas como Drupal, Joomla o Wordpress radica en el poco interés que hay de parte de la delincuencia informática para realizar ataques a Geeklog. Es decir, su poca popularidad es una ventaja de seguridad.
Sus desventajas son que sólo dispone de una relativamente pequeña lista de complementos y hay muy pocas plantillas para Geeklog. Si necesita una plantilla, sugiero partir de la plantilla modern_curve incluida con Geeklog y adaptar ésta a sus necesidades. El API para temas de Geeklog cambia con cada nuevo lanzamiento. Temas para Geeklog 2.0 o 2.1 requieren algunas pocas adaptaciones. Los temas para versiones de Geeklog menores a 2.0 requieren muchas modificaciones para funcionar con la actual versión 2.2.
server {
listen 80;
server_name www.tudominio.net;
root /home/tusuario/public_html;
access_log /var/log/nginx/tudominio-access_log main;
error_log /var/log/nginx/tudominio-error_log notice;
charset UTF-8;
# El valor para client_max_body_size debe ser el mismo que se estableció
# en PHP para upload_max_filesize and post_max_size.
client_max_body_size 128M;
client_body_buffer_size 128M;
server_tokens off;
# Este archivo de inclusión tiene las opciones para compresión gzip.
# Vea https://ubiq.co/tech-blog/how-to-enable-nginx-gzip-compression/
# para determinar que debe llevar dentro.
include /etc/nginx/default.d/gzip.conf;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
# Verifique que todos los CDN que use la plantilla estén listados aqui,
# de otro modo su navegador impedirá el acceso al sitio por fallar la
# política de seguiridad.
# Habilite la siguiente línea si ya hizo la verificación. Valide intentado
# acceder. Si navegador impide accede, desactive y haga las correcciones
# pertinentes
# add_header Content-Security-Policy: "default-src 'self' https://code.jquery.com https://cdnjs.cloudflare.com https://analytics.google.com";
location / {
index index.html index.htm index.php;
error_page 404 /404.php;
rewrite "^/article.php/(.*)$" /article.php?story=$1 last;
rewrite "^/staticpages/index.php/(.*)$" /staticpages/index.php?page=$1 last;
rewrite "^/links/portal.php/link/(.*)$" /links/portal.php?what=link&item=$1 last;
rewrite "^/directory.php/(.*)/(\d{1,})/(\d{1,})$" /directory.php?topic=$1&year=$2&month=$3 last;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
location ~/\.(ht|git) {
deny all;
}
location /.well-known {
default_type "text/plain";
}
location ~ ^/admin/install/(.+\.php)$ {
allow 127.0.0.1;
# Establezca su propia dirección IP para limitar el acceso a /admin/install
allow 192.168.100.6;
deny all;
#allow all;
}
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SERVER_NAME $host;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:8500;
# los valores para upload_max_filesize y post_max_size DEBEN ser
# el mismo valor que para client_max_body_size en Nginx
fastcgi_param PHP_VALUE "upload_max_filesize=128M \n post_max_size=128M";
fastcgi_index index.php;
# Las instalaciones y actualizaciones fallarán si los siguientes valores son menores
fastcgi_read_timeout 600;
proxy_buffers 16 16k;
proxy_buffer_size 16k;
proxy_connect_timeout 3600s;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
}
}
Se asume que la configuración para HTTPS se delegará a certbot.
[geeklog]
user = tusuario
group = tusuario
listen = localhost:8500
pm = dynamic
pm.max_children = 9999
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
php_admin_value[upload_tmp_dir] = /home/tusuario/tmp
php_admin_value[session.save_path] = /home/tusuario/tmp
php_admin_flag[log_errors] = on
php_admin_value[error_log] = /home/tusuario/logs/php-fpm-error_log
php_value[error_reporting] = E_ALL|E_NOTICE
php_value[max_execution_time] = 7200
; Se necesitan al menos 512M para instalar o actualizar
php_value[memory_limit] = 1024M
; Estabelzca su zona horaria correspondiente
php_value[date.timezone] = America/Mexico_City
php_value[expose_php] = off
; Las instalaciones y actualizaciones fallarán si los siguientes valores son menores
php_value[request_terminate_timeout] = 600
php_value[max_input_time] = 360
php_value[max_input_vars] = 4000