Hardware for a syslog-ng server
What hardware to use for a syslog-ng server? It is a frequent question with no definite answer. It depends on many factors: the number and type of sources, the number of logs, the way logs are processed, and so on. My experience is that for the majority users even a Raspberry Pi would be enough. But of course, not for everyone.
You can read the rest of my blog at https://www.syslog-ng.com/community/b/blog/posts/hardware-for-a-syslog-ng-server

syslog-ng logo
Añadir el uptime del servidor en el panel admin de Pi-hole
Cómo añadir el dato del uptime del servidor donde tenemos instalado Pi-hole a la cabecera del panel de administración de Pi-hole

Desde que instalé Pi-hole en mi Raspberry Pi para filtrar el tráfico no deseado de publicidad y rastreadores que asolan internet, siempre quise que en el panel de administración también se añadiera el uptime del servidor.
El uptime es el tiempo que el equipo lleva encendido desde que se arrancó, sin que se haya reiniciado, o apagado.
En sistemas GNU/Linux puedes consultar el dato ejecutando el comando
uptime
Que mostrará algo similar a:
19:50:14 up 9 days, 17 min, 3 users, load average: 0,74, 0,80, 0,87
Que muestra la hora actual del sistema, y el tiempo que lleva arrancado el sistema, en el ejemplo anterior lleva 9 días y 17 minutos. También mostraría las horas, en este caso son 0.
Muestra el número de usuarios logueados y la carga del sistema en los últimos 1, 5 y 15 minutos.
También podemos mostrar el uptime de otras formas más amigables como por ejemplo:
$ uptime -p
up 1 week, 2 days, 22 minutes
o que nos muestre desde qué fecha lleva el sistema encendido mediante:
$ uptime -s
2022-04-17 19:32:39
También el dato en segundos está disponible en /proc/uptime
Vamos a utilizar esta última opción y convertirla en segundos, minutos y horas para mostrar la información en el panel principal de Pi-hole como se muestra en la captura que abre el artículo.
Aviso que no soy desarrollador, así que quizás mi opción no es muy ortodoxa. Y también tiene el fallo de que no se actualiza ese dato en el panel. Solo se actualiza si refrescas la pantalla con F5.
He estado mirando cómo hacer que se refresque el dato cada quizás 10 segundos o así, pero todavía está en proceso…
Para mostrar el uptime de nuestro servidor en donde tenemos instalado Pi-hole, en mi caso en mi Raspberry Pi, hay que modificar el archivo:
/var/www/html/admin/scripts/pi-hole/php/header.php
He creado un parche que añade directamente las modificaciones en el archivo usando patch, y que puedes consultar/descargar en este enlace:
Descargado el parche podemos aplicarlo mediante:
sudo patch /var/www/html/admin/scripts/pi-hole/php/header.php uptime.patch
Refrescamos nuestra página del panel de administración de Pi-hole y ya aparecerá el nuevo dato del uptime de nuestro servidor.
He querido sugerirlo como una nueva «feature» en el proyecto Pi-hole, pero hay que registrarse en Discord, y además seguro que el código es muy chapucero y mejorable, así que aquí queda como proyecto personal.
Y si a tí te apetece probarlo, ya te he dado las pautas para incluirlo. Si quieres antes de probarlo, haz una copia del archivo header, por si no te convence y quieres volver al archivo original.
¿Te parece útil ese dato en Pi-hole? Si lo pruebas, utiliza los comentarios para compartir tu opinión.

Disponible Plasma Mobile Gear 22.04
Este mes de abril está siendo un mes con muchos lanzamientos: el viernes hablaba de KDE Gear 22.04 (colección de aplicaciones para sistemas de escritorio) y el lunes de Kubuntu 22,04, la nueva versión de esta veterana distribución. Hoy toca hablar de que también está disponible Plasma Mobile Gear 22.04, la colección de aplicaciones especialmente diseñadas para dispositivos móviles. Hagamos una breve reseña del lanzamiento.

