Mostrando entradas con la etiqueta servidores. Mostrar todas las entradas
Mostrando entradas con la etiqueta servidores. Mostrar todas las entradas

jueves, 14 de diciembre de 2023

¿Cómo instalo OwnCloud en Ubuntu?

Durante el discurso del 19 de enero de 1948 concerniente a la inauguración del Tren de las Nubes, Juan Perón enseñó cómo instalar OwnCloud en Ubuntu Server.

¡Estimados Señores!

Este augusto día inauguramos el ferrocarril Trasandino del Norte, que une las ciudades de Salta con la chilena de Antofagasta, como Obra de Unión de los Pueblos. En nuestras tierras pasa por Cerrillos, Rosario de Lerma, San Antonio de los Cobres, Salar de Pocitos, Toco-Toco, Caipe y Socompa, en un recorrido de 571 km del lado argentino, y cruzado al territorio hermano de Chile, las queridas localidades de Victoria, Palestina y Antofagasta, en los 331 kilómetros que tiene allí la traza. 

Forman parte de su ánima 33 puentes de acero y 21 túneles con una longitud total de 3.234 metros. La altura máxima del ramal alcanza los 4.475 metros en el imponente macizo del Abra de Chorrillos, lo que le ha valido el cariñoso apelativo de "Tren de las Nubes",

Siempre me han dicho que el Peronismo está en las nubes, e indudablemente que este nos inspira la concreción de una vía de los datos que hermane Pueblos: un troncal capaz de unir centros de datos propios controlados y conducidos por el Justicialismo. Es esto a lo que aspiramos.

Sin embargo, cuando muchos se refieren a "la nube" no lo hacen para homenajear a este querido tren, sino que lo hacen para ocultar el hecho de hablar de un almacenamiento informático proporcionado en una computadora ajena, que sólo ofrece acceso limitado desde la red de datos Internet. 

La premisa de que a estas máquinas es posible cargarle nuestro contenido digital  a veces sin costo monetario, y que éste podría estar disponible para su descarga en múltiples dispositivos, podría parecer - a primera vista - sumamente beneficiosa. Contaríamos así con la dicha y comodidad de contar con la información digitalizada al alcance telemático sin necesidad de portar medios de almacenamiento de masa para suplir la demanda. Estos señores dicen que podríamos acceder a ellos a través de los enlaces de datos...

Pues bien señores, es mi opinión que en estos menesteres, el costo es lo de menos: el hecho que la máquina sea ajena (y para peor, normalmente de una omnímoda corporación oligárquica) nos cuadra el más grave riesgo al que alguien pueda someterse sin llevar puesto un casco y un fusil. No podía ser de otra manera: ¡estas empresas lucran con los metadatos de tales archivos, a la par de reservarse su uso con fines inconfesables!

Googl€, Amazon y Micro$oft son sólo algunas de las empresas que - de mano de una opresión interesada - que ofrecen este tipo de soluciones bajo los nombres de Googledriv€, AW$, y One$pace respectivamente. Sin embargo, estas soluciones son prohibitivas ya que el contenido es sometido a inspección y no va cifrado de manera alguna.

La lucha de los hombres por la Liberación de su software es una que acarrea riesgos y es dificultosa, pero entrenándonos para suplir las verdaderas necesidades de la lid explica la manera de salir victoriosos. 

En el caso de los servicios de almacenamiento en la nube, lo procedente no es usar un servicio - por mas gratuito que sea - y mucho menos pagarlo si es una empresa extranjera. Lo ideal es montar nuestra propia nube con software libre, de la misma forma en la que nacionalizamos los ferrocarriles.

Para ello contamos con la plataforma de alojamiento de archivos OwnCloud, liberada bajo AGPLv3. Junto con el servicio de alojamiento propio - que podemos dar a los usuarios que queremos en medios de almacenamiento propios en nuestro servidor - también contaremos con las funcionalidades de ofimática que nos ofrece OnlyOffice. Este nos permitirá resguardo, cifrado opcional, visualización y edición - incluso colaborativa - de documentos de todo tipo.

Desde el punto de vista de software, OwnCloud requiere una instalación base de Ubuntu 22.04 Server con SSH activado, y una partición /var con el espacio de disco deseado (en mi caso, haré uso de unos 20 Terabytes). El directorio de OwnCloud se encotnrará en /var/www/owncloud. La versión de PHP debe ser al menos la 5, (por defecto en Ubuntu Server 20.04 se puede instalar PHP 7.4). Asimismo debemos contar con el Módulo de Multiprocesador (MPM) correcto (debemos leer las notas Versión de OpenSSL, importantes cuando se planea usar encriptación).

En este caso haremos las preparaciones de de instalación en la máquina de servicio munida con Ubuntu Server con los servicios web Apache, de base de datos MariaDB y de programación PHP 7.

Naturalmente, si contamos con un usuario común escalable en el servidor, debemos utilizar el comando sudo su e ingresar la contraseña de administrador correspondiente. 

Primero introduciremos los comandos que configuren el servicio del nombre de dominio que va a tener la instalación de de OwnCloud, especialmente el nombre de dominio que queremos para la máquina:

Configurar el nombre de dominio

mi_dominio="nube.peronismo.org"
echo $mi_dominio

hostnamectl set-hostname $mi_dominio
hostname -f

Generar contraseñas fuertes

A continuación generamos las contraseñas seguras para el usuario administrador de OwnCloud y para el usuario de la base de datos SQL. Estas se resguardarán  en /etc/.sec_admin_pwd.txt y /etc/.sec_db_pwd.txt:

sec_admin_pwd=$(openssl rand -base64 18) ;
echo $sec_admin_pwd > /etc/.sec_admin_pwd.txt ;
sec_db_pwd=$(openssl rand -base64 18) ;
echo $sec_db_pwd > /etc/.sec_db_pwd.txt

Acto seguido conviene aseguramos que todos los paquetes del servidor estén instalados y totalmente actualizados, a la vez que comprobamos que tenemos PHP a mano en el repositorio APT. Para hacer esto, seguimos las instrucciones siguientes:

apt update && apt upgrade -y

Debemos crear ahora un guion de ayuda que nos simplifique la tarea de ejecución de los comandos occ de OwnCloud. Esto lo haremos ingresando:

FILE="/usr/local/bin/occ"
cat <<EOM >$FILE
#! /bin/bash
cd /var/www/owncloud
sudo -E -u www-data /usr/bin/php /var/www/owncloud/occ "\$@"
EOM

A este guion de OwnCloud llamado /usr/local/bin/occ le otorgamos permisos de ejecución:

chmod +x $FILE

Con las preparaciones listas, instalamos las dependencias necesarias para todo:

apt install -y apache2 libapache2-mod-php mariadb-server openssl redis-server wget php-imagick php-common php-curl php-gd php-gmp php-bcmath php-imap php-intl php-json php-mbstring php-mysql php-ssh2 php-xml php-zip php-apcu php-redis php-ldap php-phpseclib

Si bien es opcional, es sabido recomendar conectar nuestro servidor a unidades de almacenamiento externas de Window$ a través del protocolo Samba. Para ello habríamos de instalar el módulo smbclient php. Aunque normalmente en el caso de las máquinas de escritorio con GNU con Linux no suele ser el caso, no es raro que otras unidades de almacenamiento y discos puedan accederse a través de la red, y en tal caso el cliente Samba por terminal nos vendría de perillas para que el servidor integre las mismas también a nuestra OwnCloud. Para ello primero instalamos sus dependencias:

apt-get install -y libsmbclient-dev php-dev php-pear

...y luego instalaríamos el módulo smblclient php por medio de pecl:

