Hugo Peixoto

Status update, November 2020

Published on December 02, 2020

Table of contents

No more November. I didn’t blog as much this month, so this status update will be a bit longer than usual.

D3 - Defesa dos Direitos Digitais

I started the month doing some work for D3. We use HackMD a lot to colaborate on writing articles and researching topics, and there was some downtime. This made us consider self-hosting our own instance so we could have some more control over our data. I configured a new VPS and set up an instance for our members.

I still need to figure out how to add authentication. I don’t want to have to manually send out invitations to every member that joins. We have a bunch of services that require member authentication, and it would be nice if we could have a single set of credentials per member. I guess what I’m looking for is a SAML/OpenID connect solution that I can self-host. Most of the things that I found were a bit resource intensive, so I still haven’t found a solution. Maybe I should implement one in rust :P


While I was setting up HackMD for D3, I found out that there are multiple versions/forks. TLDR:

Initially I had setup the original CodiMD, but as soon as I found out about the fork, I switched to the forked version. I decided to help with the rename by working on the container repository: Rename HackMD and CodiMD to HedgeDoc. Since travis stopped offering an open source plan, I also helped them migrate from travis-ci to Github Actions: Add github actions to build containers

I also started working on building nightly releases and improving the dockerfiles:

I had the opportunity to add a feature to a project that you can use to generate docker tags based on the git tag being released: Add tag flavor. I also spent some time going through the open issues and PRs, closing the stale ones that were mainly support requests and not bugs. Thanks to these contributions, I’m now part of the HedgeDoc core team:

Personal infrastructure

I migrated my nameservers from AWS Route53 to my own instances of of nsd. I’m thinking of moving the lifeonmars zones to these instances as well, since the websites are all hosted on my machines anyway.

I finally figured out the passphrase of an old ssh key. This was pointless but rewarding, in a weird way. I should dedicate some time to figure out what to do with I need to either fix it or redirect it to my github account or something.

I was looking for a self-hosted solution to share a shopping list with my house mates, and decided to try EteSync, but the task applications that support it didn’t work that great. I started writing a stupid server in rust using diesel but didn’t get very far. I need to give etesync another go.


Cyberscore is not open source yet, because there are hardcoded secrets in the git repository and some trivial vulnerabilities that would be exposed that we need to fix before releasing the code. This month I spent some time working in that direction, by extracting the hardcoded secrets into a config.ini file.

I also changed the way we deploy things, so that root of the repository isn’t apache’s DocumentRoot. This closed a vulnerability where the .git directory was accessible and browsable via the web. It also lets me add files to the repository that I don’t necessarily want to end up being web served, like a

AlumniEI mentorados

I groomed the issues list added some setup instructions and contributing guidelines. We decided to license the code as AGPL.

Conversas em Código Podcast

I recorded two podcast episodes, one about hedgedoc and one about matrix. These should be published during December.

What’s next

It’s Advent of code time! I restarted my blog this year by writing about this contest, and here we are again. If I can keep up with the daily challenges, I’ll see if I can do a small write up every few days.

I’ll probably have some work to do on HedgeDoc. I still have pending PRs, and if the nestjs/react rewrite goes anywhere, the dockerfiles will need to be rewritten to account for the repository split. I’d like to add multi-platform support to our docker images. We’re only building amd64 images, and it would be nice to be able to host this on raspberry pis, for example.

I want to continue working a bit on Cyberscore. We talked about rewriting it from scratch in Laravel or something, but for me that isn’t as appealing as shaping the existing code into place.

I have some issues assigned to me on mentorados that need to be finished by the end of the year, so I’ll work on that.