I feel like you're missing the point of a decentralized protocol if at every step you suggest to use centralized services instead.
You can self host every component in the stack. You can create a new one for your use case.
You can self host every component in the stack. You can create a new one for your use case.