Serve localhost with HTTPS using a single command

Serving localhost with HTTPS is a common need while developping a Web application that needs resources from another host, but it’s cumbersome because of the CORS issues and the need to install self-signed certificates or disable security features in the browser. Thankfully, Pierre-Mikael Legris, a developer in Switzerland, recently released Backloop.dev: the DNS entries for … Read more

Remove the expiry date on self-hosted Gitlab personal access tokens

Back in May 2023, Gitlab made it mandatory to have an expiry date on personal access tokens. This is pretty inconvenient in some setups, and fortunately they eventually removed the requirement in Gitlab 17.4, released in September 2024. Make sure you have a version higher or equal to 17.4, then go in the admin dashboard, … Read more

Monitor anything with Telegraf, InfluxDB, Grafana and Python

At Bixoto we use the TIG stack to monitor our systems. “TIG” stands for “Telegraf, InfluxDB, Grafana”. Telegraf is an agent that collects metrics on your servers and sends it to InfluxDB, a database oriented for real-time data. Then, Grafana reads these data points and renders them with nice graphs and provides some alerting. Of … Read more

How does bixoto.com work?

At Bixoto we’re quite ambitious but we’re a small team so we have to make pragmatic choices for the technologies we use. For example, the website is using Magento under the hood, so we haven’t had the need to recode an e-commerce stack from the ground. Magento has its issues, but it has tons of … Read more

Install avifenc on Ubuntu 20.04 and 22.04

AVIF is a next-generation image format for the Web, that’s supported by all major browsers except IE and Edge. It has better compression than WebP, which itself is a great improvement as a replacement for JPG. As of today, the most efficient way to encode JPG images into AVIF is to use libavif’s avifenc. There are no prebuilt … Read more

Always encode your Requests payloads in Python

At Bixoto, we use a lot of different APIs to interface with suppliers and other services. Today, I was working with an XML API using requests (via api_session) and xmltodict. TL;DR: use requests.post(url, data=my_string.encode(“utf-8”)) and not requests.post(url, data=my_string).Long version below: The simplified code looked like this: This worked great until I called client.hello() with a name that contained accents, such as “Élise”. The API … Read more

Add Let’s Encrypt SSL Certificates on Private Domains with Dokku

If you use Dokku, you’re probably already familiar with the Let’s Encrypt plugin to enable HTTPS on your apps with a single command. The plugin uses certbot with the HTTP-01 challenge that requires that the app be accessible on the Internet. This can’t work on apps that live in a private network. At Bixoto, we use Tailscale and Headscale to manage our VPN. … Read more

Deploy Mattermost on Dokku

Mattermost started as an open-source Slack alternative, like Gitlab for GitHub, and as such has been adopted by a lot of organizations because you can self-host it for free (although you have to pay for your own servers and you’re responsible for the maintainance and updates). Dokku is a single-server self-hosted PaaS. Think of Heroku, but open-source … Read more