I’d say the best alternative would be not using ads at all, and instead trying some kind of patronage / membership program.
Not knowing your forum or audience, this is general advice, but: the ad-supported model can sometimes work, for example when you have a very large audience, and/or users (e.g. students) that either can’t afford or just aren’t inclined to pay. However for many niche forums with a clear, unique value proposition, I think it can make a lot more sense to ask folks to support you directly.
For a nonprofit, rather than making it a hard paywall to access the forum, you could have it be an optional but encouraged donation. Folks who pay could be added to a special group on Discourse…this could be used to unlock a private “patrons” category or something if you wanted, or it could simply be used to add a badge subtly indicating that the user is a supporter.
This may or may not tie into a broader sort of membership program on your site, but I think the idea would be small bonuses or ways of recognizing folks that incentivize membership while not costing you much extra. Even if a fairly small fraction of users end up paying, depending on the pricing tiers you set up it’s likely this could net you at least as much $ as ads, as well as being a better way to more strongly engage a core part of your audience.
There are many ways this kind of thing can work with Discourse: