Desnublado

Ni una sola “nube”!

En ocasiones cuando hablo con personas nuevas, suelo preguntarles: «¿Que haces cuando tu móvil se queda sin espacio?». Y la respuesta, desafortunadamente, suele ser: «Borrar fotos y videos».

English / Español

ar / bg / bs / cs / da / de / dn / el / en / es / et / fa / fi / fr / ga / hi / hr / hu / id / it / ja / ka / ko / lt / lv / mk / mt / nl / pl / pt / ro / ru / sk / sl / sq / sr / sv / tr / uk / ur / vi / zh

TL;DR

desnublado crea versiones pequeñas de fotos en avif y videos en av1 que ocupan entre 50 y 100 veces menos que los originales con una calidad lo bastante buena como para mantener toda tu colección en tu móvil.

Instala Termux preferiblemente desde F-Droid, en caso contrario desde Google Play, abrelo y ejecuta este comando para instalarlo:

curl -fsSLO https://desnublado.com/desnublado && bash desnublado setup

Consejo: copia el comando al portapapeles, luego mantén presionado en la pantalla de Termux y pulsa pegar.

Índice

Introducción

Este programa crea versiones pequeñas de tus fotos y videos para que cuando decidas liberar espacio puedas mantener una copia en tu dispositivo Android.

De esta manera si decides borrar los originales (para siempre o porque los has copiado a un pendrive, portátil, etc) todavía mantienes una copia accesible de forma local, que no requiere de conexión a internet ni almacenamiento en “la nube”, manteniendo así tu privacidad.

Con los ajustes predeterminados, desnublado:

La base de este programa es un archivo escrito en bash llamado desnublado que se ejecuta en Termux, aunque también se puede ejecutar en Linux Virtual Machine y cualquier distribución Linux. Para la mayoría de usuarios que no tienen instalado Termux, la instalación rápida desatendida es la forma más sencilla de empezar.

Instalación rápida

Para una instalación sencilla con los ajustes predeterminados, sigue estos dos pasos:

  1. Instala Termux

  2. Copia el siguiente comando, abre la aplicación y pégalo (pulsación larga en la pantalla):

    curl -fsSLO https://desnublado.com/desnublado && LANG=es bash desnublado setup -y

Una vez terminada la instalación escribe exit para salir. La próxima vez que abras Termux se ejecutará desnublado de forma automática y comenzará a procesar tus fotos y videos.

Instalación interactiva

Para ejecutar el programa de instalación de forma interactiva y escoger entre las diferentes opciones disponibles, sigue estos dos pasos:

  1. Instala Termux

  2. Copia el siguiente comando, abre la aplicación y pégalo (pulsación larga en la pantalla):

    curl -fsSLO https://desnublado.com/desnublado && bash desnublado setup

El programa de instalación te permitirá seleccionar el idioma, instalar los programas necesarios, cambiar las opciones por defecto y activar o no la ejecución automática de desnublado al abrir Termux.

Actualizar

Para actualizar a la última versión disponible, abre Termux, toca cualquier tecla para detener el inicio automático de desnublado y escribe lo siguiente:

desnublado update

Si la aplicación ssh-keygen (necesaria para verificar la firma digital) no está presente, el programa te pedirá si deseas instalarla. Cuando hayas terminado escribe exit para salir de Termux.

Descargar

Archivo Descripción
desnublado v2026.10.20 Archivo ejecutable desnublado
desnublado.pub Clave pública ed25519 para verificar firma
desnublado.sig Firma digital del archivo
desnublado.lang v2026.09.22 Archivos de traducciones
desnublado.lang.sig Firma digital del archivo
sha256sum.list Hash sha256 del archivo desnublado
sha256sum.list.sig Firma digital del archivo

Verificar firma digital

Desnublado se pública con firma digital y hash sha256 para asegurar su integridad, autenticidad y evitar manipulaciones fraudulentas.

La clave pública en contenida en el archivo desnublado.pub es la siguiente:

desnublado@release ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRUOIit/NU6usSafcc+mIxPlCjpCidS65+k7qY5MuCd solyplaya

Para verificar:

ssh-keygen -Y verify -f desnublado.pub -I desnublado@release -n file -s desnublado.sig < desnublado

El resultado de una verificación correcta es:

Good "file" signature for desnublado@release with ED25519 key SHA256:QE86VSWGb01iZskfTy8coFg1ycD8bAhXRga0r2gJoM0

