viernes, 30 de octubre de 2020

Escanear con multifuncional HP sin cuenta HP

Este artículo es una parte desahogo y otra parte solución. El problema es que el software HP no me deja escanear sin iniciar sesión con cuenta HP.

Cuando comenzó la cuarentena por la pandemia de Covid-19, decidí comprar una impresora para usar en el hogar. Mis requisitos eran:

  • Multifuncional: para no tener que comprar luego un escáner por separado.
  • A color: para poder imprimir sin salir de casa (cuarentena), y no tener que comprar otra impresora más adelante.
  • En red: para que todos en la casa pudiésemos imprimir desde cualquier habitación y cualquier dispositivo.
  • Mantenimiento bajo: Con esto quedaron descartadas las impresoras de cartucho. Y entre láser y tinta continua, tinta continua tiene un costo inicial menor.

La opción ganadora en ese momento, por precio y fecha de entrega fue HP Inkjet Wireless 415. Una impresora multifuncional, a color, con conectividad de red inalámbrica (Wi-Fi), a tinta continua.

La aplicación por defecto para escanear de Windows es realmente básica. Así que instalé los controladores HP, y el software adicional para imprimir y escanear.

Todo marchaba bien hasta hace aproximadamente un mes, cuando quise escanear desde la aplicación HP, y me solicitó crear una cuenta HP. Al principio me pareció un poco molesto, ya que me obligaba a buscar la opción de "no quiero tener que iniciar sesión con ustedes para imprimir con el dispositivo que compré y es de mi propiedad". No conseguí dicha opción así que me molesté un poco más, porque ahora iba a tener que buscar en internet donde habían escondido la opción de escanear sin ser espiado. Conseguí otros usuarios con el mismo problema que yo, y las opciones que vi en el momento fueron: ceder y usar una cuenta HP, conformarme con la funcionalidad de la aplicación para escanear que viene por defecto con Windows, o no usar el escáner en absoluto. Ahí me molesté mucho más, porque ninguna de esas opciones me gustó. 

Me vi obligado a consultar posibles aplicaciones para escanear con licencia libre o abierta. Afortunadamente, vi que habían buenos comentarios sobre NAPS2, por lo cual decidí probarlo y funcionó de maravilla. Acto seguido desinstalé el spyware de HP de mi equipo.

Conclusión

viernes, 23 de octubre de 2020

Reparar una actualización fallida de Ubuntu

El otro día estaba realizando una actualización en un computador portátil antiguo de Ubuntu 18.04 a Ubuntu 20.04. Recientemente, el computador ha tenido algunos problemas de sobrecalentamiento, por lo cual tuve que cambiarle la pasta térmica del CPU. Como no había presentado más fallas, me confié, y realicé una una actualización a la siguiente versión. Desgraciadamente, a medio camino de la instalación se sobrecalentó el computador, y por seguridad se apagó. De allí, al iniciar el sistema no volvió a entrar al ambiente gráfico, sino a la consola de emergencia.

En consola de emergencia, lo primero que intenté fue reparar la el estado de instalación de los paquetes utilizando el siguiente comando:

sudo apt install -f

Pero esto falló debido a un aparente conflicto de dependencia mutua de udev con snapd. Entonces comencé a buscar en internet, y conseguí que en algunos casos, basta con:

  1. Reparar la instalación anterior.
  2. Reconfigurar los paquetes instalados.
  3. Actualizar el listado de paquetes instalables desde los repositorios.
  4. Actualizar los paquetes instalados en el sistema (que no requieran la desinstalación de paquetes ya presentes en el sistema).

Esto se puede ejecutar utilizando los siguientes comandos:

sudo apt install -f #1
sudo dpkg --configure -a #2
sudo apt update #3
sudo apt upgrade #4

Mi caso no fue solucionable con los comandos anteriores, ya que el conflicto antes mencionado hacía que terminasen con error "sudo apt install -f", "sudo dpkg --configure -a" y "sudo apt upgrade". El único comando que siguió funcionando fue "sudo apt update". 