pecl channel-update pecl.php.net ;
mkdir -p /tmp/pear/cache ;
pecl install smbclient-stable ;
echo "extension=smbclient.so" > /etc/php/7.4/mods-available/smbclient.ini ;
phpenmod smbclient ;
systemctl restart apache2

Revisamos entonces si fue activado de manera exitosa:

php -m | grep smbclient

El servidor nos debería devolver lo siguiente:

libsmbclient
smbclient

...denunciando la activación de ambos módulos - ahora en más automática - toda vez que inicie el servicio.

No viene mal instalar el herramental útil adicional, que sería necesario en caso de tener que revisar y depurar errores en el servidor. Lo haremos con:

apt install -y unzip bzip2 rsync curl jq inetutils-ping  ldap-utils smbclient  

Configurar servidor web Apache

Ya deberíamos contar con el servidor web Apache instalado en nuestro Ubuntu Server. Este nos daría el servicio a la web por intermedio de un entorno virtual de uso. Para que funcione aceitadamente junto a OwnCloud debemos configurarlo con ciertas especificaciones. 

Para ello creamos un fichero de configuración /etc/apache2/sites-available/owncloud.conf para el host virtual de OwnCloud:

FILE="/etc/apache2/sites-available/owncloud.conf"
cat <<EOM >$FILE
<VirtualHost *:80>
# descomentar la línea siguiente si la variable fue configurada
#ServerName $mi_dominio
DirectoryIndex index.php index.html
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud>
  Options +FollowSymlinks -Indexes
  AllowOverride All
  Require all granted

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/owncloud
 SetEnv HTTP_HOME /var/www/owncloud
</Directory>
</VirtualHost>
EOM

Finalmente, activamos esta configuración de Host Virtual, mediante:

a2dissite 000-default
a2ensite owncloud.conf

Configurar la Base de Datos


Como en todo uso telemático, se recomienda ejecutar el comando mysql_secure_installation para asegurar la instalación de la base de datos SQL MariaDB y ponerle una contraseña fuerte al usuario de la base de datos ("sec_db_pwd").

Nos aseguramos que el nivel de aislamiento de transacciones esté configurado, y el performance_schema esté activado.

sed -i "/\[mysqld\]/atransaction-isolation = READ-COMMITTED\nperformance_schema = on" /etc/mysql/mariadb.conf.d/50-server.cnf
systemctl start mariadb
mysql -u root -e \
  "CREATE DATABASE IF NOT EXISTS owncloud; \
  CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY '${sec_db_pwd}'; \
  GRANT ALL PRIVILEGES ON *.* TO 'owncloud'@'localhost' WITH GRANT OPTION; \
  FLUSH PRIVILEGES;"

Se recomienda ejecutar el guion mysqltuner para analizar la configuración de la base de datos luego de usarlo con carga de trabajo durante varios días.

Finalmente, activamos los módulos recomendados del servidor Apache:

Instalación de OwnCloud

Con el servidor Web Apache y la base de datos SQL funcionando, podremos descargar e instalar OwnCloud.

Descargar ownCloud

cd /var/www/ ;
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 ;
tar -xjf owncloud-complete-latest-tar.bz2 ;
chown -R www-data. owncloud

Instalar ownCloud


Recuerda configurar una contraseña fuerte para el usuario de administración de ownCloud, y proveer la contraseña del usuario de la base de datos previamente obtenida, bajo el argumento --database-pass.
occ maintenance:install \
    --database "mysql" \
    --database-name "owncloud" \
    --database-user "owncloud" \
    --database-pass ${sec_db_pwd} \
    --data-dir "/var/www/owncloud/data" \
    --admin-user "admin" \
    --admin-pass ${sec_admin_pwd}

Configurar los Dominios Confiables de ownCloud

mi_ip=$(hostname -I|cut -f1 -d ' ')
occ config:system:set trusted_domains 1 --value="$mi_ip"
occ config:system:set trusted_domains 2 --value="$mi_dominio"

Configurar las automatizaciones de cron

Cron nos resultará últil para automatizar distintas tareas automáticas de mantenimiento. Configuramos el trabajo de segundo plano en cron:

occ background:cron

Configuramos la ejecución de un trabajo cronometrado cada 15 minutos y la limpieza de restos todas las noches a las 3 am:

echo "*/15  *  *  *  * /var/www/owncloud/occ system:cron" \
  | sudo -u www-data -g crontab tee -a \
  /var/spool/cron/crontabs/www-data
echo "0  3  *  *  * /var/www/owncloud/occ dav:cleanup-chunks" \
  | sudo -u www-data -g crontab tee -a \
  /var/spool/cron/crontabs/www-data

Si necesitamos sincronizar los usuarios de un LDAP o un servidor Active Directory, podemos agregar este cron adicional. De esta forma cada 4 horas cronometradas se producirá la sincronización de los usuarios LDAP en ownCloud y se desactivarán aquellos que no están disponibles en ownCloud. Además se obtendrá una bitácora en  /var/log/ldap-sync/user-sync.log para su eventual depurado.

echo "1 */6 * * * /var/www/owncloud/occ user:sync \
  'OCA\User_LDAP\User_Proxy' -m disable -vvv >> \
  /var/log/ldap-sync/user-sync.log 2>&1" \
  | sudo -u www-data -g crontab tee -a \
  /var/spool/cron/crontabs/www-data
mkdir -p /var/log/ldap-sync
touch /var/log/ldap-sync/user-sync.log
chown www-data. /var/log/ldap-sync/user-sync.log

Configuramos Caché y Acerrojado de Ficheros

occ config:system:set \
   memcache.local \
   --value '\OC\Memcache\APCu'
occ config:system:set \
   memcache.locking \
   --value '\OC\Memcache\Redis'
occ config:system:set \
   redis \
   --value '{"host": "127.0.0.1", "port": "6379"}' \
   --type json

Configuramos la rotación de bitácoras

FILE="/etc/logrotate.d/owncloud"
sudo cat <<EOM >$FILE
/var/www/owncloud/data/owncloud.log {
  size 10M
  rotate 12
  copytruncate
  missingok
  compress
  compresscmd /bin/gzip
}
EOM

Finalizar la Instalación

Nos aseguramos que los permisos sean los correctos:

cd /var/www/
chown -R www-data. owncloud

Y con esto debería haber quedado instalado ownCloud. Ahora podremos confirmar que está listo para activar el protocolo seguro de conexión HTTPS (por ejemplo usando certificados Let’s Encrypt) dirigiendo nuestro navegador web browser a la URL o IP de nuestra propia instalación de ownCloud (en este caso, nube.peronismo.org). 

Para evaluar la correcta instalación en el servidor y para ver si funcionan los comandos occ, podremos ejecutar lo siguiente:

occ -V
echo "Su contaseña de Admin es: "$sec_admin_pwd
echo "Está documentada en /etc/.sec_admin_pwd.txt"
echo "Su contraseña de Base de Datos es: "$sec_db_pwd
echo "Está documentada en /etc/.sec_db_pwd.txt y en su config.php"
echo "Su ownCloud está accesible desde: "$mi_dominio
echo "La instalación ha sido completada."
No viene mal almacenar esta información de forma segura en un medio aparte, y resguardarlo en caja fuerte.
Podremos encontrar la documentación del servidor de OwnCloud aquí.

miércoles, 9 de agosto de 2023

¿Cómo instalo Nginx en Ubuntu 22.04LTS?

 Apenas iniciada su primer Presidencia, Juan Perón impuso un plan en contra de la suba descontrolada de precios, que puso a tono los mismos y afianzó el poder de consumo del Pueblo Trabajador. Mientras presentaba el plan conocido como "de los sesenta días", explicó cómo instalar el servidor web Nginx en Ubuntu.