Instalación manual

Descarga los archivos:

curl -fsSL -o /usr/local/bin/desnublado https://desnublado.com/desnublado && chmod +x /usr/local/bin/desnublado

Verifica la firma digital y configura las opciones que desees mediante el archivo desnublado.override o variables de entorno.

Desnublado requiere los siguientes programas para funcionar:

exiftool ffmpeg imagemagick sqlite xxhash

Se recomienda una versión reciente de los programas, especialmente de ffmpeg.

Instalación de software libre

Si bien las instrucciones de instalación rápida apuntan a la versión de playstore de Termux por ser la opción más sencilla para la mayoría de las personas, la versión de Termux de F-Droid es la base del desarrollo de esta aplicación. A parte de optar por un ecosistema de distribución de aplicaciones para Android en el que tu libertad como usuario es lo primero, dicha versión incluye algunas sutilezas como la capacidad de ocultar el teclado en pantalla automáticamente mientras se ejecuta desnublado.

Otras aplicaciones recomendadas:

Fossify Gallery Aplicación de galería de imágenes respetuosa con tu privacidad, compatible con los archivos generados por desnublado (avif y av1) y además permite navegar las imágenes y videos agrupadas en carpetas y subcarpetas de una forma cómoda. (Los archivos que genera por defecto desnublado se organizar en carpetas de año/mes/archivo)

Fossify File Manager Gestor de archivos sencillo y respetuoso con tu privacidad.

Aves Aves es una excelente aplicación de galería y exploración de metadatos.

Usos avanzados

A parte de generar versiones pequeñas de tus fotos y videos, puedes utilizar desnublado hacer las siguientes cosas.

Procesar una segunda carpeta

Los ajustes de src_extra, src_extra_done y src_extra_dst te permiten definir una segunda carpeta en la cual se procesarán los archivos existentes. Esta puede ser por ejemplo la carpeta donde se guarden las imágenes de otra aplicación de cámara como por ejemplo OpenCamera, o simplemente una carpeta donde copies las fotos y videos generados por otros dispositivos (cámara dslr, cámara de acción, dron, etc)

Importar de otro dispositivo

Puedes importar las fotos y videos generadas por desnublado en otro dispositivo al tuyo, organizando los archivos por fecha y evitando duplicados (según tus ajustes). Copiar los archivos a la carpeta src_import y ejecuta desnublado. Los nuevos serán importados, los duplicados eliminados.

Reconstruir base de datos

Si inicialmente has usado desnublado permitiendo contenido duplicado, puedes reconstruir la base de datos una vez cambiado el ajuste a no permitir duplicados.

Tienes dos opciones para iniciar la regeneración:

Crear un archivo llamado desnublado.rebuild en la carpeta DCIM. (Puedes copiar cualquier archivo y cambiar su nombre a este)

O ejecutando el siguiente comando desde el terminal:

touch $HOME/storage/shared/DCIM/desnublado.rebuild

Información adicional

Los archivos que genera

Para imágenes genera archivos AV1 Image Format en un contenedor AVIF

AVIF ejemplo 1
Descargar ejemplo 1 (94kb)

AVIF ejemplo 2
Descargar ejemplo 2 (29kb)

Para videos genera archivos AV1 - AOMedia Video 1 en un contenedor MKV


Descargar ejemplo 1 (2mb)


Descargar ejemplo 2 (2,6mb)

Estos formatos de archivos generan versiones pequeñas con una calidad muy superior a los jpeg y h264 típicos, y a un tamaño mucho mas reducido.

Dominio Público

Desnublado es software libre y sin restricciones, dedicado al dominio público.

Porqué no Google Play?

Supongo que algunas personas preferirían descargar el “app” de desnublado desde la Google Play Store, sin embargo esto sería contrario a los principios de libertad y soberanía del usuario que defiende esta aplicación.

Vea también Keep Android Open.

Porqué no un APK?

Esta aplicación está deliberadamente creada usando un script bash, el cual es un lenguaje no compilado, sencillo, que permite su modificación fácilmente. Si bien hay muchos proyectos de código abierto que publican sus aplicación compiladas como archivos .apk en distintos sitios, un usuario común que quiera hacer pequeños cambios se encuentra con varios obstáculos que dificultan tanto la comprensión del código, como su modificación y recompilación.

El código de desnublado se puede leer y modificar desde el propio dispositivo móvil sin mayor necesidad que un editor de texto.

