If you don't want to have redundancy,
then no need for clustering and hence all
component i.e call-manager , publisher and tftp can reside on one platform.
I would think the publisher would not be playing a major role here or even be inactive since no
clustering is being done and you're running a stand alone ccm application.
For clustering at its minimum though, you can use two server but three is recommended.
1 server is primary call agent and the second server is the publisher/tftp and secondary call agent.