Firmware can be updated from within HAOS/HASSIO however it is a little tricky as you must first disable the ZHA integration then connect via SSH and run the update script via docker so it is much easier to just temporarily unplug the adapter and move the adapter to another computer and simply run the firmware update there, see → https://community.home-assistant.io/t/how-to-update-conbee-ii-on-hassio-with-deconz-phoscon-integration/402826/
I currently recommend ITead’s Sonoff Zigbee 3.0 USB Dongle Plus “ZBDongle-P” variant, (the newer “ZBDongle-E” variant also works but it is still relatively new so doesn’t yet have a proven track record).
I do not personally recommend a hacked gateway, but if you like the concept then instead checkout an Ethernet (wired) connected open-source ESP32 based gateway like the ones from Tube and ZigStar:
https://community.home-assistant.io/t/zigstar-zigbee-coordinators-and-routers/338586