Just came here to say that my experience so far with self-hosted is that it’s not worth the time. We’ve been using circle ci for a while and I think it’s worth every penny.
Even “simple” things like UI headers that alert you to potential build issues with npm, etc. are taken for granted but would be a potential nightmare to debug when your builds are failing to production.
I think it would make much more sense to refine your workflow a bit to fit into circleci’s free plan than to introduce a huge layer of complexity into your pipeline. As some others have suggested, you can get pretty aggressive with the caching to trim down your build times. Or limit builds to a pre-prod branch that you are confident will pass. Just some ideas =)