Entonces seguí investigando y encontré un procedimiento para reparar una instalación fallida iniciando el equipo con un sistema operativo desde un medio externo (LiveUSB o LiveCD), utilizando chroot. En mi caso, utilicé una memoria USB que tenía a la mano con Debian, pero cualquier otra distribución derivada de Debian (Ubuntu, Mint, etc) o incluso otras distribuciones de Linux. Tomé como base los comandos utilizados allí, pero le hice algunas modificaciones. Los pasos ejecutados fueron:

  1. Iniciar el computador desde un sistema Linux externo.
  2. Identificar la partición donde está instalada el sistema a recuperar. En mi caso tuve que probar con varias, porque el computador tiene varias instalaciones de Linux, de diferentes distribuciones, en distintas particiones.
  3. Montar la partición a reparar en /mnt
  4. Montar "enlazados" (utilizando la opción bind) los directorios proc, sys, y dev del sistema a reparar en el ambiente del medio externo.
  5. Copiar el archivo resolv.conf desde el ambiente externo al ambiente a reparar.
  6. Cambiar de ambiente raíz, al sistema a reparar.
  7. Reparar la instalación anterior.
  8. Reconfigurar los paquetes instalados.
  9. Actualizar el listado de paquetes instalables desde los repositorios.
  10. Actualizar los paquetes instalados en el sistema, que no requieran la desinstalación de paquetes ya presentes en el sistema.
  11. Actualizar los paquetes instalados en el sistema, aunque sí requieran la desinstalación de paquetes ya presentes en el sistema.
  12. Desinstalar los paquetes innecesarios
  13. Salir del ambiente raíz del sistema a reparar.
  14. Desmontar los directorios proc, sys, y dev del sistema a reparar previamente montados en el ambiente externo.
  15. Desmontar la partición a reparar en /mnt previamente montada en el ambiente externo.
  16. Reiniciar el sistema en el ambiente ya reparado.

Estos pasos se pueden ejecutar con los siguientes comandos:

fdisk -l #2
sudo mount /dev/sda1/ /mnt #3 Sustituir sda1 por la partición correcta.
sudo mount --bind /proc/ /mnt/proc/ #4.a
sudo mount --bind /sys/ /mnt/sys/ #4.b
sudo mount --bind /dev/ /mnt/dev/ #4.c
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf #5
sudo chroot /mnt/ #6
sudo apt install -f #7
sudo dpkg --configure -a #8
sudo apt update #9
sudo apt upgrade #10
sudo apt full-upgrade #11
sudo apt autoremove  #12
exit #13
sudo umount /proc/ #14.a
sudo umount /sys/ #14.b
sudo umount /dev/ #14.c
sudo umount /mnt/ #15

miércoles, 18 de octubre de 2017

Gedit: abrir archivo actual en firefox

Me sorprendió que Gedit no tenga fácilmente disponible complementos para "enviar" el archivo actual al navegador web, ya que esto es una práctica bastante habitual mientras se editan páginas web.
  1. Instalar los complementos de gedit
    sudo aptitude install gedit-plugins
  2. Abrir gedit
  3. Entrar al menú "Preferencias"
  4. Hacer clic en la pestaña de "Complementos"
  5. Activar el complemento "Herramientas externas"
  6. Cerrar el diálogo de "Preferencias"
  7. En el menú "Herramientas", buscar "Manage External Tools" (Gestionar Herramientas Externas).
  8. Agregar una nueva rutina haciendo clic en el botón "+".
  9. El comando a ejecutar es
    #!/bin/sh
    firefox -new-tab "$GEDIT_CURRENT_DOCUMENT_PATH"
  10. Le configuré
    • Guardar: Todos los documentos
    • Entrada: Documento actual
    • Salida: nada
    • Aplicabilidad: Todos los documentos (Todos los lenguajes)
  11. Darle un nombre a la nueva rutina
  12. Cerrar el diálogo de "Herramientas Externas"
Para ejecutar la rutina creada, basta con ir al menú herramientas, luego "External Tools" (Herramientas Externas),  y hacer clic sobre el nombre que le colocamos a la rutina.

lunes, 16 de octubre de 2017

Combinar archivos de PDF utilizando pdftk

Necesitaba combinar unos archivos PDF de forma que el archivo final incluyera diversos rangos de cada uno de los archivos de entrada en un orden específico. Para eso utilicé la herramienta pdftk, la cual permite indicar la secuencia de rangos que conformarán el archivo de salida .
pdftk A="archivo1.pdf" B="archivo2.pdf" cat A1 B1 A3-20 output salida.pdf

viernes, 13 de octubre de 2017

Descargar archivos en Google Cloud Storage

Estaba haciendo unas pruebas con las API de Google y quise descargar un archivo alojado en la nube de Google para hacer pruebas locales.
Para utilizar una dirección de la forma
gs://proyecto/archivo.txt
Basta utilizar el URL
http://storage.googleapis.com/proyecto/archivo.txt