Para los que no lo conozcan Plasma Mobile es la alternativa libre a interfaz gráfica para smartphones de la Comunidad KDE, hablé de él hace un tiempo y, poco a poco, se está convirtiendo en un clásico del blog.
Su idea es muy simple, tras conquistar tu escritorio KDE la Comunidad también quiere conquistar tu teléfono móvil… aunque todavía lo tenga complicado por todas las limitaciones de hardware que todavía tiene este campo de la tecnología.
No obstante, confiemos que de igual forma se han ido conquistando los ordenadores de sobremesa, portátiles y servidores, lleguemos un día que podamos tener libertad total en nuestros smartphones.
Y para cuando eso ocurra la Comunidad KDE estará preparada para ello y por eso está confeccionando un catálogo más que decente de aplicaciones con tecnología adaptativa.
Disponible Plasma Mobile Gear 22.04
En este mes de diciembre, y siguiendo la estela de los KDE Gear, Plasma Mobile Gear ha lanzado su versión 22.04, la cual llega con muchas novedades. Veamos algunas de ellas a la espera de poder realizar un articulo más completo.
- Actualizada la página web: página de inicio, las páginas del sitio, el estilo del contenido y la página de capturas de pantalla.
- Creadas algunas páginas de documentación para desarrolladores, útiles para ayudar a los nuevos contribuyentes a la pila y las herramientas de Plasma.
- Se continua trabajando en la corrección de problemas y mejoras incrementales en el shell para la próxima versión 5.25.
- Se ha corregido la doble animación que se produce al activar y minimizar las aplicaciones,.
- Se ha añadido una función para el conmutador de tareas que permite ordenarlas por el momento en que se abrieron, en lugar de hacerlo por orden alfabético.
La entrada Disponible Plasma Mobile Gear 22.04 se publicó primero en KDE Blog.
Write kubectl plugins using WebAssembly and WASI
A long time passed since the last time I wrote something on this blog! 😅 I haven’t been idle during this time, quite the opposite… I kept myself busy experimenting with WebAssembly and Kubernetes.
You probably have already heard about WebAssembly, but there are high chances that happened in the context of Web application development. There’s however a new emerging trend that consists of using WebAssembly outside of the browser.
WebAssembly has many interesting properties that make it great for writing plugin systems or even distributing small computational units (think of FaaS).
WebAssembly is what is being used to power Kubewarden, a project I created almost two years ago at SUSE Rancher, with the help of Rafa and other awesome folks. This is where the majority of my “blogging energies” have been focused.
Now, let’s go back to the main focus of today’s blog entry: write kubectl plugins using WebAssembly.
The current state of things
As you all know, kubectl can be easily extended by writing external plugins.
These plugins are executables named kubectl-<name of the plugin> that, once
put in your $PATH can be invoked via kubectl <name of the plugin>. This
is the same mechanism used to write git plugins.
These plugins can be managed via a tool called Krew.
The kubectl tool is available for multiple operating systems and architectures,
which means these plugins must be available for many platforms.
Can WebAssembly help here?
I think writing kubectl plugins using WebAssembly has the following advantages:
- Portability: you don’t have to build your WebAssembly-powered plugin for all the possible operating systems and architectures the end users might want.
- Security: each WebAssembly module is executed inside of a dedicated sandbox. They cannot see other modules or processes running on the host. They also don’t have access to the host resources (filesystem, devices, network). Think of them as containers.
- Size: the majority of kubectl plugins are written using Go, which produces big binaries. The average size of a kubectl plugin is around 9 Mb. WebAssembly on the other hand, can produce plugins that are half the size.
Last but not least, this sounds like a fun experiment!
Introducing krew-wasm
The idea about writing kubectl plugins with WebAssembly originated during a
brainstorming session I was doing with Rafa about our upcoming talk for
WasmDay EU 2022. The idea kinda “infected” me, I had to
hack on it ASAP!!! This is how the krew-wasm
project was created.
krew-wasm takes inspiration from Krew, but it does not aim to replace it. That’s quite the opposite, it’s a complementary tool that can be used alongside with Krew.
The sole purpose of krew-wasm is to manage and execute kubectl plugins written using WebAssembly and WASI.
krew-wasm plugins are WebAssembly modules that are distributed using container registries, the same infra used to host container images.
krew-wasm can download kubectl WebAssembly plugins from a container registry and
make them discoverable to kubectl.
This is achieved by creating a symbolic link for each managed plugin. This symbolic
link is named kubectl-<name of the plugin> but, instead of pointing to the
WebAssembly module, it points to the krew-wasm executable.
Once invoked, krew-wasm determines its usage mode which could either be a
“direct invocation” (when the user invokes the krew-wasm binary to manage plugins)
or it could be a “wrapper invocation” done via kubectl.
When invoked in “wrapper mode”, krew-wasm takes care of loading the WebAssembly plugin and invoking it. krew-wasm works as a WebAssembly host, and takes care of setting up the WASI environment used by the plugin.
I’ll leave the technical details out of this post, but if you want you can find more on the GitHub project page.
Some examples
The POC would not be complete without some plugins to run. Guess what, you can find a one right here!
The kubectl decoder plugin dumps Kubernetes Secret objects to the standard output,
decoding all the data that is base64-encoded. On top of that, when a x509 certificate
is found inside of the Secret, a detailed output is shown rather then the not so helpful
PEM encoded representation of the certificate.
If you want to experiment with this idea, you can write your plugins using Rust and this SDK.
Summary
This has been a nice experiment. It proves the combination of WebAssembly and WASI can be used to produce working kubectl plugins.
What’s more interesting is the fact these technologies could be used to extend other Cloud Native projects. Did someone say helm? 😜
There are however some limitations, mostly caused by the freshness of WASI. These are documented here. However, I’m pretty sure things will definitely improve over the next months. After all the WebAssembly ecosystem is moving at a fast pace!
21unity: serving open source software in a cloud based on OpenPOWER
The first time I heard about 21unity was when I read the announcement: 21unity Joins OpenPOWER Foundation. I immediately became interested in the company, as it combines two things I am interested in: POWER and open source. Among others 21unity has its own cloud based on the POWER platform and provides Nextcloud as a service. I tried to refresh my German knowledge and read their website, but the more I read the more interesting it got and the more questions I had. I have seen from the reactions on Twitter, that many people were happy to learn about a new company working with POWER. So, instead of a few quick questions in private, I asked for an interview. Chris Branston of 21unity answered my questions.