¡Señores!
 
Es tal la trascendencia que asigno a la necesidad de terminar con la carestía de la vida - especialmente en beneficio de la clase humilde de la Nación - que he llegado hasta aquí con el deseo de dar la iniciación de esta campaña que llamamos de los sesenta días.

En primer término se ha fijado ya hace tiempo cual es el concepto del equilibrio social entre sueldos y salarios. Existe una línea de la vida fijada por los salarios mínimos. Ese salario mínimo establece la línea de la vida. Los que por deficiencia de salario no alcanzan a ese salario vital, son sumergidos. Y los que lo pasan, son los emergidos.

Buscamos que en el país - en relación a los precios existentes - no existan salarios que establezcan la condición de sumergido para ningún ciudadano argentino. Si los precios suben justificadamente, no hay otro remedio que aumentar los salarios. Pero si suben los precios injustificadamente, el remedio está en bajar los precios.

En este momento, esos dos factores, el aumento justificado y el aumento injustificado, son las causas de la carestía de la vida.

En realidad, el aumento que puede considerarse justificado obedece a razones reales, impulsados por la escasez de producción, por el exceso de exportación o por la mala distribución de los artículos de primera necesidad. Y la causas ficticias obedecen a la especulación, a la mala distribución por acopio o por sustracción a la venta.

Lo primero ha de encararse para resolverlo en forma absolutamente racional, y por lo tanto con medidas racionales. Lo segundo, es decir la especulación, el acopio o la sustracción a la venta deberá combatirse con medidas drásticas de la mayor energía.

En este trabajo que hoy inicia el gobierno, para abaratar los artículos de primera necesidad necesitamos proceder racionalmente para llevar al mínimo los costos de producción, equilibrar la producción misma en su aspecto cualitativo, evitar el exceso de exportación en perjuicio del consumo interno, y racionalizar la producción. Y en segundo término contra las medidas ficticias, es decir la especulación, el acaparamiento o la sustracción a la venta, castigarlo con toda la fuerza de la Ley, ya que ambas cosas deben de considerarse en épocas como las actuales - en que la Nación debe servir al exterior en una proporción desconocida hasta hoy para abastecer a los pueblos hambrientos de otros continentes sin que la población argentina sufra las consecuencias de esa escasez - con una científica graduación de lo que podemos enviar al extranjero y lo que debemos mantener para el alimento de nuestra población.

Para ello, en primer término la colaboración de todos es absolutamente indispensable. Estamos encarando la solución de un problema de todos los argentinos, y en consecuencia todos los argentinos deben colaborar en su solución. Los productores, los industriales y los comerciantes deberán facilitar la solución del problema acelerando la producción, disminuyendo a lo indispensable la exportación, y asegurando la distribución adecuada. Eso en cuanto a las fuerzas patronales.

Los trabajadores tienen aquí también su cooperación, y ella ha de ser aumentando el rendimiento de su trabajo para producir más. Esa es la misión de todo trabajador en este momento. Y su cooperación en el taller, en la fábrica, y en el campo ha de ser asegurar para el país el mayor grado de producción posible, rindiendo con su trabajo en todas las horas el máximo posible.

Los consumidores - vale decir el Pueblo - también tiene su cooperación que asegurar en este problema. Cooperarán no pagando en ningún caso precios mayores que los fijados y denunciando a todo mal comerciante que quiera imponer precios sobre los oficiales fijados. Cada ciudadano debe ser un soldado de esta cruzada y cooperar con el Estado para el bien de todos.

Los funcionarios encargados de la vigilancia e inspección deben ser inflexibles y rígidos en el cumplimiento de su función. Los poderes y autoridades del Estado en todas sus jerarquías y funciones deben prestar apoyo y cooperación para la mejor realización de este plan.

Nadie dentro del país puede ser espectador indiferente sin que se lo considere un traidor a la causa de todos. Esta campaña de sesenta días, debe de poner a la Nación entera en marcha para vencer en ese plazo todas las dificultades, con la cooperación de los productores, industriales y comerciantes, con la cooperación de los trabajadores, haciendo rendir al máximo su trabajo, con la cooperación de los ciudadanos consumidores, no haciendo el juego a la especulación y no pagando en ningún caso un precio sobre los fijados.

Y señores, por sobre todas las cosas para no inutilizar todos estos esfuerzo de conjunto, necesitamos honradez. Honradez en el comerciante, para mantener la calidad de los artículos y no inutilizar los esfuerzos realizados. Honradez en el público, que no se preste a maniobras de ninguna naturaleza. Honradez en los funcionarios para hacer cumplir a todos con su deber de acuerdo a la ley.

Señores, vencidos los sesentas días, los precios de los artículos de primera necesidad serán los establecidos en 1945 por el Consejo Nacional de Posguerra, es decir, lo que necesita una familia obrera, en comida, menaje y vestido, para vivir dignamente con el salario vital mínimo establecido. 
En los servicios telemáticos también hemos de obrar de la misma manera. Hemos de disponer de software servidor capaz de cooperar y de gastar lo mínimo requerido. Nginix es la solución que hemos propuesto.

Se trata de uno de los servidores web más populares del mundo y aloja algunos de los sitios más grandes y con mayor tráfico en Internet. Es más fácil de utilizar que Apache en la mayoría de los casos y puede emplearse como servidor web o proxy inverso.

En esta guía os explicaré la manera de instalar Nginx en su servidor de Ubuntu 22.04LTS.

Requisitos previos

Antes de comenzar a usar esta guía, debería contar con lo siguiente:
  • Un servidor de Ubuntu 18.04 y un usuario regular que no sea Conductor (root) capaz de ejercer privilegios sudo. Además, debería ya tener habilitado un firewall básico capaz de bloquear los puertos que no sean esenciales. Para aprender a configurar una cuenta normal de usuario e instalar un firewall, siga nuestra guía de configuración inicial para Ubuntu 18.04.
Cuando disponga de una cuenta, inicie sesión como usuario no root para comenzar.

Paso 1: Instalar Nginx

Debido aq ue Nginx está disponible en los repositorios predeterminados de Ubuntu, puede instalarlo utilizando el sistema de paquetes apt.
Actualice su índice local de paquetes:

sudo apt update
sudo apt install nginx

Paso 2: Ajustar el firewall

Si siguió el tutorial de configuración del servidor de los requisitos previos, tendrá habilitado el firewall UFW. Compruebe los perfiles de aplicaciones ufw disponibles con el siguiente comando:

sudo ufw app list

...nuestro sistema nos devolverá:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Habilitaremos el perfil más restrictivo, el cual de todas formas permitirá el tráfico que hemos configurado y con ello el tráfico en el puerto 80. Para ello ingresamos:

sudo ufw allow 'Nginx HTTP' 

Verificamos el cambio realizado con:

sudo ufw status 

...nuestro sistema nos devolverá:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Paso 3: Comprobar nuestro servidor web

Realziaremos una verificación con el sistema init systemd para saber si se encuentra en ejecución el servicio, ingresando la siguiente órden:

systemctl status nginx

...a lo cual deberíamos recibir en la terminal algo como:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

A través su dirección IP, accederemos a la página de destino predeterminada de Nginx para confirmar que el software opera de la manera deseada por el Pueblo:

http://IP_del_servidor

Deberíamos ver la insulsa página web de destino predeterminada de Nginx:

Paso 4: Configurar bloques de servidor (recomendable)