martes, 3 de octubre de 2017

Crear paquete deb con Checkinstall

  1. Instalar los requisitos mínimos para utilizar checkinstall
    sudo aptitude install build-essential checkinstall
  2. Descargar archivo TAR.GZ con el código fuente de la aplicación.
  3. Descomprimir el archivo TAR.GZ
    tar -xzvf paquete-versión.tar.gz
  4. Entrar en la carpeta descomprimida
    cd paquete-versión
  5. Configurar
    ./configure
  6. Instalamos las dependencias de compilación utilizando el comando:
    sudo aptitude install dependencia1 dependencia2 #etc 
  7. Compilar
    make
  8. Crear e instalar paquete
    sudo checkinstall -D --nodoc -y

Cambiar versión de VirtualBox de repositorio a ppa

Estaba trabajando en Ubuntu 14.04, con una versión antigua de VirtualBox y decidí actualizarla. Para ello agregué el repositorio oficial de Oracle, siguiendo las instrucciones indicadas.
Luego desinstalé la versión que tenía antigua, y reinstalé la versión más reciente. Sin embargo al intentar ejecutar cualquiera de las máquinas virtuales en el equipo se disparaba el error:
VirtualBox kernel modules do not match the version of VirtualBox
Inicialmente, intenté solucionar el problema infructuosamente desinstalando, reinstalando y reconfigurando el paquete. Luego de esto busqué en internet, y conseguí la solución en un foro.
En resumen:
  1. sudo rmmod vboxnetadp vboxnetflt vboxpci vboxdrv
  2. sudo rm  /lib/modules/*-generic/updates/dkms/vbox*
  3. sudo /sbin/rcvboxdrv setup
  4. sudo /etc/init.d/virtualbox restart

martes, 11 de julio de 2017

Obtener Serial de Producto de Windows 7 a través de la consola

Para poder obtener el número de serial de producto de Windows 7 desde la consola, el primer paso es abrir una consola de comandos como administrador. Una vez abierta la consola, basta con ingresar el siguiente comando:
wmic os get "serialnumber"

miércoles, 26 de octubre de 2016

Contar rápidamente una gran cantidad de archivos en Linux

Este es un artículo breve, tengo un directorio lleno de archivos para un proyecto, y quería una forma de poder contarlos eficientemente. El siguiente comando resultó muy bien:
/bin/ls -f | wc -l 

domingo, 22 de mayo de 2016

Compilar un paquete DEB a partir del código fuente

Me encontré en la situación de no tener un paquete DEB adecuado para instalar en el sistema, ya que no había portado a la versión estable todavía, pero sí tener acceso a las fuentes del paquete.

Lo primero es instalar  los paquetes básicos para la compilación de paquetes DEB
sudo aptitude install build-essential devscripts fakeroot
Luego buscamos el paquete deseado en la página de búsqueda de paquetes de Debian, y descargamos los archivos fuentes, los cuales suelen ser de la forma:
  • paquete_versión.dsc : Archivo de Control de Fuente Debian (Debian Source Control)
  • paquete_versión.orig.tar.gz : Código fuente original
  • paquete_versión.debian.tar.xz : Modificaciones realizadas para empaquetar la aplicación
Colocamos estos tres archivos en un directorio de trabajo propio, y descomprimimos el archivo tar.xz con el comando:
tar xf paquete_versión.debian.tar.xz
Creamos un directorio nuevo y movemos la carpeta debian recién descomprimida, allí. Esto, porque compilar el paquete se hace desde el directorio que contenga la carpeta debian, y el archivo paquete_versión.orig.tar.gz se busca en el directorio superior (..)
mkdir deb-src
mv debian deb-src/
Para instalar las dependencias de compilación del paquete, la opción sencilla es ejecutar el comando
sudo aptitude build-depends paquete
Pero esto sólo nos funcionará si el paquete ya se encuentra en los repositorios. De lo contrario, aptitude reportará que no conoce dicho paquete. En estos casos, debemos examinar el archivo paquete_versión.dsc o el archivo control que se encuentra dentro del directorio debian e instalar los paquetes indicados en la sección Build-Depends, utilizando el comando:
sudo aptitude install dependencia1 dependencia2 #etc 
La opción más recomendada para compilar el paquete es entrar en deb-src, y ejecutar debuild
cd deb-src
debuild
Sin embargo, esto produjo el siguiente error
dpkg-source: error: aborting due to unexpected upstream changes
Este artículo tiene más información sobre este error. Y una forma distinta de evitarlo.

Finalmente, logré compilar el paquete, sin tanta complicación, utilizando el siguiente comando
dpkg-buildpackage -b -uc
Con lo cual, obtuve el paquete paquete_versión.deb

Para instalarlo este paquete, ejecutamos:
cd ..
sudo dpkg -i paquete_versión.deb
En caso de que APT nos indique que hubo un error de dependencias con la instalación, procedemos a ejecutar
sudo apt-get install -f
Lo cual debería calcular cuáles dependencias es necesario instalar, intalarlas y culminar la instalación de nuestro paquete.

La estructura de los directorios es de la siguiente forma:
  • Directorio de trabajo/
    • paquete_versión.dsc
    • paquete_versión.orig.tar.gz
    • paquete_versión.debian.tar.xz
    • paquete_versión.deb
    • deb-src/
      • debian/

Instalar un paquete DEB no disponible en el repositorio de Bananian

Conseguí una aplicación que quería instalar en mi Banana Pi, pero sólo se encontraba en la rama de pruebas (testing), todavía no había pasado a estable.

Lo primero que hice fue intentar descargar el paquete DEB desde la página de búsqeda de paquetes de Debian, aunque estas instrucciones aplican a cualquier paquete DEB que se desee instalar.

Para instalar el paquete, ejecutamos el comando:
sudo dpkg -i archivo.deb
Lo cual arrojó un error de APT indicando que no se pudo terminar de configurar la aplicación ya que faltaban dependencias. Este mensaje de error es previsible ya que al instalar el paquete de esta forma, APT no descarga las dependencias necesarias automáticamente.

Para decargar estas dependencias, ejecuté el comando de APT que hace las instalaciones y desinstalaciones necesarias para resolver los conflictos de dependencias en el sistema de gestión de paquetes.
sudo apt-get install -f
Al ejecutar este comando, lo más común es que APT calcule las dependencias necesarias, y solicite una confirmación antes de instalar dichas dependencias y culminar la configuración de la aplicación que instalamos desde el archivo DEB. Sin embargo, en esta ocasión, sí me arrojó un error inesperado, pidiendo que confirmase deshacer  dicha instalación.

Entonces fui instalando una por una las dependencias faltantes utilizando el comando de costumbre
sudo aptitude install dependencia
Hasta que conseguí el problema: el paquete requería una versión más reciente de una de las dependencias que la disponible en el repositorio.

Dado que la aplicación que quería instalar no forma parte del núcleo de la distribución, ni tiene otras aplicaciones que dependan de ella, ni tampoco es particularmente vanguardista, decidí intentar compilar el paquete DEB a partir del código fuente.

viernes, 20 de mayo de 2016

Configurando SAMBA en Bananian

Para poder compartir archivos desde el Banana Pi a los terminales en mi red local, decidí crear una carpeta compartida por SMB.
# Crear carpeta donde se almacenarán los archivos
sudo mkdir /home/media

# Otorgar permiso de lectura y ejecución a todos los usuarios locales
sudo chmod 777  /home/media

# Crear sub-carpetas para clasificar los archivos
sudo mkdir /home/media/music
sudo mkdir /home/media/video
sudo mkdir /home/media/photos
sudo mkdir /home/media/ebook

# Instalar SAMBA
sudo aptitude install samba

# Respaldar archivo de configuración por defecto
sudo mv /etc/samba/smb.conf /etc/samba/smb.bak

# Crear nuevo archivo de configuración
sudo nano /etc/samba/smb.conf

# Reiniciar servicio samba
sudo service samba restart
#sudo service smbd restart

El archivo de configuración tiene el siguiente contenido
[global]
workgroup = workgroup
security = user
map to guest = Bad Password
share modes = yes
deadtime = 15
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536

[media]
path = /home/media/
public = yes
writable = no
comment = smb share
printable = no
guest ok = yes
 Esta configuración no incluye mediadas de autenticación, ya que la carpeta compartida está pensada para archivos sin riesgo de confidencialidad. Aún así, el acceso se limita a sólo lectura.

miércoles, 18 de mayo de 2016

Configurar un servidor DLNA en Bananian (Debian)

Como parte de mi interés de crear un centro de medios utilizando el Banana Pi, decidí configurar un servidor DLNA.
# Crear carpeta donde se almacenarán los archivos
sudo mkdir /home/media

# Otorgar permiso de lectura y ejecución a todos los usuarios locales
sudo chmod 755  /home/media

# Crear sub-carpetas para clasificar los archivos
sudo mkdir /home/media/music
sudo mkdir /home/media/video
sudo mkdir /home/media/photos

# Instalar minidlna
sudo aptitude install minidlna

# Modificar media_dir=/var/lib/minidlna
# Para que quede como media_dir=/home/media
sudo nano /etc/minidlna.conf

# Reiniciar servicio minidlna
sudo service minidlna restart

domingo, 15 de noviembre de 2015

Instalar Webmin y Usermin en Bananian (Debian)

Instalación

Para la administración de mi Banana Pi, me pareció interesante utilizar Webmin, una aplicación CGI que permite administrar computadores a través de una interfaz web.
Lo primero es agregar el repositorio de Webmin a las fuentes de de APT, ya que este paquete no se encuentra en los repositorios de Debian.
Para ello creamos el siguiente archivocon de texto:
/etc/apt/sources.list.d/webmin.list
Y le agregamos las siguientes líneas
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Agregamos la clave pública con la cual están firmados los paquetes DEB de Webmin
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
Actualizamos la información de repositorios de APT y los paquetes instalados
sudo aptitude update && sudo aptitude full-upgrade -y
Instalamos Webmin y Usermin
sudo aptitude install webmin usermin 
Para acceder a Webmin debemos navegar a https://ejemplo.com:10000
Para acceder a Usermin debemos navegar a https://ejemplo.com:20000

Configuración de Webmin en Subdirectorio con HTTPS

Basándonos en las indicaciones para Webmin con Apache (no aptas para proxy con SSL).
Para poder acceder a estas aplicaciones a través de https://ejemplo.com/webmin/
Habilitamos el módulo proxy de Apache HTTPD con
sudo a2enmod proxysudo service apache2 restart
Modificar el archivo /etc/webmin/config, agregando las siguientes líneas
webprefix=/webmin
webprefixnoredir=1
referer=ejemplo.com
Modificar el archivo /etc/webmin/miniserv.conf, agregando la siguiente línea
cookiepath=/webmin
Reiniciar Webmin ejecutando
/etc/webmin/restart 
Y agregamos a dentro de VirtualHost en /etc/apache2/sites-available/default-ssl.conf
### Webmin ###
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

# Put this in the main section of your configuration
# (or desired virtual host, if using Apache virtual hosts)

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
#ProxyRequests Off
#ProxyPreserveHost On

<Proxy *>
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Proxy>

ProxyPass /webmin https://localhost:10000
ProxyPassReverse /webmin https://localhost:10000

<Location webmin="">
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Location>
Esta configuración tiene carácter experimental. Un cambio deseable es que Webmin utilice un certificado SSL en el cual Apache HTTPD confíe, a fin de cambiar "SSLProxyVerify none"

domingo, 8 de noviembre de 2015

Encontrar la dirección IP de un equipo en la red local (nmap)

Lo primero que tuve que hacer cuando comencé a utilizar mi Banana Pi, fue averiguar cuál dirección IP le había asignado el enrutador por DHCP, para poder conectarme por SSH y hacer las respectivas configuraciones.
Aprovechando que tengo Nmap instalado en mi computador de escritorio, hice uso de los siguientes comandos (desde Windows).
Para obtener los datos generales de la red local:
ipconfig
El cual da como respuesta un listado de la información de todas las interfaces de red del equipo. En la interfaz apropiada (inalámbrica o cableada, por ejemplo), nos interesan los siguientes datos:
   IPv4 Address. . . . . . . . . . . : 192.168.0.80
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
Con la dirección IP y la máscara de subred, ejecutamos (con permiso de Administrador)
nmap -sP 192.168.0.80/24
El listado resultante nos indicará cuáles direcciones IP están activas en la red local, así como el nombre del equipo.

sábado, 7 de noviembre de 2015

Windows: Cómo saber quien está conectado a un servidor remoto

A veces es necesario conectarse a un servidor Windows remoto, pero por limitaciones en el número de licencias, se debe revisar primero quién está conectado.
Una forma de hacerlo, es intentar conectarse y que el Servidor indique si hace falta expulsar a alguien para poder conectarse. Pero esa forma me parece poco elegante y algo intrusiva.
Buscando en internet conseguí el comando query, que permite listar los usuarios conectados a un servidor, ejecutando la siguiente sentencia en CMD:
query user /server:example.com

miércoles, 4 de noviembre de 2015

Cómo ejecutar sentencias PHP desde la consola

Estaba revisando el código de algunas páginas en PHP y quise validar, rápidamente, el valor de algunas expresiones utilizadas. 
Para no tener que montar un depurador, o configurar un ide, o empezar a escribir mini páginas PHP de prueba, decidí averiguar como ejecutar PHP desde la consola.
Resultó ser bastante sencillo
php5 -r 'echo php_uname("n") . "\n";'

lunes, 2 de noviembre de 2015

Configurar HTTPS en Banananian (Debian)

Ya configurado Apache HTTPD en mi Banana Pi, el siguiente paso paranoico lógico es configurar HTTPS para que el tráfico quede cifrado. De esta forma se protege la confidencialidad de cualquier información importante (como contraseñas) que tengan que viajar por la red.
Encontré un tutorial para Debian, bastante completo, en Digital Ocean.
En resumen, para asegurarnos de que estén instalados y actualizados tanto Apache HTTPD como OpenSSL, activar HTTPS y generar el certificado SSL:
sudo aptitude update
sudo aptitude full-upgrade
sudo aptitude install apache2 openssl
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload
sudo mkdir /etc/apache2/ssl

sudo openssl req -x509 -nodes -days 365 -newkey \
rsa:2048 -keyout /etc/apache2/ssl/apache.key -out \
/etc/apache2/ssl/apache.crt
sudo chmod 600 /etc/apache2/ssl/*
Luego es necesario editar el archivo de configuración del sitio web SSL con
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
Allí debemos modificarlo para que quede de la siguiente manera:
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName www.example.com:443
        DocumentRoot /var/www/html
        . . .
        SSLEngine on
        . . .
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Reiniciamos el servicio Apache HTTPD
sudo service apache2 reload
En este punto el servicio Apache HTTPD está respondiendo peticiones por HTTP y por HTTPS. Para que todo el tráfico HTTP sea redirigido a HTTPS, editamos la configuración del sitio por defecto con
sudo nano /etc/apache2/sites-enabled/000-default.conf
Y modificamos el archivo de forma que quede así
<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost >
Finalmente, reiniciamos el servicio Apache HTTPD
sudo service apache2 reload

domingo, 1 de noviembre de 2015

Si la consola no autocompleta (2)

Hace un (largo) tiempo, tuve que modificar la configuración de bash en mi laptop (con Ubuntu) porque no podía autocompletar con la tecla de tabulación comandos como aptitude o apt-get. Me encontré con el mismo problema en mi Banana Pi, con Bananian, pero el problema no estaba en el archivo .bashrc, ya que éste ya tenía activa la opción para autocompletar.
Luego de algunas búsquedas en Internet, di con el tema: faltaba instalar el paquete bash-completion
sudo aptitude install bash-completion
Luego de recargar bash, comenzó a funcionar el autocompletado para aptitude y apt-get
bash 

sábado, 31 de octubre de 2015

Instalando Apache HTTPD en Bananian (Debian)

Lo primero que tengo que hacer para poder utilizar mi Banana Pi como un servidor de Intranet en mi casa es instalar el servidor web.
Empezamos con la instalación de Apache2 y los paquetes que recomienda.
sudo aptitude install apache2 -r
Luego viene la configuración de los módulos, en particular userdir, que permite que los usuarios del servidor puedan publicar sitios en html en la dirección servidor/~nombredeusuario, con tan solo guardarlos en el directorio public_html de su carpeta personal.
sudo a2enmod userdir.load
Luego unas medidas de seguridad sencillas: Desactivamos que indique su versión y el sistema operatico en las cabeceras HTTP y en el pie de página de algunas páginas por defecto. Es necesario editar el archivo /etc/apache2/conf-enabled/security.conf y fijar los siguientes valores
ServerTokens ProductOnlyServerSignature Off 
Finalmente, reiniciamos el servicio Apache2
sudo service apache2 restart
Ahora tenemos un servidor web en el Banana Pi.

Para deshacernos del siguiente mensaje:
apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.162. Set the 'ServerName' directive globally to suppress this message
Creamos el siguiente archivo
sudo nano /etc/apache2/conf-available/ServerName.conf 
Cuyo contenido debe ser
ServerName nombredelservidor
Activamos este archivo de configuración con
sudo a2enconf ServerName.conf
Y reiniciamos el servicio Apache2 nuevamente
sudo service apache2 restart