21unity Collaboration Cloud
Introduction:
Hi, my name is Chris Branston and I’m 35, living in Nürnberg Germany and am the Head of Marketing and Communications for 21unityGmbH. I’m a tech and opensource enthusiast and have spent many years working in the IT/opensource Industry and have always enjoyed meeting and collaborating with people from around the globe in the many different communities creating awesome and open solutions.

Chris Branston
How 21unity was born?
I only joined 21unity in March 22 but one of the favorite quotes our CTO likes to mention is a quote from Steve Jobs: “Here´s to the crazy ones (…) the ones who see things differently (…) You can quote them, disagree with them, glorify or vilify them, but the only thing you can´t do is ignore them. Because they change things.” “Because the people who are crazy enough to think they can change the world, are the ones who do.“
I love the way 21unity tries to find new solutions, to everyday problems without all the nonsense and blabla, which we are used to from big corporations. But with a sole focus on making IT accessible and easy to use and maybe even fun for our users.
As lateral thinkers in technology, we leave the path of conventional thinking behind, to find new and efficient solutions. Solutions that form the foundation for a trusting and long-term cooperation. Our claim is to stand by our customers as honest partner.
We‘ve learned our trade from scratch and our team consists of technicians, developers and programmers who were there in the beginnings: Those who grew up with Apple II and Lisa and worked with systems from sgi, Cray, Sun and IBM. But generally, we are just as knowledgeable in the Linux or Unix environment, as we are in handling Apple devices (Mac) or Windows PCs.
Our mission is to take really complex technology and deliver it to our customers (and with that the end users) in an easy to use, stress free way. While it is vital, to use state of the art technology, it’s even more important, to create products that do one simple thing – WORK.
Those are the reasons why 21unity was founded and from where we take our everyday motivation to do what we do.
How did you get started with POWER? What was the main reason?
We decided, the only way to deliver consistent services with full control of what happens where and how data is handled and how secure these systems are, is to build our own data center, which is not connected to any of the big 3s networks. This idea might sound a bit crazy at first, but it has one big benefit when you build stuff from scratch: There are no messy integrations, upgrades or other legacy issues that come up, but you get to build exactly what you need and want.
So when we started thinking about architecture and designing the system, we started thinking from the other side- the enduser perspective. We wanted to build a cloud system, that is fast, easy to use and foremost reliable and secure. With the hopes of becoming very successful and gaining many new users in short periods of time, we knew it would be important, that we use hardware that is scalable, modular and which gives the maximum user per core, or to say it a little more colloquial, which gives us more bang for our buck.
The thing about x86 and traditional VMs, is that they also are scalable and manageable, but there is just so much speed you can get out of them. In 2022 we have so many new ways of deploying and running workloads on hardware, that it wouldn’t have made any sense, to deploy in a traditional, or say pretty monolithic way.
So when it came down to choosing an architecture, naturally we decided on using openPOWER, because the POWER architecture has proven itself time and time again in big, mission critical deployments. OpenPOWER, in our scenario, helps us tackle typical challenges like scalability, high availability and stability of our infrastructure. Since we believe in the benefits of open solutions and the communities building them,we joined the OpenPOWER foundation, because we want to use the benefits of a proven technology, combined with a global community of enthusiast and experts. And at 21unity internally, we were always more on the RISC than the CISC side of thing ;)
Do you use IBM servers, or from Raptor Computing? Or do you build your own?
We use POWER 9 processors combined with hardware, that we build ourselves. We will also deliver this hardware to our customers in the future, if they don’t want to or can’t use our cloud services and applications. While IBM servers are usually the go-to for these cases, as mentioned in the first question, we like to re define the common standards and find our own ways of using state of the art technologies, to build the best possible services.
Do you have POWER also on the desktop?
No, for the moment, we are only working on the server side of things, but for the future I was told by our CTO, that a POWER workstation is definitely on the horizon.
You provide Nextcloud, a well known open source application as a service. Are there any other open source software in your portfolio?
Since Nextcloud is a complete collaboration platform, that includes many features and functionalities, we are using a multitude of open source projects and technologies. We are also in contact with different projects like the OpenPOWER foundation to connect and collaborate and modify some of the out of the box experiences, to create our own custom-built platform and features, that are oriented around our customers feedback and needs.
One of the main open source projects I can mention and that we heavily use is Kubernetes.
Your website and blogs are only available in German. Does it mean that you are active only in Germany or German speaking countries? Do you plan international expansion?
As our marketing expert I really love that question and have already been asked about that a couple of times. We had internal discussions about this and decided to start locally and then grow to international levels at pace. I’ve seen many companies trying to reach the whole world instead of taking things step by step and delivering quality over quantity and reach. But I definitely will start to seed international (English) content to our pages and products, as this is an industry standard and I don’t want to leave anyone out with cool information and technology.
Cómo grabar con Krita, vídeo de Ramón Miranda
Hoy os traigo una otra obra de Ramón Miranda en que nos explica cómo grabar con Krita utilizando la nueva funcionalidad de Krita 5: Recorder Docker. Y para hacerlo nada mejor que hacerlo mediante un vídeo donde nos explica las opciones básicas.
Cómo grabar con Krita, vídeo de Ramón Miranda
Empiezan a ser un clásico del blog los vídeos de Ramón Miranda y el fabuloso Krita. Ya han aparecido en esta bitácora 10 trucos para Krita, pintando con Krita el «Tajo de Ronda» y perspectiva con Krita así que no es de extrañar que esta serie siga creciendo, como es el caso de hoy en el que os presento hoy.
En sus propias palabras:
¡HOLA! La Recorder Docker es una función increíble para crear timelapses. Descubre cómo usarla. Disfrútalo! y si te gusta apóyanos!
El vídeo tiene subtítulos en inglés para la gente con discapacidad auditiva y está separado en partes ya que los tiempos están en la descripción de Youtube. No obstante, para el que solo quiera ver el vídeo lo pongo abajo.
Recuerdo bien a Ramón Miranda, al cual tuve el gusto de conocer en la Akademy y Akademy-es de 2013 de Bilbao, y que sigue promocionando Krita con su maravilloso trabajo.
¿Qué es Krita?
Para los que no lo sepan, Krita es el software de pintura digital e ilustración basado en las librerías de la plataforma KDE que antes estaba incluido en Calligra Suite.
A diferencia de otras aplicaciones gráficas, se diseño hace énfasis en la creación de imágenes desde cero, es decir, está especialmente orientado para los artistas gráficos como ilustradores, dibujantes de cómics, etc.
Krita es software libre distribuido bajo la licencia GNU GPL y fue lanzado por primera vez como parte de la versión 1.4.0 de KOffice, el 21 de junio de 2005. (Vía: Wikipedia)
Para ver el funcionamiento de esta aplicación nada mejor que ver un vídeo de Odysseas Stamoglou en la que nos muestra como dibujar una chica futurística con Krita.
La entrada Cómo grabar con Krita, vídeo de Ramón Miranda se publicó primero en KDE Blog.
Btrfs for mere mortals: inode allocation
Lanzado Kubuntu 22.04 LTS «Jammy Jellyfish»
Desde el 2020 que no hablaba de una lanzamiento de una xUbuntu. La razón, como ya dije hace tiempo, es que KDE Neon se ha instalado en mis dispositivos y ya no tengo ojos para otra distro. No obstante, ya que ésta se basa en Ubuntu me alegra que siga evolucionando y que tengamos alternativas. De esta forma me complace anunciar con retraso que ha sido lanzado Kubuntu 22.04 LTS «Jammy Jellyfish», un nuevo paso en la evolución de esta carismática y longeva distribución GNU/Linux.
Lanzado Kubuntu 22.04 LTS «Jammy Jellyfish»
El equipo de Kubuntu se complace en anunciar que Kubuntu 22.04 LTS ha sido lanzado, con el hermoso KDE Plasma 5.24 LTS: simple por defecto, poderoso cuando se necesita.
Con el nombre en clave de «Jammy Jellyfish», Kubuntu 22.04 continúa nuestra tradición de ofrecerte una informática amigable integrando las últimas y mejores tecnologías de Software Libre en una distribución Linux de alta calidad y fácil de usar.
El equipo ha trabajado duro durante este ciclo, introduciendo nuevas características y corrigiendo errores.
Bajo el capó, ha habido actualizaciones de muchos paquetes básicos, incluyendo un nuevo kernel basado en la versión 5.15, KDE Frameworks 5.92, Plasma 5.24 LTS y KDE Gear (antes Aplicaciones) 21.12.3.
Equipo de desarrollo de Kubuntu
Esta nueva versión tiene novedades interesantes como:
- Es LTS, lo cual significa que tiene soporte extendido (acrónimo de Long Time Support,)
- Qt 5.15.3
- VLC Media Player se actualiza a la versión 3.0.16
- kio-fuse se instala por defecto desde la versión 21.10
- kdevelop se actualiza a la última versión
- DigiKam 7 está ahora empaquetado
- labplot se actualiza y ahora construye con soporte de cantor
- Navegador web Firefox 99
- Suite ofimática LibreOffice 7.3.2.2
Para su descarga e instalación os aconsejo visitar la página web oficial de Kubuntu, también podéis ver los errores que van apareciendo y como se solucionan.
Más información: Kubuntu
La entrada Lanzado Kubuntu 22.04 LTS «Jammy Jellyfish» se publicó primero en KDE Blog.
La interfaz de Pi-hole no se me muestra correctamente
Sufrí un contratiempo en el que la interfaz de Pi-hole en mi Raspberry Pi no se mostraba correctamente en el navegador