Al emplear el servidor web Nginx, podremos emplear _bloques de servidor _(similares a los hosts virtuales de Apache) a fin de encapsular detalles de configuración y alojar más de un dominio desde un único servidor.

Configuraremos un dominio llamado peronismo.com, pero debería cambiarlo por su propio nombre de dominio.

Creemos el directorio para peronismo.com, utilizando el indicador -p para crear cualquier directorio principal necesario:

sudo mkdir -p /var/www/peronismo.com/html

Asignamos la propiedad del directorio:

sudo chown -R $USER:$USER /var/www/peronismo.com/html

Los permisos de su las raíces de nuestras webs han de ser las correctas si no modificó su valor umask, pero podremos comprobarlo ingresando:

sudo chmod -R 755 /var/www/peronismo.com

Asimismo, crearemos allí una página de ejemplo index.html utilizando el editor GNU Nano:

nano /var/www/peronismo.com/html/index.html

Se abrirá el editor GNU Nano con el archivo vacío index.html. Le pegaremos el siguiente contenido:

 

Guardamos los cambios en el archivo con Ctrl+o y cerramos el editor con Ctrl+x.

Acto seguido, creamos un nuevo bloque de servidor en /etc/nginx/sites-available/peronismo.com. Lo haremos con:

sudo nano /etc/nginx/sites-available/peronismo.com

Le pegamos en dicho archivo el siguiente bloque de configuración, a fin de actualizar nuestro nuevo directorio y nombre de dominio:

server {
        listen 80;
        listen [::]:80;

        root /var/www/peronismo.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name peronismo.com www.peronismo.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

Guardamos el archivo con Ctrl+o y cerramos el editor GNU Nano con Ctrl+x.

Habilitamos el archivo creando un enlace entre él y el directorio sites-enabled. Para ello utilizamos:

sudo ln -s /etc/nginx/sites-available/peronismo.com /etc/nginx/sites-enabled/

Al ingresar este comando de organización, quedará habilitado y configurado los dos bloques del servidor para responder las solicitudes según las directivas listen y server_name.
  • peronismo.com: responderá a solicitudes de peronismo.com www.peronismo.com, en tanto
  • default: responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.
Para evitar un posible problema de memoria de depósito hash que pueda surgir al agregar nombres de servidor adicionales, será necesario ajustar un valor en el archivo /etc/nginx/nginx.conf. A tal fin editaremos el archivo:

sudo nano /etc/nginx/nginx.conf

Se abirá Nano con dicho archivo. Usamos Ctrl+w para buscar la directiva server_names_hash_bucket_size. Al localizar dicha línea, le eliminamos el símbolo numeral ("#") a fin de descomentar la línea.


...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Tras guardar los cambios con Ctrl+o y salir del editor con Ctrl+x, realizaremos una prueba operativa en busca de posibles errores de sintaxis:

sudo nginx -t

Finalmente, reiniciamos el servidor Nginx para que se apliquen los cambios:

sudo systemctl restart nginx

Con todo esto, Nginx debería proporcionar su nombre de dominio. Podremos comprobar esto visitando http://peronismo.com. Allí, deberíamos ver el siguiente mensaje:

Conclusión

Conforme hayamos instalado y configurado neustro servidor web, contaremos con muchas opciones respecto del tipo de contenido que ofreceremos, y de las tecnologías que deseemos utilizar para crear una experiencia más completa y Justicialista para el Pueblo, que es el verdadero consumo.

martes, 22 de febrero de 2022

¿Cómo puedo ensayar online con mi banda en Ubuntu?

Juan Perón era un adepto a la música. A pesar de contar con buenas dotes de ejecución, se distinguió por ensayar con los compañeros por internet con Jamulus, el software libre para tocar online en Ubuntu.

(...)
¡Trabajadores!

Siempre es bueno unirse a la peña de la música como natural consecuencia de la coordinación que ha de tener todo Movimiento Humano. Esto nos ha permitido - por demás - insuflar el Justicialismo al ritmo que más nos interesa: el de sumar voluntades. Las realización de esta dicha es una gran adición en pos de alcanzar el objetivo que nos impulsa: ¡la propia felicidad y la de todos quienes nos rodean!

Nuestra doctrina gira en torno a la Justicia Social, de la cual el Software Libre no es sino una versión remozada. Mejorarlo y compartirlo responde al mismo principio rector y es hermanado con la música. 

Vean señores, he explicado cómo instalar el excelente servidor de videollamadas del pueblo GNU Jami, y disfrutar de su enorme capacidad para dictar clases virtuales y conferencias seguras sin caer en opciones tecno-esclavizantes de una oligarquía sin patria ni bandera. Sin embargo, organizar una banda para tocar a través de las redes de datos libres supone un desarrollo aún mayor de la perfección. Un software de tal característica ha de contar no sólo con estas funcionalidades de avanzada, sino también disponer de la condición de una bajísima latencia sonora, capaz de hacer posible coordinar a l@s compañer@s en una misma métrica. Sólo esto podría permitir el ansiado sueño de tocar acompañado a través de la Internet

En vistas de esta montaña de requerimientos, nuestro Movimiento se ha puesto en marcha, y ha logrado su cometido. Se trata del Proyecto Jamulus, una implementación liberada bajo licencia GNU GPLv2 destinada al ensayo musical en vivo a través de las redes.

Para instalar Jamulus podremos utilizar la terminar del sistema. Simplemente desplegamos una con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:

sudo apt update ;
cd /tmp/ ;
wget https://sourceforge.net/projects/llcon/files/Jamulus/3.10.0/jamulus_3.10.0_ubuntu_amd64.deb ;
sudo dpkg -i jamulus_3.10.0_ubuntu_amd64.deb

Tras ingresar nuestra contraseña de conductor, se habrá descargado e instalado el paquete del cliente de Jamulus en nuestra computadora. Naturalmente, el programa también existe para otras plataformas de la ignominia, pero yo os lo enseñaré en Ubuntu, el sistema que he legado al Pueblo.

Es primordial saber que Jamulus da uso al servidor de audio JACK con el claro fin de obtener sonido de calidad y baja latencia. Esto nos permitirá coordinar la música a través de la red de redes.

Nuestro Movimiento Justicialista propugna la cercana unión de los trabajadores, y se eleva como un vínculo de unión de sus voluntades intrínsecas. Esto se replica en Jamulus, ya que para lograr los mejores resultados es muy preferible contar con conexiones cableadas de todo tipo. Eviten en todo lo posible el problemático Wifi, y empleen conexiones Ethernet por cable en el trabajo y en el hogar. Además, evitar el uso de oligárquicos auriculares y micrófonos Bluetooth en pos de los populares equivalentes cableados redundará en facilitar enormemente la inclusión de todos y el goce en las redes, ya que lo simple es doblemente fácil. Quien así no opere comprenderá que la latencia del audio se elevará a niveles estratosféricos. Sigan este consejo, que lo doy con el corazón tan abierto como sólo puede ofrecerse a quien tanto amo: ¡el Pueblo!

1. Preparar tu audio con JACK

Enfocarse en lo simple es el objetivo de todo trabajador que sigue la filosofía UNIX. Como paso previo, cerraremos todas las aplicaciones que usen sonido, y - en caso de querer utilizar una placa de audio USB externa - la conectamos a la computadora.

Preveemos entonces iniciar el servidor JACK (desde Aplicaciones / Sonido / QjackCtl). Normalmente ya debería estar configurado (si no lo estuviese, podrán encontrarlo al final del artículo).

2. Arrancar Jamulus

Con el servidor JACK en pleno funcionamiento, daremos arranque al cliente Jamulus. Podrán hacerlo desde el menú Aplicaciones / Sonido / Jamulus de Ubuntu.

Conforme arranque, la ventana principal de Jamulus cobrará el aspecto siguiente:

Será natural no oír nada aún. No se preocuparán, ya que esta es una regla de oro en Jamulus: normalmente sólo habremos de escuchar el sonido de retorno desde un servidor remoto (que conoceremos como sala de ensayos).

Pues bien, será imprescindible configurar propio perfil de músico. A tal efecto, presionamos el botón Configuración y veremos desplegarse una ventana Configuración. Seleccionemos en ella la solapa Mi Perfil.

El subsiguiente campo Filas Mezclador - en tanto - indica cuantos deslizadores se harán presentes en la ventana de la mezcladora. Si bien la mayoría de los instrumentistas se bastan con 1, podríamos indicar más si fuese el caso que se hayen presentes - de manera local - varios músic@s, o bien si somos un baterista que ha microfoneado, digamos, 8 cuerpos percusivos... en tal caso se indicaría.

3. Conectar a un servidor de sala de ensayos

Antes de mandarnos a tocar con l@s compañer@s "a tontas y a locas", os recomiendo enlazar a un servidor vacío para probar la configuración, y asegurar oír el retorno que envíamos al servidor.

Presionarán el botón de “Conectar” en la ventana principal de Jamulus, y se enfrentarán con la ventana Conectar, la cual permitite unirte a un servidor de audio: la ventana se irá refrescando con salas de ensayos públicas:

En la lista aparecerá el número de usuarios conectados y el número máximo soportado. Lo más importante de los servidores es su “tiempo de ping” indicado en colores. Cuanto mayor la cifra, más difícil será tocar en sincronización. Normalmente, se selecciona un servidor con un tiempo ping de 50 miliosegundos  o menos, si es posible. Depende de la velocidad de conexión y la distancia mutua.

Los servidores permanentes (con disponibilidad las 24h) se muestran en negrita. Los compañer@s compendian estas listas por género, aunque también por ubicación. Puedes filtrar la lista por nombre de servidor o ubicación. Para solo mostrar los servidores ocupados, escribe el caracter “#”. Utiliza el menú desplegable de Lista para elegir un género, y haz clic sobre la peña a la que quieres arrimarte telemáticamente. Para loguearte, haz clic sobre el botón Conectar, lo cual establecerá el enlace.

Si conoces la dirección IP o URL de una sala de ensayos privada, ingrésala en el campo Nombre/Dirección del Servidor. Podrás añadir un número de puerto opcional (ej: jamulus.ejemplo.org:22124) Si anhelas utilizar direccionamiento IPv6, ingrésalo entre corchetes). El campo también mostrará una lista de los servidores utilizados recientemente ("favoritos").

