Hiya,
I'm using Inventree. It is not too bad. It is open source and is being actively developed.
Inventree supports barcodes, but I do not have a barcode reader, so am not currently using it. I aim to use barcodes, but I can't comment on how well it works.
It supports all this:
> I want something that tells me where stock is, how much I've got left, minimum stock levels for reorder, how many units I can make with given stock
except, I can't confirm the minimum stock levels for reorder - you will have to confirm this yourself.
I'm self hosting on a spare machine using the Docker image method. I had no prior experience with Docker, but it was reasonably straight forward to setup. (I'm using OpenMediaVault which has Docker support).
My only gripe is with this method is that while the database files sit nicely at a location external to the Docker image, the Docker image's internal user permissions are different to what the share location has.
This makes it difficult to back up, as I need to reset the permissions each time I back up. There must be a nicer way to do this, but I haven't spent the time yet to investigate.
I'm reasonably happy with Inventree. Being a smallish open source project, my only only concern is that it gets abandoned later on down the track.
Before settling on Inventree I checked out partkeepr. I think the original dev abandoned the project. It was picked up by others, but....
I also looked at Partbox and Bomist, but they were closed source and cloud based. Bomist's cheaper version did not support internal part numbers.
In terms of ERPs, I had a quick look at odoo and tryton. Both were open source, Tryton was free (I think). Both were reasonably complex. I didn't want that level of complexity just yet - I just needed something to manage my parts.
Hope that is useful.