Pi-hole es una manera de bloquear publicidad y rastreo por parte de sitios web, filtrando ese tráfico inútil y hostil antes de que llegue si quiera a tu equipo.
La verdad es que estoy muy contento con esta herramienta instalada en mi Raspberry Pi, después de añadir algunas listas de bloqueos adicionales, me filtra bastante tráfico indeseado, me bloquea publicidad agobiante al visitar ciertas páginas, y le pone freno al rastreo.
Pero desde hace unos días, tuve un problema que no podía resolver, hasta que preguntando por Mastodon me dieron la solución.
En la captura que abre el artículo se ve la interfaz que normalmente se muestra, con la información de las peticiones resultas, las bloqueadas y una estimación del % que representa.
Además desde ese panel, se puede acceder a varias opciones, gestionar listas, añadir excepciones, cambiar el tema de la interfaz, etc…
Pero desde hace unos días, tuve un problema en el que la interfaz, escrita en php, no se me mostraba correctamente. La verdad es que no sé si coincidió con alguna actualización de la Raspberry, a qué motivo fue debido.
Al acceder a la página principal desde el navegador, se mostraba incompleta. Accediendo desde otro navegador, directamente se mostraba el código php del index.php.
Busqué por la red y no encontré ninguna solución que me funcionara. Traté de reparar la instalación mediante el comando pihole -r que repara/reconfigura tu instalación y no funcionó.
Borré la caché de mi navegador, probé con varios navegadores, desinstalé pi-hole, y volví a instalar y nada.
Mi desesperación me llevó a «quejarme amargamente» en un toot en Mastodon. Y como en mi Timeline no faltan personas listas que tienen muchos conocimientos técnicos, hubo un par de esas personas que se interesaron por mi problema (gracias puppetmaster y T3rr0rzone).
Y pocas pistas y un par de capturas de pantalla fueron necesarios para que Jesús Camacho aka T3rr0rzone editor de la web voidnull.es y sysadmin de pro, diera con la clave que me ayudó a solucionarlo.
Me dijo que probara a ejecutar el siguiente comando para ver qué me daba:
dpkg -l | grep libapache2
Y no me dio ninguna salida. Así que me comentó, que debería faltar algún módulo de apache y php, que probara a instalar lo siguiente en mi Raspberry Pi con Raspbian:
sudo apt install libapache2-mod-php
Y después de descargar e instalar eso, todo volvió a funcionar otra vez, mostrándose correctamente la interfaz de Pi-hole.
Así que aquí queda reflejada la solución a este error, que no conseguía solucionar y que gracias a Jesús se me solucionó (muchas gracias de nuevo!!), volviendo a disfrutar de la protección que me ofrece Pi-hole en mi red de las amenazas de internet.
¡Por si os pasa a vosotros o para mi yo del futuro! Si tienes una Raspberry Pi cogiendo polvo en un cajón, os recomiendo darle este uso… o donármela a mí… jejeje.

