Hey Duc,
as far as I understand, you mounted the machine with the left side to the top, but you mounted the Z assembly on the back of the X gantry. The latter is irrelevant but the first means you do stall homing against gravity. The effect only appears when stall homing. This is because when using stall homing, the controller tries to find out if the axis ceased to move, and it does this by sensing whether the stepper motor produces electro-motive force (i.e. acts as a generator), which it does only when moving. However it can sense this only when there flows no current. But when no current flows, you have no holding torque which means the stepper runs freely, which means, it does no more hold the gantry’s weight against gravity.
You could avoid this by retrofitting limit switches (proximity sensors) instead of using stall homing. Onefinity and Buildbotics controllers support that. But the more simple solution would be to have home at the bottom thus not having stall homing done against gravity.
You can go to the Motors Tab and select Motion: “Reverse”. Then you have the axis mirrored.