Cómo instalar Kbin, el agregador de contenidos Fediverse similar a Reddit, en Ubuntu 22.04
Kbin es un agregador de contenidos de código abierto similar a Reddit y una plataforma de microblogging para el fediverso. Te permite crear y moderar comunidades y puede comunicarse con otros servicios de ActivityPub, como Mastodon, Pleroma y Peertube.
Aunque existen instancias populares de Kbin a las que puedes unirte y utilizar, también puedes gestionar tu propia instancia de Kbin para tus amigos y familiares. En este tutorial, aprenderás a instalar Kbin en un servidor Ubuntu 22.04.
Requisitos previos
- Un servidor con Ubuntu 22.04.
- Un usuario sudo no root.
- Un nombre de dominio completo (FQDN) como
example.com
. - Asegúrate de que todo está actualizado.
$ sudo apt update $ sudo apt upgrade
- Pocos paquetes que necesite tu sistema.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Puede que algunos de estos paquetes ya estén instalados en tu sistema.
- Nuestra instalación también necesita la Lista de Control de Acceso (ACL) para funcionar. Instálala.
$ sudo apt install acl
Paso 1 – Configurar el Cortafuegos
El primer paso es configurar el cortafuegos. Ubuntu viene con ufw (Uncomplicated Firewall) por defecto.
Comprueba si el cortafuegos está funcionando.
$ sudo ufw status
Obtendrás la siguiente salida.
Status: inactive
Permite el puerto SSH para que el cortafuegos no rompa la conexión actual al activarlo.
$ sudo ufw allow OpenSSH
Permite también los puertos HTTP y HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Habilita el cortafuegos
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Comprueba de nuevo el estado del cortafuegos.
$ sudo ufw status
Deberías ver una salida similar.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Paso 2 – Instalar Git
Normalmente Git se instala con el servidor Ubuntu, pero si no es así, debes instalarlo utilizando el siguiente comando.
$ sudo apt install git
Verifica la instalación.
$ git --version git version 2.34.1
Configura Git con la información básica.
$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"
Paso 3 – Instalar Nginx
Ubuntu viene con una versión antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.
Importa la clave de firma de Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Añadir el repositorio de la versión estable de Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Actualiza los repositorios del sistema.
$ sudo apt update
Instala Nginx.
$ sudo apt install nginx
Verifica la instalación.
$ nginx -v nginx version: nginx/1.24.0
Iniciar el servidor Nginx.
$ sudo systemctl start nginx
Paso 4 – Instalar PHP y configurar PHP
Ubuntu 22.04 viene con la versión PHP 8.1.2, que está un poco anticuada. Instalaremos la última versión PHP 8.2 utilizando el repositorio PHP de Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
A continuación, instala PHP y sus extensiones requeridas por Kbin.
$ sudo apt install php8.2-common php8.2-fpm php8.2-cli php8.2-amqp php8.2-pgsql php8.2-gd php8.2-curl php8.2-simplexml php8.2-dom php8.2-xml php8.2-redis php8.2-mbstring php8.2-intl unzip
Verifica la instalación.
$ php --version PHP 8.2.7 (cli) (built: Jun 8 2023 15:27:40) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.7, Copyright (c) Zend Technologies with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies
Abre el archivo /etc/php/8.2/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Necesitamos establecer el usuario/grupo Unix de los procesos PHP a nginx. Busca las líneas user=www-data
y group=www-data
en el archivo y cámbialas por nginx
.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Busca las líneas listen.owner = www-data
y listen.group = www-data
en el archivo y cámbialas por nginx
.
; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. The owner ; and group can be specified either by name or by their numeric IDs. ; Default Values: user and group are set as the running user ; mode is set to 0660 listen.owner = nginx listen.group = nginx
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Aumenta el límite de memoria para PHP-FPM de 128 MB a 512 MB.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini
Aumenta el tamaño de subida de archivos a 8 MB.
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/8.2/fpm/php.ini
Reinicia el servicio PHP-FPM.
$ sudo systemctl restart php8.2-fpm
Cambia el grupo del directorio de sesiones PHP a Nginx.
$ sudo chgrp -R nginx /var/lib/php/sessions
Paso 5 – Instala Composer
Composer es una herramienta de gestión de dependencias para PHP y es necesaria para la instalación de Kbin. Coge el archivo de instalación de Composer.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Ejecuta el instalador para generar el binario de Composer.
$ php composer-setup.php
Elimina el archivo de instalación.
$ php -r "unlink('composer-setup.php');"
Mueve el binario composer.phar
al directorio /usr/local/bin
.
$ sudo mv composer.phar /usr/local/bin/composer
Verifica la instalación de Composer.
$ composer --version Composer version 2.5.8 2023-06-09 17:13:21
Paso 6 – Instalar y configurar PostgreSQL
Ubuntu 22.04 incluye PostgreSQL 14 por defecto. Nosotros utilizaremos PostgreSQL 15 en su lugar.
Ejecuta el siguiente comando para añadir la clave GPG de PostgreSQL.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Añade el repositorio APT a tu lista de fuentes.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Actualiza el repositorio del sistema.
$ sudo apt update
Ahora, puedes instalar PostgreSQL utilizando el comando siguiente.
$ sudo apt install postgresql postgresql-contrib
El paquete postgresql-contrib
contiene algunas utilidades adicionales.
Comprueba el estado del servicio PostgreSQL.
$ sudo systemctl status postgresql ? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Sat 2023-06-17 09:15:50 UTC; 3h 40min ago Main PID: 26989 (code=exited, status=0/SUCCESS) CPU: 1ms Jun 17 09:15:50 nspeaks systemd[1]: Starting PostgreSQL RDBMS... Jun 17 09:15:50 nspeaks systemd[1]: Finished PostgreSQL RDBMS.
Verás que el servicio está activado y en ejecución por defecto.
Inicia el intérprete de comandos PostgreSQL.
$ sudo -i -u postgres psql
Crea la base de datos Kbin.
postgres=# CREATE DATABASE kbin;
Crea el usuario Kbin y elige una contraseña segura.
postgres-# CREATE USER kbinuser WITH PASSWORD 'Your_Password';
Cambia el propietario de la base de datos por el usuario Kbin.
postgres-# ALTER DATABASE kbin OWNER TO kbinuser;
Sal del intérprete de comandos.
postgres-# \q
Comprueba que tus credenciales funcionan.
$ psql --username kbinuser --password --host localhost kbin Password: psql (15.3 (Ubuntu 15.3-1.pgdg22.04+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) Type "help" for help. kbin=>
Sal del intérprete de comandos escribiendo \q
.
Paso 7 – Instalar Nodejs y Yarn
Ubuntu 22.04 incluye Node v12, que está obsoleto. Instalaremos la última versión LTS de Node, que es la v18 en el momento de escribir este tutorial.
Coge el instalador de Node v18 de NodeSource.
$ curl -sL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh
Ejecuta el script de instalación.
$ sudo bash nodesource_setup.sh
Instala Node.js.
$ sudo apt install nodejs
Comprueba la versión de Node.js.
$ node -v v18.16.1
Elimina el archivo de instalación.
$ rm nodesource_setup.sh
Paso 8 – Instala Yarn
Importa la clave GPG para Yarn.
$ curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
Añade la fuente de Yarn a la lista de repositorios del sistema.
$ echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Actualiza la lista de repositorios del sistema.
$ sudo apt update
Instala Yarn
$ sudo apt install yarn
Verifica la instalación.
$ yarn --version 1.22.19
Paso 8 – Instalar Redis
Magento utiliza Redis para el almacenamiento de sesiones y caché. Es totalmente opcional y puedes utilizar la base de datos para el almacenamiento de sesiones. Pero Redis hace un mejor trabajo. La última versión de Magento funciona con Redis 7.0. Ubuntu viene con Redis 6.0, así que utilizaremos el repositorio de Redis para la instalación.
Importa la clave GPG oficial de Redis.
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
Añade el repositorio APT a tu lista de fuentes.
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
Actualiza la lista de repositorios del sistema.
$ sudo apt update
Ejecuta el siguiente comando para instalar el servidor Redis.
$ sudo apt install redis
Confirma la versión de Redis.
$ redis-server -v Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9
Verifiquemos la conexión al servicio mediante el siguiente comando.
$ redis-cli
Pasarás a la shell de Redis.
El primer paso es establecer la contraseña para el usuario Redis por defecto. Sustituye Your_Redis_Password
por una contraseña segura de tu elección. Asegúrate de anteponer a la contraseña el carácter >
.
127.0.0.1:6379> acl setuser default >Your_Redis_Password
Prueba la autenticación de Redis.
127.0.0.1:6379> AUTH Your_Redis_Password OK
Haz ping al servicio.
127.0.0.1:6379> ping PONG
Sal del servicio escribiendo exit
.
Si quieres, puedes utilizar el siguiente comando para generar la contraseña de Redis.
$ openssl rand 60 | openssl base64 -A OaYOuq6J9HhxMV0sGCeZbaGecphCl4GBfVkCOPkNjkQE1FX9DKpGSCJcDb8UV+AuFKA8tR1PgjGequn1
Paso 9 – Instalar y configurar RabbitMQ
Kbin necesita RabbitMQ para la cola de mensajes. Lo instalaremos desde el repositorio de Ubuntu.
$ sudo apt install rabbitmq-server
Crea un usuario Rabbit. Elige una contraseña segura.
$ sudo rabbitmqctl add_user kbin StrongPassword
Haz que el usuario sea administrador.
$ sudo rabbitmqctl set_user_tags kbin administrator
Paso 10 – Descargar Kbin
Antes de descargar Kbin, necesitamos crear una cuenta de usuario Kbin.
$ adduser kbin
Añade el usuario kbin
al grupo sudo.
$ sudo usermod -aG sudo kbin
Inicia sesión como el usuario kbin
.
$ su - kbin
Crea el directorio /var/www/html/kbin
.
$ sudo mkdir /var/wwww/html/kbin -p
Cambia al directorio.
$ cd /var/www/html/kbin
Da los permisos adecuados a la carpeta para que el usuario que ha iniciado sesión pueda realizar las tareas.
$ sudo chown $USER:$USER kbin
Clona el repositorio Kbin Git en la carpeta actual. Asegúrate de añadir el punto(.) al final del comando para hacer referencia a la carpeta actual.
$ git clone https://codeberg.org/Kbin/kbin-core.git .
Crea el directorio public/media
.
$ mkdir public/media
Dale permiso total.
$ chmod 777 public/media
Paso 11 – Configurar el archivo de entorno
Genera la clave secreta JWT de Mercure.
$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Genera el secreto de la App utilizando de nuevo el mismo comando.
$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Crea y abre el archivo .env
para editarlo en el directorio Kbin.
$ nano .env
Pega en él el siguiente código. Utiliza las claves generadas anteriormente en el siguiente archivo.
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration # kbin variables SERVER_NAME="nspeaks.xyz" # production KBIN_DOMAIN=nspeaks.xyz KBIN_TITLE=Howtoforge KBIN_DEFAULT_LANG=en KBIN_FEDERATION_ENABLED=true [email protected] [email protected] KBIN_JS_ENABLED=true KBIN_REGISTRATIONS_ENABLED=true KBIN_API_ITEMS_PER_PAGE=25 #KBIN_STORAGE_URL=/media KBIN_META_TITLE="Kbin Lab" KBIN_META_DESCRIPTION="content aggregator and micro-blogging platform for the fediverse" KBIN_META_KEYWORDS="kbin, content agregator, open source, fediverse" KBIN_HEADER_LOGO=false KBIN_CAPTCHA_ENABLED=false # Redis REDIS_PASSWORD=YourRedisPassword REDIS_DNS=redis://default:${REDIS_PASSWORD}@localhost:6379 ###> symfony/framework-bundle ### APP_ENV=prod APP_SECRET=427f5e2940e5b2472c1b44b2d06e0525 ###< symfony/framework-bundle ### ###> doctrine/doctrine-bundle ### # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml # POSTGRES_DB=kbin POSTGRES_USER=kbin POSTGRES_PASSWORD=Your_Password POSTGRES_VERSION=15 DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}?serverVersion=${POSTGRES_VERSION}&charset=utf8" ###< doctrine/doctrine-bundle ### ###> symfony/messenger ### # Choose one of the transports below RABBITMQ_PASSWORD=RabbitMQPassword MESSENGER_TRANSPORT_DSN=amqp://kbin:${RABBITMQ_PASSWORD}@rabbitmq:5672/%2f/messages #MESSENGER_TRANSPORT_DSN=doctrine://default #MESSENGER_TRANSPORT_DSN=redis://${REDIS_PASSWORD}@redis:6379/messages ###< symfony/messenger ### ###> symfony/mailgun-mailer ### #MAILER_DSN=mailgun+smtp://[email protected]:key@default?region=us MAILER_DSN=smtp://AKIA3FIG4NVFH4TXXEXY:BJQvNI9U6JqSuUFQ9Ffd22Dvom/8KNwk7EIrFTRai02/@email-smtp.us-west-2.amazonaws.com:465 ###< symfony/mailgun-mailer ### ###> symfony/mercure-bundle ### # See https://symfony.com/doc/current/mercure.html#configuration # The URL of the Mercure hub, used by the app to publish updates (can be a local URL) MERCURE_URL=https://example.com/.well-known/mercure # The public URL of the Mercure hub, used by the browser to connect MERCURE_PUBLIC_URL=https://example.com/.well-known/mercure # The secret used to sign the JWTs MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!" ###< symfony/mercure-bundle ### ###> symfony/lock ### LOCK_DSN=flock ###< symfony/lock ###
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Paso 12 – Instalar Kbin
Instala los paquetes necesarios para Kbin utilizando Composer.
$ composer install --prefer-dist --no-dev $ composer dump-env prod
Borra la caché.
$ APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear $ composer clear-cache
Da los permisos adecuados a la carpeta multimedia.
$ sudo chown kbin:nginx public/media
Establece los permisos adecuados para los archivos y directorios utilizando el comando setfacl
. El siguiente comando detecta el servidor web actual en uso (Nginx) y establece los permisos para los archivos y carpetas existentes y futuros.
$ HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1) $ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var $ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
Crea y migra la base de datos PostgreSQL.
$ php bin/console doctrine:database:create $ php bin/console doctrine:migrations:migrate
Se te preguntará si deseas continuar con la migración de datos. Escribe yes
para continuar.
WARNING! You are about to execute a migration in database "kbin" that could result in schema changes and data loss. Are you sure you wish to continue? (yes/no) [yes]: > yes [notice] Migrating up to DoctrineMigrations\Version20230615203020 [notice] finished in 1373.9ms, used 24M memory, 79 migrations executed, 667 sql queries [OK] Successfully migrated to version : DoctrineMigrations\Version20230615203020
Instala y construye el front-end público para el sitio Kbin.
$ yarn install $ yarn build
Crea un nuevo usuario administrador para Kbin.
$ php bin/console kbin:user:create username [email protected] password
Concede privilegios administrativos al usuario.
$ php bin/console kbin:user:admin username
Actualiza las claves.
$ php bin/console kbin:ap:keys:update
Paso 13 – Instalar SSL
Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Ubuntu o descargar la última versión utilizando la herramienta Snapd. Nosotros utilizaremos la versión Snapd.
Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd está actualizada.
$ sudo snap install core && sudo snap refresh core
Instala Certbot.
$ sudo snap install --classic certbot
Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ejecuta el siguiente comando para generar un certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/example.com
de tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Comprueba el servicio programador de renovaciones de Certbot.
$ sudo systemctl list-timers
Encontrarás snap.certbot.renew.service
como uno de los servicios programados para ejecutarse.
NEXT LEFT LAST PASSED UNIT ACTIVATES Wed 2023-06-28 10:09:00 UTC 20min left Wed 2023-06-28 09:39:00 UTC 9min ago phpsessionclean.timer phpsessionclean.service Wed 2023-06-28 11:13:02 UTC 1h 24min left Wed 2023-06-28 04:41:28 UTC 5h 7min ago ua-timer.timer ua-timer.service Wed 2023-06-28 12:11:00 UTC 2h 22min left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Realiza una ejecución en seco del proceso para comprobar si la renovación SSL funciona correctamente.
$ sudo certbot renew --dry-run
Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.
Paso 14 – Configurar Nginx
Crea y abre el archivo /etc/nginx/conf.d/kbin.conf
para editarlo.
$ sudo nano /etc/nginx/conf.d/kbin.conf
Pega en él el siguiente código.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; access_log /var/log/nginx/kbin.access.log; error_log /var/log/nginx/kbin.error.log; # SSL ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s; root /var/www/html/kbin/public; index index.php; location / { try_files $uri $uri/ /index.php; } # Pass PHP Scripts To FastCGI Server location ~* \.php$ { try_files $uri =404; fastcgi_index index.php; fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; include fastcgi_params; } # deny access to writable files/directories location ~* ^/sites/*/(documents|edi|era) { deny all; return 404; } # deny access to certain directories location ~* ^/(contrib|tests) { deny all; return 404; } # Alternatively all access to these files can be denied location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php { deny all; return 404; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; } location ~ /\. { deny all; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name example.com; return 301 https://$host$request_uri; }
Observa que el directorio raíz que se utilizará en la configuración de Nginx es /var/www/html/kbin/public/
.
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida una vez hayas terminado.
Abre el archivo /etc/nginx/nginx.conf
para editarlo.
$ sudo nano /etc/nginx/nginx.conf
Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Verifica la sintaxis del archivo de configuración de Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicia el servicio Nginx.
$ sudo systemctl restart nginx
Paso 15 – Instalar y configurar Supervisor
Supervisor es un gestor de procesos y lo utilizaremos como monitor de procesos para el trabajador de mensajes (RabbitMQ) de Kbin. El primer paso es instalar Supervisor.
$ sudo apt install supervisor
Crea el archivo /etc/supervisor/conf.d/messenger-worker.conf
y ábrelo para editarlo.
$ sudo nano /etc/supervisor/conf.d/messenger-worker.conf
Pega en él el siguiente código.
[program:messenger-kbin] command=php /var/www/html/kbin/bin/console messenger:consume async --time-limit=3600 user=kbin numprocs=2 startsecs=0 autostart=true autorestart=true startretries=10 process_name=%(program_name)s_%(process_num)02d stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log stderr_logfile_maxbytes=10MB stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log stdout_logfile_maxbytes=10MB [program:messenger-ap] command=php /var/www/html/kbin/bin/console messenger:consume async_ap --time-limit=3600 user=kbin numprocs=2 startsecs=0 autostart=true autorestart=true startretries=10 process_name=%(program_name)s_%(process_num)02d stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log stderr_logfile_maxbytes=10MB stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log stdout_logfile_maxbytes=10MB
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.
Ejecuta los siguientes comandos para releer y actualizar el nuevo archivo de configuración.
$ sudo supervisorctl reread $ sudo supervisorctl update
Inicia todos los servicios del Supervisor.
$ sudo supervisorctl start all
Paso 16 – Accede a la Kbin
Abre la URL https://example.com
y obtendrás la siguiente página de inicio de la Kbin.
Haz clic en el enlace Iniciar sesión de la parte superior para que aparezca la página de inicio de sesión.
Introduce las credenciales creadas en el paso 12 y haz clic en el botón Iniciar sesión para continuar. Volverás a la página principal de Kbin. A partir de aquí puedes empezar a utilizar Kbin.
Conclusión
Con esto concluye nuestro tutorial sobre la instalación del Agregador de Contenidos tipo Reddit, Kbin, en un servidor Ubuntu 22.04. Si tienes alguna pregunta, publícala en los comentarios a continuación.