Además, el mismo código que se ejecuta en Android sirve también para ejecutarse en cualquier sistema operativo Linux.

Manda algo de amor

He dedicado desnublado al dominio público porque el objetivo principal es dar poder a sus usuarios, libertad, soberanía y evitar la dependencia del almacenamiento en la nube de compañías que invaden su privacidad.

Es gratis, pero se aprecia si quieres mandar algo de amor :)

También me puedes mandar algunas palabras positivas si lo deseas. Me alegrarás el día!

La esencia de desnublado

En esencia, el código siguiente hace los mismo que desnublado cuando este se configura permitiendo contenido duplicado, sin reorganizar por fecha y sin mover los archivos originales.

src="$HOME/storage/dcim/Camera"
dst="$HOME/storage/dcim/Camera_mini"

find "$src" -type f \( -name '*.jpg' -o -name '*.mp4' \) | while IFS= read -r file; do

    target="${file/#$src/$dst}"
    target="${target%.*}"
    mkdir -p "${target%/*}"
    echo "$file"

    case "$file" in
        *.jpg) [ ! -f "$target.avif" ] && magick "$file" -resize @900000\> -auto-orient -strip "$target.avif" ;;
        *.mp4) [ ! -f "$target.mkv" ] && SVT_LOG=1 ffmpeg -nostdin -hide_banner -loglevel error -stats -y -i "$file" -vf scale=640:640:force_original_aspect_ratio=decrease:force_divisible_by=2 -c:v libsvtav1 -crf 41 -preset 2 -c:a libopus -b:a 64k "$target.mkv" ;;
    esac

done

Problemas

Puedes reportar problemas en codeberg o mediante un mensaje en simplex. Asegurate de haber leido la documentación en este sitio primero.

Opciones

Existen dos formas de cambiar las opciones por defecto. Una es mediante el archivo desnublado.override y la otra es mediante variables de entorno (ENV variables). Si una opción se especifica tanto en una variable de entorno como en el archivo desnublado.override, esta última tiene preferencia.

Este sistema de configuración permite cambiar las preferencias sin modificar desnublado, permitiendo así actualizaciones sencillas preservando las preferencias.

Configuración manual

Estas son las opciones que se pueden editar mediante el archivo desnublado.override.

El primer grupo de opciones se pueden configurar con desnublado override mientras que es resto se deben editar utilizando un editor de texto.

# opciones configurables
auto_update="false"
allow_dupes="false"
date_rename="true"
do_scroll="false"
move_sources="true"
show_full_path="false"
src="$HOME/storage/shared/DCIM/Camera"
src_done="$HOME/storage/shared/DCIM/Camera_done"
src_extra="$HOME/storage/shared/DCIM/Camera_extra"
src_extra_done=""
src_extra_dst=""
src_import="$HOME/storage/shared/DCIM/Camera_import"
dst="$HOME/storage/shared/DCIM/Camera_mini"
tmp="$TMPDIR"
lock_file="$HOME/.desnublado.lock"
lang_file="$config_path/desnublado.lang"
rebuild_flag="$HOME/desnublado.rebuild"
db="$HOME/desnublado.db"
min_free_mb="2048"
ext_list="mp4 mkv jpg avif"
prefer_meta="false"
prefer_utc="false"
show_ratio="false"
date_rename_sources="false"

# parámetros de conversión de video
ffmpeg_params=(-vf scale=640:640:force_original_aspect_ratio=decrease:force_divisible_by=2 -c:v libsvtav1 -crf 41 -preset 2 -c:a libopus -b:a 64k)

# parámetros de conversión de imagen
magick_params=(-resize @900000\>)

Por ejemplo para cambiar el valor de src_extra:

desnublado override src_extra "storage/shared/DCIM/OpenCamera"

Y para cambiar el espacio mínimo requerido a 512MB:

desnublado override min_free_mb "512"

Uso de variables de entorno

Todas las opciones configurables a excepción de ffmpeg_params y magick_params se pueden modificar utilizando variables de entorno. El formato es el prefijo DNBL_ y en nombre de la variable en mayúsculas.

Por ejemplo, para cambiar el valor de src de la carpeta Camera a OpenCamera mediante una variable de entorno:

DNBL_SRC="$HOME/storage/shared/DCIM/OpenCamera"

Nota: Los ajustes presentes en desnublado.override tienen preferencia sobre las variables de entorno.

