Start with the application.
A server specification is only useful in the context of the work it needs to do. A small website, a database and a background processing service place different demands on the same resources.
List the processes you will run, the software they depend on and the traffic you expect. Include supporting services such as the database, cache and scheduled jobs. That gives you a starting point for a capacity conversation.
Match the resource to the constraint.
CPU supports active computation. Memory gives applications and databases room to work. Storage capacity holds your files, while storage performance affects how quickly the system can read and write them. Bandwidth is another budget to consider for workloads that move a lot of data.
Watch these resources together. Adding CPU will not solve a memory shortage, and a larger disk will not fix an inefficient database query. Measure the application before deciding which resource needs attention.
Plan for operation, not just launch.
Include backups, monitoring and a recovery process in the plan. Decide who maintains the operating system, who responds to alerts and how you will know when it is time to scale.
A sensible first configuration should leave room for normal variation without paying for capacity you do not yet need. Review the workload after launch and use actual measurements to guide the next step.