Una vez establecida la conexión con un servidor, asegúrate de que te escuchas bien y arregla cualquier problema de volumen de entrada, etc.

Naturalmente, podrán ejecutar un servidor público el tiempo suficiente para que la banda se conecte, y luego hacerlo privado simplemente desactivando ‘Mi Servidor es Público’ el la ventana del servidor. De esta forma los miembros podrán disfrutar entre sí de la más maravillosa música.

4. ¡A tocar!

Con el sonido configurado, ya puedes empezar a tocar la más maravillosa música. El programa no se anda con vueltas: una vez logrado enlace, te presentarán deslizadores (faders) para cada músico presente en el servidor de la sala de ensayo. En este ejemplo me he juntado a tocar con el bajista Manco, la tecladista Bicha, y el Pomelo, baterista electrónico en la Sala Canus Argentina. Los controles afectan sólo tu retorno de escucha personal.


En el caso de disponer de músic@s configurados en estéreo, también se mostrará encima de todo un pote PAN para paneal@ (Mayúsculas+clic izquierdo del mouse lo resetea al medio). 

En caso de bajar un delizador, disminuirás el retorno de tal músic@, y si lo subes, aumentarás el retorno que oyes de ella. De esta forma, cada un@ puede escoger cómo escucha a l@s demás.

Si no deseas que otros escuchen tu emisión, presiona el botón "Silenciarme Yo", que cortará tu emisión de audio hacia la sala (además, es anónimo).

Las luces LED del vúmetro representan los niveles de los canales estéreo o mono de tu entrada de audio. Asegúrate de regular el volumen para jamas alcanzar el tope de señal. Este efecto indeseado de recorte daría lugar a un sonido distorsionado de audio de la señal de audio (los LEDs indicarían el recorte en rojo si esto sucede). Normalmente aturdirías al resto, ¡no lo hagas!

El deslizador de Reverb te permite agregar un efecto de reverberación mono o estéreo, pero sólo local. 

Debajo de cada instrumentista encontrarás tres botónes de actividad local. El botón GRP te permite agrupar deslizadores para moverlos proporcionalmente y al unísono (hasta 8 grupos). Si mueves el deslizador de cualquier miembro agrupado, los demás deslizadores del grupo también se moverán en la misma proporción. Podrás desagrupar temporalmente un canal mediante Mayúsculas+clic+arrastrar.

El botón MUTE enmudece a uno de los músicos. Si te enmudeces tu mismo, tal acción aparecerá reflejada en las mezcladoras de los demás (no es anónimo). Si muteas tu propio canal simplemente significa que no escucharás tu propio retorno desde el servidor (no significa que los demás dejen de oírte). No se aconseja ya que es altamente probable que tu audio quede a destiempo con los demás miembros de la banda ¡y emularías a El Duki!). Si deseas dejar de emitir presiona el consabido botón "Silenciarme Yo".

El botón SOLO permite escuchar uno o más musiquer@s aislados de l@s demás. Quienes no lo tengan oprimido, quedarán así enmudecidos en tu mezcladora local. Ten en cuenta que aquellas personas que no lo tienen aplicado les aparecerá el icono de “silenciado” sobre tu deslizador (no es anónimo).

Los usuarios se presentarán de izquierda a derecha "en el orden en el que vayan llegando". Podrás alterar dicho orden desde el Menú Editar.

Si el operador de la sala de ensayo habilita la grabación en el servidor, verás un mensaje sobre el mezclador indicando si estás siendo grabado.

Ten en cuenta que puedes utilizar el botón Chat para desplegar la ventana de chat a otras personas de la sala. El mensaje de bienvenida en el chat puede también establecer alguna directriz de utilización de la sala de ensayos.

Normalmente no hay más que hacer; ¡ya podrás tocar con los demás, escuchando la más maravillosa música!


Indudablemente, os recomiendo consultar el excelente manual en castellano en línea de Jamulus, el cual disipará las dudas más extendidas de este excelente programa.

Opciones Avanzadas

Tocar de más suele ser al ñudo, y esto se replica tanto en la música como en la configuración de Jamulus. Sin embargo, para quienes deseen arriesgarse en pos de la Liberación (y tal vez, menor retraso en el sonido), podrán arriesgar revisar las configuraciones avanzadas dentro de Jamulus. A tal fin presionamos el botón Configurar y elegimos la solapa Configuración Audio/Red.

El selector Dispositivo de Audio nos permitirá escoger el controlador y el hardware específico que diseáramos usar (si contamos con varios). El mapeador nos permitirá escoger los canales (ya sea mono o estéreo). Si nuestra/s placa/s de sonido o dispositivos ofrecen más de un canal de entrada o salida, quedarán visibles y podremos mapearlos según nuestras necesidades.

La opción Canales Audio permite escoger entre tres Modos de Salida de audio que utilizará Jamulus. Cada uno de ellos representa un mayor consumo de ancho de banda. Los modos Mono y Estéreo utilizan uno y dos canales de audio respectivamente.

