My experience migrating from hackmdio/codimd to HedgeDoc

A couple of weeks ago, I started self hosting CodiMD (as it was called back then) for a local organization. A couple of days later, I learned about the whole fork situation - I started digging after some confusion with repos and docs; this was before the rename, so I’m happy it’s being renamed. I found out I had installed hackmdio/codimd. I decided to switch to Hedgedoc (codimd at the time).

Since both projects were active since the fork, I wasn’t sure if the database would be compatible, and I didn’t get any confirmation that the database formats were compatible, so I decided to just create a new database, since there were only three pads so far. I kept the old one around just in case, but ended up not needing them, since users created the pads manually again (we had been using the public hackmd.io instance before this decision). There were a few surprises when migrating:

I had some trouble finding the docker images, even though I was browsing https://github.com/hedgedoc/container. The “container none” badges threw me off, I didn’t understand I had to click them to get to quay.io.

I had to explicitly set the database port in CMD_DB_URL, even though I’m using the default postgresql port.

I had to add CMD_URL_ADDPORT=false , even though the docs seem to indicate that false is the default value. I was ending up with https://mydomain.com:3000 everywhere without it.

I had to set the CMD_IMAGE_UPLOAD_TYPE=filesystem. Even though it’s marked as default, the docker image uses imgur by default. This was kind of scary, and I’m glad I noticed it before folks started using my instance. This is tracked here: https://github.com/hedgedoc/container/pull/83

Regardless of the migration, I was surprised to find that registration by email does not require email confirmation. Since pads live forever, and the instance is in a public URL, I don’t know how we’ll prevent this from being abused. We kind of wanted to leave the instance open for everyone, but this is something we’ll have to figure out first.

1 Like