Agreeing with others that adding flaws is not the way to make a character less boring.
You may be falling into a frequent fallacy of equating good with nice, and nice can indeed be dull. But nice is not a moral position; nice is a social strategy. People are nice without being good, and good without being nice, but it’s extraordinarily difficult to be both all the time... because a lot of the time the “right” thing to do rocks the boat; it involves opening your mouth when you shouldn’t and acting when you ought, by “nice” rules, to mind your own business. Someone who is both nice and good is a great character, used correctly, because they come with a built-in conflict.
As an example, say someone your character knows and has a good relationship uses an “-ist” term (racist, sexist, ableist, classist, take your pick) around someone the character doesn’t have a relationship with — likely not an intentional insult but a slip of the tongue. The nice path would be to ignore it (preserving his relationship with his friend). The good thing to do would be to correct it (but potentially damage the relationship with no particular payoff). What does he do?
Another example: your character is helping a co-worker with a tedious chore (cleaning the coffeemaker, snaking the drains, mopping the floors, the kind of stuff that has to get done and no one likes being stuck with) when he sees a stranger in what he thinks is genuine difficulty. The co-worker disagrees and says your character is just trying to get out of work. Does your character do the nice thing (help the co-worker he has a relationship with) or follow his moral instinct and see if the stranger is ok?
The mistake I sometimes see people make with these scenarios is they instinctively want to soften it — the friend was totally fine with being called out on their poor choice of words, the co-worker forgives the character immediately afterwards and admits to being wrong. Or they want to hand out payoffs: the stranger is so grateful for the help they become the character’s new best friend, so the character comes out ahead on the social transaction anyway. Good and nice were the same after all!
Don’t do this. Let him bleed a little. Characters who earn their status as a “good guy” (not just a “nice guy”) will be anything but boring to the reader.