The GH (general or total hardness) is due to the level of dissolved minerals, primarily calcium and magnesium, in the source water. There are fish species that live and thrive in hard water, but there are many that cannot.
The easiest thing is to stay with the species that live in such hard water. Livebearers, rift lake cichlids, and some rainbowfish are general examples.
The only effective way to soften water is by dilution using "pure" water such as Reverse Osmosis, distilled, or sometimes rainwater. You mix the source (tap) water with pure water, and the ratio will determine the GH. For example, mixing half tap water and half pure water will half the GH. There are two issues doing this: you have to pre-mix the water for water changes, and if you have to buy the pure water it can get very expensive long-term.
Houses with hard water sometimes use a water softener, but these can be bad for fish depending how they do the softening. Most use sodium chloride (common salt) in exchange for the calcium and magnesium salts. But the salt water is just as bad if not even worse for soft water fish.
You can use organics such as peat, along with dried leaves, wood, etc, but these are not very effective with very hard water. In most cases, especially with a GH of 21 dGH, this will not work at all as it would take an enormous amount of peat and it would lose its capacity very quickly.