Nota: Activar el modo estéreo duplicará el envío de datos, debes asegurarte que esto no exceda el ancho de banda de tu conexión a Internet. Es preferible ejecutar instancias separadas del cliente para cada voz/instrumento, en lugar de utilizar este mezclador interno de dos canales mono a estéreo.

El modo Entrada mono/Salida estéreo envía audio en mono pero recibe el audio desdoblado en estéreo (para el caso que una placa de audio externa conste de un conector de entrada estéreo para instrumento y otro conector de micrófono independiente. En este caso, las dos señales de entrada se combinarán en un solo canal mono a la vez que la mezcla del servidor se escuchará en estéreo.

Podremos escoger la Calidad de Audio, definiendo así la tasa de de envío de datos a la red. Hemos de asegurarnos que la tasa de subida no exceda el ancho de banda de la conexión a Internet, de lo contrario se producirían cortes. El valor por defecto es calidad Normal.

Configuración de JACK

Normalmente ya debería estar configurada la entrada de audio. Sin embargo, indicaré aquí este paso por si no lo estuviese.

Desde el punto de vista del hardware de audio, podremos configurar la entrada de audio de Ubuntu desde el panel Sonido. Para ello podremos ir a Sistema / Preferencias / Hardware / Sonido. En la solapa Entrada podremos configurar qué conector y dispositivo queremos utilizar.


En este caso utilizo el conector Línea de Entrada (entrada estéreo Line In, conector azul), ya que produce un sonido límpio, y puedo regular el volúmen de captura del instrumento con el deslizador Nivel de Entrada. También podría utilizar Micrófono Frontal o Micrófono Trasero (entradas monoaurales pre-amplificadas,  de conector rosa).

Finalmente, en nuestro sistema GNU con Linux se utiliza la herramienta de configuración QJackCtl para cambiar el tamaño del buffer. JACK suele venir configurado, pero si nunca se ha configurado, podrá hacerse esto presionando el botón Setup y configura la interfaz de audio que quieras utilizar. 

Podrás configurar los aspectos técnicos del audio. Como referencia en este aspecto, considera que en la solapa Configuraciones de JACK podrías establecer una Frecuencia de Muestreo de 48000, cuadros/período en 128 y períodos/buffer en 2.


Reinicia JACK para que los posibles cambios de configuración surtan efecto.

Ten en cuenta que algunas placas de audio disponen de la posibilidad de alterar el retardo de buffer por hardware. La opción de 128 debería funcionar para la mayoría del hardware de sonido, pero podrás utilizar 256 o 512 para conexiones muy lentas, lo cual podría dar mejores resultados.

jueves, 30 de diciembre de 2021

¿Cómo desactivo o activo el Logueo de Root a través de SSH en Ubuntu?

El 23 de Enero de 1945 el Secretario de Trabajo y Previsión Juan Perón promulga el Decreto N° 1440 converniente a las Vacaciones Remuneradas, a la vez que instruye cómo desactivar o activar el logueo de Root desde SSH en Ubuntu.

¡Trabajadores!

Este decreto tiende a que puedan disponer de una serie de días consecutivos de manera que: 

  1. Se trate de un período de inactividad
  2. Sea retribuido anticipadamente y 
  3. Que el trabajador verdaderamente las goce y no sean compensables en dinero.

Además, según la antigüedad en el cargo, la cantidad de días se ve incrementada a lo largo de la relación laboral.

Estas Vacaciones Pagas que ha asegurado el Justicialismo para todos los trabajadores es uno de los grandes logros que propician el ocio y el esparcimiento. Es el alimento espiritual que deben gozar los hombres y mujeres de esta tierra, y que antes estaba sólo reservado al oligarca.

Sin embargo no es un maná que cae del cielo: sin la organización para acción política, los sueños sólo son eso: sueños. Es la Conducción de efectivas acciones de reparación y Justicia Social las que pueden solidificar estos sueños - que operan de planos maestros - en una contrastable Realidad Efectiva.

Todo lo que hemos hecho ha permitido este logro, y como tal, ha reportado la valía de una Revolución que da al Pueblo Trabajador lo que siempre anheló y es - a nadie cabe duda - un Justo Derecho. Ustedes sabrán a quien votar (guiña el ojo).

No es secreto para nadie que en la generalidad de los sistemas GNU se cuenta con acceso remoto de Conducción (el llamado usuario "Root"), y por defecto, este acceso está activado para poder operar el sistema a través de enlaces de datos con el mundo exterior

El sentido es poder realizar todo tipos de acciones de gestión utilizando nuestra terminal y un enlace cifrado, y se ha tornado de extrema utilidad para conducir un sistema de forma remota incluso de vacaciones, sin tener que estar físicamente frente a la máquina.

Esta cómoda práctica - sin embargo - no es siempre lo ideal por razones de seguridad. En los tiempos que corren, tener un acceso de root activado por SSH para los usuarios no autorizados es un riesgo que debemos soslayar, ya que cualquier intruso telemático podría intentar forzar las contraseñas de usuarios a través de un ataque computarizado de fuerza bruta, y de esta manera ganar acceso a nuestro sistema.

A pesar de ser de las especies más exitosas, nadie duda que desde el pérmico a nuestros días, millones de cocodrilos se han ido a dormir pensando "para qué van a querer este cuero" sólo para despertar luego envolviendo unos patacones...

Es por ello señores, que la mejor solución es contar con una segunda cuenta de usuario de uso regular, y luego cambiar al usuario root empleando el comando "su -" cuando esto se haga necesario. Esta es el criterio seguido por ela distribución Debian, pero no suele ser la preeminente en Ubuntu, lo cual - tal vez - no sea sano. Por dicho motivo, antes de hacernos a la mar, crearemos una cuenta de usuario regular con la cual utilizaremos para darnos acceso de conducción por intermedio de los comandos su o sudo.

Agregar un nuevo usuario en Linux

En la mayoría de los sistemas GNU con Linux esto es muy simple. Crearíamos una cuenta de usuario separada logueándonos como root y luego ejecutando el comando adduser para crear un nuevo usuario. En el caso de Ubuntu es igual de simple: abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo adduser usuario

Tras ingresar la contraseña de root localmente, procedemos a completar lo solicitado por el programa adduser, que será el nombre de usuario a crear, su contraseña de usuario (duplicada para no fallar), y opcionalmente sus datos personales. 

Conforme hayamos creado este nuevo usuario, podrán seguir los pasos que os indicaré para desactivar el acceso de root a través del método de Shell Seguro SSH.

Usamos el archivo de configuración maestro sshd para desactivar el login de root y esto podría disminuir el riego o impedir la irrupción de actores no deseados para obtener la conducción de nuestro sistema. Tambiçen veremos cómo reactivar el acceso de root nuevamente así como limitar el acceso de Secure Shell basados en una lista de usuarios permitidos.

Desactivar Login SSH como Root

Para desactivar el login de root, hemos de editar el fichero de configuración principal de Secure Shell, el /etc/ssh/sshd_config.

sudo nano /etc/ssh/sshd_config

En este fichero, buscamos con Ctrl+w la siguiente línea del fichero.

#PermitRootLogin

y deberíamos encontrar #PermitRootLogin prohibit-password o bien #PermitRootLogin no.

Debemos eleminar el ‘#‘ al comienzo de la línea, y la editamos para que quede de esta manera:

PermitRootLogin no
 

Ahora necesitamos reiniciar el servidor de SSH. Esto lo podremos hacer ingresando:

sudo systemctl restart sshd

...o bien:

/etc/init.d/sshd restart

Una vez cumplida con esta tarea, comprobaremos la desactivación intentando loguearnos con el usuario root, y deberíamos recibir el error de "Permiso Denegado, por favor intente nuevamente, o “Permission denied”.

$ ssh root@192.168.0.102
root@192.168.0.102's password: 
Permission denied, please try again.

De este modo, de ahora en adelante deberá loguerse como usuario normal y luego usar el comando su para cambiar al superusuario Conductor root o bien sudo para elevarnos como superusuario.

Activar Login SSH como root

Para activar el logueo del usuario root a través de SSH, hemos de editar el fichero /etc/ssh/sshd_config. Abrimos una terminal con Ctrl+Alt+t e igresamos:

sudo nano /etc/ssh/sshd_config

Usamos Ctrl+w para buscar la línea de la opción de configuración PermitRootLogin yes y la descomentamos removiendo el  ‘#‘ al comienzo, y guardamos el fichero con Ctrl+o.

PermitRootLogin yes

Luego reiniciamos el servicio sshd como se explicó anteriormente, ingresando :

sudo systemctl restart sshd

...o bien:

/etc/init.d/sshd restart

Ahora realizaremos una comprobación intentando loguearnos al sistema con el usuario root.

ssh root@ip_del_servidor
root@192.168.0.102's password:
Last login: Mon Dec 27 15:14:54 2021 from 192.168.0.161

Limitar los logins SSH de Usuarios

Si contamos con un gran número de cuentas de usuarios en el sistema, puede tener sentido limitar el acceso remoto de SSH a aquellos usuarios que realmente lo necesiten. Para ello debemos indicarlo en el fichero /etc/ssh/sshd_config.

sudo nano /etc/ssh/sshd_config

Al final del fichero agregamos una línea con la opción de configuración AllowUsers y luego de dejar un espacio de separación, agregamos una lista con los nombres de usuarios permitidos. Por ejemplo, si deseamos que l@s usuari@s  peron y evita cuenten con acceso remoto ssh, ingresamos:

AllowUsers peron evita

Guargamos los cambios con Ctrl+o y salimos con Ctrl+x. Finalmente reinciiamos el servicio ssh.

domingo, 28 de mayo de 2017

¿Cómo puedo crear un reproductor de audio con control remoto en Ubuntu?

¡Trabajadores!

Normalmente recomiendo utilizar reproductores capaces de correr desde la consola Terminal para reproducir música en forma remota. Esto es así pues podemos ingresar a través de la terminal por medio de un Shell Seguro SSH, y desde allí ejecutar remotamente cualquiera de estos reproductores para reproducir música. El audio saldrá a través del equipo remoto. De la gran lista de programas disponibles, he sido adepto a mocp, ya que opera peronísticamente bajo el principio clientelar, y junto con sus amplias posibilidades puede quedar reproduciendo una vez cerrada la sesión.

Sin embargo, este y otros poseen un inconveniente que en ciertos escenarios puede ser determinantes: para controlarlo se requiere idealmente el acceso a un usuario ya configurado en el servidor remoto, y requieren al menos el uso de una terminal con teclado y pantalla. Existen toda una plétora de situaciones donde no podemos cumplir con esto (por ejemplo, en el caso de desear controlar un reproductor pequeño a través de un celular, o un servicio musical externo in situ, o el caso de contar con un servidor musical de una compañía, o en una organización donde no tengamos acceso como usuario específico al servidor).

Nuestro Movimiento ha sido doctrinalmente concebido para honrar el trabajo en todas las condiciones, a fin de llevar la solución al Pueblo Descamisado bajo todas y cada una de las situaciones posibles. Si bien existen imponderables, gracias al Software Libre podremos afrontar cualquier tarea que nos propongamos y encontrarles una solución.

En este caso en particular nos decantaremos a una opción simple, controlando el audio a través de un sistema clientelar, que no requiera acceso a carpetas home de usuario alguno, sino que se ejecute por fuera de los entornos de usuairo. Dicho programa es mpd, que oficiará de programa demonio o "servidor", en tanto que mpc oficiará de cliente.


En primer lugar instalo en el servidor el programa (técnicamente, el "demonio") de servicio musical y otro que oficie de cliente en el equipo:

sudo apt-get install mpd mpc

Luego asigno los permisos necesarios para el servidor ingresando:

sudo chmod 777 /var/lib/mpd/music/ /var/lib/mpd/playlists/
sudo chown -R mpd:audio /var/lib/mpd/music/ /var/lib/mpd/playlists


Ahora agrego la configuración necesaria para los archivos de configuración:

sudo mv /etc/mpd.conf /etc/mpd.conf.original
sudo nano /etc/mpd.conf


...y le agrego el siguiente contenido

music_directory      "/var/lib/mpd/music"
playlist_directory   "/var/lib/mpd/playlists"
db_file              "/var/lib/mpd/tag_cache"
log_file             "/var/log/mpd/mpd.log"
pid_file             "/run/mpd/pid"
state_file           "/var/lib/mpd/state"
sticker_file         "/var/lib/mpd/sticker.sql"
user                 "mpd"
port                 "6600"
log_level            "verbose"


...y guardo (Ctrl+o) y cierro el archivo (Ctrl+x).

Ahora debemos copiar los archivos de música a reproducir remotamente en la carpeta /var/lib/mpd/music, y si quisiéramos usar listas de reproducción, debemos colocarlas en la carpeta /var/lib/mpd/playlists.

Conforme lo hayamos hecho, debemos bloquear el acceso a dicha carpeta para cualquier usuario que no sean los clientes mpd locales o remotos. Lo haremos con:

sudo chmod 770 /var/lib/mpd/music/ /var/lib/mpd/playlists/

Ahora tomamos nota de quien es dueño de las carpetas. Si no lo hicimos, podremos hacerlo nuevamente con

sudo chown -R mpd:audio /var/lib/mpd/music/

Luego desde la terminal reiniciaremos el servidor para que se active el servicio recién instalado:

sudo reboot

Ahora bien, en los equipos cliente (y naturalmente también podría querer hacerlo en el servidor, a fin de reproducir la música), instalaré los softwares clientelares. Lo haré con:

sudo apt-get install mpc gmpc gmpc-plugins

Acto seguido, en los clientes y en el servidor podremos actualizar la base de datos de música, a fin de que los mismos se informen si en la carpeta Music del servidor se hubiesen agregado nuevos elementos:

mpc update

Indidablemente, que los clientes también pueden ejecutarse también desde cómodos entornos gráficos. El cliente gmpc es útil para tales condiciones y podremos correrlo desde Aplicaciones / Música y Video / Cliente de Reproducción de Música Gnome. Al lanzar el programa, también debemos hacer que actualice su base de datos de música. Si estamos en el servidor, podremos hacerlo desde el menú Servidor / Actualizar base de datos y tendremos entonces nuestra lista de archivos de música, que encontraremos en la carpeta raíz del servidor MPD ("/").

Si estamos desde un equipos cliente, el mismo no encontrará la música hasta que configuremos la dirección del servidor remoto, desde Música / Preferencias, y en la solapa Conexión modificar el campo "Servidor" para que en lugar de localhost, se indique la dirección IP o el nombre del servidor. Luego presionamos el botón Conectar.
Asimismo tendremos clientes para Android que podremos utilizar desde celulares o tablets para controlar el servidor musical mpd. Por ejemplo MPD Control o Droid MPD Client. Estos clientes gráficos nos permiten las facilidades de un cliente gráfico.

Ahora bien ¿qué sucede si deseo emplear un control remoto por infrarrojos para controlar la reproducción del servidor mpd? Esto me permitiría interactuar con un equipo servidor de manera simple, sin siquiera disponer de un teclado, pantalla, ni engorros. Incluso me permitiría armar un pequeño servidor dotado de altavoces que reproduzca música de forma inalámbrica.

El software libre ya cuenta con una solución. Naturalmente, si tenemos un receptor infrarrojo para control remoto - como el RC6 o cualquiera que vienen con sintonizadoras - tendremos varias opciones. La más aventajada y compleja es configurar LIRC para hacer uso de un control remoto IR en una PC.

LIRC es potente y permite configurar distintas acciones para distintos tipos de programas, pero está pensado para usarse al unísono con otros controles (teclado, mouse o cualquier otro). Si nuestro requerimiento es mucho más simple y requiere reemplazar el teclado por el control remoto, podremos instalar en el sistema cliente el programa keybinder, software ingeniado para asignar comandos específicos a los botones del control. Para instalarlo, en la terminal ingreso los siguientes Comandos de Organización:

sudo apt-get install unzip gcc make evtest ;
cd ~ ;
mkdir keybinder ;
cd keybinder ;
wget https://github.com/elopez/keybinder/archive/master.zip ;
unzip master.zip
cd keybinder-master/
make
make install
cd ~
rm -r ~/keybinder


Luego ejecutamos el programa evtest para analizar cuáles son los eventos de los botones de nuestro sistema. Ingresamos en la terminal el comando:

evtest

...y el sistema nos devolverá algo como:

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    Power Button
/dev/input/event1:    Power Button
/dev/input/event2:    Barcode Reader
/dev/input/event3:    Barcode Reader
/dev/input/event4:    Genius Optical Mouse
/dev/input/event5:    CH PRODUCTS CH PRO PEDALS USB
/dev/input/event6:    Microsoft SideWinder Joystick
/dev/input/event7:    HDA Intel MID Mic
/dev/input/event8:    HDA Intel MID Line
/dev/input/event9:    HDA Intel MID Headphone Front
/dev/input/event10:    HDA Intel MID Front Headphone Surround
/dev/input/event11:    USB2.0_Camera
/dev/input/event12:    IR-receiver inside an USB DVB receiver

Select the device event number [0-12]: 12

En este caso indicamos el evento /dev/input/event12, y el sistema denunciará cuáles son los códigos numéricos de los eventos que este dispositivo tiene preprogramado (si es que existiesen algunos). Por ejemplo, podría indicar:

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x10b8 product 0x1fa0 version 0x100
Input device name: "IR-receiver inside an USB DVB receiver"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 41 (KEY_GRAVE)
    Event code 52 (KEY_DOT)
    Event code 55 (KEY_KPASTERISK)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 108 (KEY_DOWN)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 119 (KEY_PAUSE)
    Event code 128 (KEY_STOP)
    Event code 139 (KEY_MENU)
    Event code 158 (KEY_BACK)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 173 (KEY_REFRESH)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 210 (KEY_PRINT)
    Event code 223 (KEY_CANCEL)
    Event code 226 (KEY_MEDIA)
    Event code 352 (KEY_OK)
    Event code 354 (KEY_GOTO)
    Event code 355 (KEY_CLEAR)
    Event code 358 (KEY_INFO)
    Event code 363 (KEY_CHANNEL)
    Event code 365 (KEY_EPG)
    Event code 370 (KEY_SUBTITLE)
    Event code 375 (KEY_SCREEN)
    Event code 377 (KEY_TV)
    Event code 385 (KEY_RADIO)
    Event code 386 (KEY_TUNER)
    Event code 388 (KEY_TEXT)
    Event code 389 (KEY_DVD)
    Event code 392 (KEY_AUDIO)
    Event code 393 (KEY_VIDEO)
    Event code 398 (KEY_RED)
    Event code 399 (KEY_GREEN)
    Event code 400 (KEY_YELLOW)
    Event code 401 (KEY_BLUE)
    Event code 402 (KEY_CHANNELUP)
    Event code 403 (KEY_CHANNELDOWN)
    Event code 405 (KEY_LAST)
    Event code 407 (KEY_NEXT)
    Event code 410 (KEY_SHUFFLE)
    Event code 412 (KEY_PREVIOUS)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    500
    Repeat code 1 (REP_PERIOD)
      Value    125
Properties:
Testing ...


Al presionar los botones del control remoto infrarrojo, debería devolvernos un reporte de tales eventos, en los cuales el valor 1 indica "botón presionado" y el valor 0 indica "botón no presionado".


Testing ... (interrupt to exit)
Event: time 1490184760.781095, type 4 (EV_MSC), code 4 (MSC_SCAN), value 40400d
Event: time 1490184760.781095, type 1 (EV_KEY), code 207 (KEY_PLAY), value 1
Event: time 1490184760.781095, -------------- SYN_REPORT ------------
Event: time 1490184761.023186, type 1 (EV_KEY), code 207 (KEY_PLAY), value 0
Event: time 1490184761.023186, -------------- SYN_REPORT ------------
Event: time 1490184761.793386, type 4 (EV_MSC), code 4 (MSC_SCAN), value 404010
Event: time 1490184761.793386, type 1 (EV_KEY), code 365 (KEY_EPG), value 1
Event: time 1490184761.793386, -------------- SYN_REPORT ------------
Event: time 1490184762.043188, type 1 (EV_KEY), code 365 (KEY_EPG), value 0
Event: time 1490184762.043188, -------------- SYN_REPORT ------------
Event: time 1490184762.734733, type 4 (EV_MSC), code 4 (MSC_SCAN), value 404011
Event: time 1490184762.734733, type 1 (EV_KEY), code 168 (KEY_REWIND), value 1
Event: time 1490184762.734733, -------------- SYN_REPORT ------------
Event: time 1490184762.983185, type 1 (EV_KEY), code 168 (KEY_REWIND), value 0
...etc


Debemos comprobar que efectivamente todas las teclas presionadas tengan programado el código denunciado anteriormente (pues existen ocasiones en que sus funciones denunciadas en la tabla no coinciden plenamente con la de los botones propiamente dichos, pues las plaquetas son genéricas y los controles no poseen todos los botones, o los tienen en lugares diferentes). Para finalizar la prueba de botones presionamos Ctrl+c.

En este caso, se deben programar los eventos según los códigos de los eventos en el archivo /etc/keybinder.conf. Para ello ingresamos:

sudo nano /etc/keybinder.conf

...y le agregamos, por ejemplo:

114,mpc volume +10 # Aumenta el volumen de mpc a +10%, para Vol-
115,mpc volume -10 # Reduce el volumen de moc -10%, para Vol+
168,mpc prev       # Pasa a la pista previa, para <<

407,mpc next       # Pasa a la pista siguiente, para >>
207,mpc toggle     # Reproduce y pausa.
410,mpc random     # Activa reprod.aleatoria, para RANDOM

116,shutdown -h now # Apaga el equipo, para POWER

Y al reiniciar el sistema, tendremos un servidor de audio conectado a altavoces, que podremos controlar simplemente con los botones de un control remoto. Naturalmente que con este conocimiento, habilidad y ganas y sumándole hardware poco costoso consistente en una placa de desarrollo de baja potencia, podremos hacernos un lindo reproductor con caja de madera pulida y acceso a control remoto, que ejecute GNU desde una tarjeta MicroSD.


Si quisiéramos desinstalar el programa y eliminar su carpeta de música y listas de reproducción debo indicar:

sudo apt purge mpd mpc gmpc evtest ;
sudo rm -r /var/lib/mpd/ ;
sudo rm /etc/mpd.conf.original
;