Pix2Seq: Nova interface de linguagem para detecção de objetos

A detecção de objetos é uma antiga do setor de visão computacional tem o objetivo de reconhecer e localizar todos os objetos de interesse em uma imagem. A complexidade é enorme em diversos aspectos.
Conforme descrito no paper, é possivel incorporar o conhecimento prévio específico da tarefa com uma técnica de aumento de sequência. Assim surgiu o projeto “Pix2Seq: A Language Modeling Framework for Object Detection”, publicado na ICLR 2022, foi proposto / apresentamos um método simples e genérico que trata a detecção de objetos de uma perspectiva completamente diferente comparado a tudo que conhecemos até o presente momento. Ao contrário dos projetos existentes que são específicas da tarefa, foi proposto a detecção de objetos como uma tarefa de modelagem de linguagem condicionada às entradas de pixel observadas.
Os resultados demonstrados pelo projeto Pix2Seq são animadores e competitivos ao projetos/algoritmos de detecção altamente especializados e bem otimizados existentes. O desempenho do Pix2Seq pode ser melhorado ainda mais com o pré-treinamento de dataset de objetos maior. O projeto foi disponibilizado para comunidade de desenvolvedor/pesquisadores no link : https://github.com/google-research/pix2seq
Conceito do Pix2Seq
A tecnologia é baseada na intuição se uma rede neural sabe onde e quais são os objetos em uma imagem. ( Veja na imagem de teste acima, a dedução de um controle remoto e um copo em minhas mãos ). Durante o aprendizado, o modelo pode aprender a fundamentar as descrições em observações de pixels, levando a representações úteis de objetos. Ao submeter uma imagem, o modelo Pix2Seq gera uma sequência de descrições de objetos, onde cada objeto é retornado usando cinco parâmetros: as coordenadas da região de interesse [ymin, xmin, ymax, xmax] e um rótulo de classe de objetos.
O Pix2Seq propõe uma quantização e serialização que converte as regiões de interesse e nome da classe em sequências de tokens discretos (semelhantes a legendas) e dispara uma arquitetura de codificador-decodificador para entender as entradas de pixel e gerar a sequência de descrições de objetos.
Em breve mais novidades.


