Contabo: A great cloud for personal use

I’m a personal user of Contabo’s cloud services, and I’ve been delighted with them. They offer a wide range of services to choose from, including VPS, dedicated servers, and cloud storage. I’m currently using a VPS to host my personal website and email, and I have also used their Storage VPS and object storage in the past.

I have had no issue with my VPS over the years. I’ve also been impressed with Contabo’s customer support. They’ve always been quick to respond to my questions.

Here are a few of the things I like most about Contabo’s cloud services:

  • Affordable: Contabo’s cloud services are affordable, especially when compared to other providers.
  • Reliable performance: My VPS have always performed well, and the object storage has been reliable.
  • Customer support: Contabo’s customer support is excellent. They’ve always been quick to respond to my questions and help me with any problems I’ve had.

If you’re a personal user looking for reliable and affordable, I encourage you to check out Contabo. They offer a wide range of services to choose from, and they can host many places in the world, including Europe.

Posted in Computer, Linux, Networking, Storage, Virtualization | Leave a comment

Stable Diffusion: samplers comparison

I ran the same prompt using many samplers at different steps counts to evaluate which one(s) give a decent quality at a low step count. I have not used the “restore faces” option.

Here are my observations related to image quality (artifacts) and convergence.

Continue reading
Posted in artificial intelligence, Generative AI, Stable Diffusion | Tagged , , , | Leave a comment

SDXL 1.0 is out!

And voilà! SDXL 1.0 is out. After tinkering a bit, I think it’s working pretty well.

As with SDXL 0.9, I must use both base and refiner models to get good pictures, but they are of excellent quality.

Use the pipeline from ComfyUI and put the models at the right place:

Note that it’s really slow with an AMD Radeon RX 6700 XT, especially because of the 2 models.

A few links:

A few examples:

Posted in artificial intelligence, Computer | Tagged , , | Leave a comment

ComfyUI: remove metadata from image files

When you generate a file using ComfyUI, metadata are added to the image automatically. Amongst the metadata, there is the full workflow including the prompt.

If you want to remove those data, you can use ImageMagick convert with the --strip option.

convert image.png --strip image_strip.png

If you want to alter the original file, use mogrify:

mogrify --strip image.png
Posted in artificial intelligence, Computer, Linux | Tagged , | Leave a comment

ComfyUI: batch run from command line with API

While AUTOMATIC1111 can generate images based on prompt variations, I haven’t found the same possibility in ComfyUI. However, you can achieve the same result thanks to ComfyUI API and curl.

Continue reading
Posted in artificial intelligence, Computer | Tagged , , , , | 2 Comments

ComfyUI custom node Impact Pack

I mostly use the FaceDetailer node to fix eyes and mouths, it really makes a difference, especially with models on CivitAI. You will find the workflow below.

Note that on Nvidia GPU, I can use the SAMLoader node with “GPU” but on AMD GPU (RX 6700 XT), I must use “CPU”.

Posted in artificial intelligence, Computer | Tagged , , , , , | Leave a comment

ComfyUI for dummies: a comprehensive guide for Stable Diffusion

ComfyUI is a web UI to run Stable Diffusion and similar models. It is an alternative to Automatic1111 and SDNext. One interesting thing about ComfyUI is that it shows exactly what is happening. The disadvantage is it looks much more complicated than its alternatives.

In this post, I will describe the base installation and all the optional assets I use. I will provide workflows for models you find on CivitAI and also for SDXL 0.9.

Continue reading
Posted in artificial intelligence, Computer | Tagged , , , , | Leave a comment

Open source document search engines

Some websites post lists the best of open source document search engines available, unfortunately, they don’t seem up to date or they don’t care about unmaintained projects. Here’s my updated list as of July 2023, in no particular order.

Note: there are some document management systems included because they also include a search feature.

Continue reading
Posted in Computer, Software | Leave a comment

Run Jenkins and Jenkins agents on Docker

I have managed a Gitlab instance for a couple of years, but for some organizations, Gitlab is overkill. For some people, Gitea is enough. However, Gitea does not have production-ready CI/CD yet.

Fortunately, it’s possible to link Jenkins to Gitea. Here’s how to do it. In this post, we will first configure Jenkins to use agents in Docker.

Continue reading
Posted in Docker, Linux | Tagged , , , , , , | Leave a comment

Suricata and fail2ban

In case you want to ban IP addresses based on Suricata fast.log, here is the filter you need:

before = common.conf

_daemon = suricata

datepattern = ^%%m/%%d/%%Y-%%H:%%M:%%S
failregex = <HOST>:[0-9]* ->
ignoreregex =

In the jail configuration, I suggest you change the default blocktype from REJECT to DROP.

Edit 2023-03-24: you may want to use the action iptables-ipset-proto6-allports which leverages ipset. It will make your iptables rules much more readable and according to some sources, faster. Just edit your jail.conf and replace the default banaction_allports entry with iptables-ipset-proto6-allports , or explicitly mention iptables-ipset-proto6-allports in the jail configuration of suricata, like so:

enabled = true
filter = suricata
logpath = /var/log/suricata/fast.log
findtime = 3h
action = iptables-ipset-proto6-allports

If you want to match input and forwarding traffic, you can have multiple actions. However, you need to name them differently like so:

enabled = true
filter = suricata
logpath = /var/log/suricata/fast.log
findtime = 3h
action = %(banaction_allports)s[actname="suricata_i", chain="INPUT"]
         %(banaction_allports)s[actname="suricata_f", chain="FORWARD"]

Edit 2023-03-24: initial text, I prefer using ipset to the following.

You should also create a custom action to apply to all protocols and ports:

before = iptables-common.conf

actionstart = <iptables> -N f2b-<name>
              <iptables> -A f2b-<name> -j <returntype>
              <iptables> -I <chain> -j f2b-<name>

actionstop = <iptables> -D <chain> -j f2b-<name>
             <iptables> -X f2b-<name>

actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'

actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>

actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>


You should now be all set to block all the IP addresses that Suricata finds.


Posted in Computer, Linux, Networking, Security, Ubuntu | Leave a comment