Listado de variables

auto_update

[true|false] pred.: false

true: activa las actualizaciones automáticas de desnublado
false: desactiva las actualizaciones automáticas

allow_dupes

[true|false] pred.: false

true: permite generar contenido duplicado (mismo video / foto con distinto nombre de archivo).
false: no permite generar contenido duplicado.

date_rename

[true|false] pred.: true

true: genera archivos en dst tipo AAAA/MM/AAAAMMDD_HHMMSS_MMM.ext
false: genera archivos en dst con el mismo nombre que el original

do_scroll

[true|false] pred.: false

true: muestra historial completo de archivos procesados
false: limita el historial a la cantidad visible en la pantalla

move_sources

[true|false] pred.: true

true: mueve los archivos originales a la carpeta src_done tras generar la versión pequeña
false: los archivos originales permanecen en la carpeta src

show_full_path

[true|false] pred.: false

true: muestra ruta completa de los archivos procesados y generados
false: muestra solo la ruta relativa a las carpetas src y dst

src

[string] pred.: $HOME/storage/shared/DCIM/Camera

Ruta a la carpeta dónde se encuentran las fotos y videos a procesar

src_done

[string] pred.: $HOME/storage/shared/DCIM/Camera_done

Ruta a la carpeta dónde mover las fotos y videos originales ya procesados

src_extra

[string] pred.: $HOME/storage/shared/DCIM/Camera_extra

Ruta a la carpeta adicional con mas fotos y videos a procesar (Si no existe se ignora)

src_extra_done

[string] pred.: (nada)

Ruta a la carpeta adicional dónde mover las fotos y videos adicionales ya procesados. Si el valor está en blanco se utiliza el valor de src_done (Depende de move_sources)

src_extra_dst

[string] pred.: (nada)

Si el valor está en blanco los archivos extra se generar en la carpeta dst, de lo contrario a la ruta especificada

src_import

[string] pred.: $HOME/storage/shared/DCIM/Camera_import

Ruta a la carpeta que contiene archivos generados en otro dispositivo y que se quiere importar a dispositivo actual. Los parámetros date_rename y move_sources se tienen en cuenta al importar. Los archivos nuevos se mueven a la carpeta dst y los repetidos son eliminados. Si no existe la carpeta se ignora.

dst

[string] pred.: $HOME/storage/shared/DCIM/Camera_mini

Ruta a la carpeta dónde se guardan las fotos y videos generados

tmp

[string] pred.: $TMPDIR

Ruta a la carpeta dónde se generan los archivos temporales

lock_file

[string] pred.: $HOME/.config/desnublado/.desnublado.lock

Ruta al archivo de bloqueo que se utiliza para evitar la ejecución múltiple simultanea

lang_file

[string] pred: $HOME/.config/desnublado/desnublado.lang

Ruta al archivo de traducciones

rebuild_flag

[string] pred.: DCIM/desnublado.rebuild

Si este archivo existe se procede a la recreación de la base de datos de los archivos existentes y se borra este archivo. Esto es útil cuando se ha estado utilizando este programa con la opción allow_dupes activada y después de haber generado archivos se cambia el valor a desactivada. En tal caso algunos archivos no están en la base de datos de contenido único. Esto lo soluciona.

db

[string] pred.: $HOME/.config/desnublado/desnublado.db

Ruta al archivo de base de datos (sqlite3)

min_free_mb

[int] pred.: 2048

Espacio mínimo necesario en megabytes que el dispositivo ha de tener libra para proceder a a conversión de fotos y videos

ext_list

[string] pred: mp4 mkv jpg avif

Lista de extensiones de archivo a procesar, separadas por un espacio.

prefer_meta

[true|false] pred: false

true: si se activa date_rename, determinar fechas con: metadatos -> nombre de archivo -> fecha de modificación de archivo
false: si se activa date_rename, determinar fechas con: nombre de archivo -> metadatos -> fecha de modificación de archivo

prefer_utc

[true|false] pred: false

true: si se activa date_rename, convertir fechas a UTC
false: no convertir fechas

show_ratio

[true|false] pred: false

true: mostrar ratio de tamaño de los archivos generados (cuantas veces mas pequeño que el original)
false: no mostrar ratio

date_rename_sources

[true|false] pred: false

true: genera archivos en src_done tipo AAAA/MM/AAAAMMDD_HHMMSS_MMM.ext
false: utiliza el mismo nombre que el original