This guy is awesome, get through all parts starting from 1 ending with 5:

https://hackernoon.com/heres-how-i-built-a-private-blockchain-network-and-you-can-too-62ca7db556c0

**EDIT:**

Just to summarize what is there on the link (using Mac):

First you need to [download geth][1], the go etherum platform.

1. Create a folder and create a genesis file inside that folder, call it customGenesis.json, which contains your blockchain details. Make it similar to the following, just change the chain ID:
   
        {
         "config": {
            "chainId": 2017,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
        },  
        "alloc"      : {},
        "coinbase"   : "0x0000000000000000000000000000000000000000",
        "difficulty" : "0x400",
        "extraData"  : "0x",
        "gasLimit"   : "0x8000000",
        "nonce"      : "0x0000000000000042",
        "mixhash"    : "0x0000000000000000000000000000000000012345678765545432233567778987",
        "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
        "timestamp"  : "0x00"
        } 

2. Create another folder which will hold the node information, (folder_of_your_first_node)

3. Open the Terminal to create the first node using the blockchain genesis file:

        geth --datadir (folder_of_your_first_node) init (folder_of_your_genesis_file)/customGenesis.json

4. Start the network using the first blockchain node, for the networkid select any unique number, make it big:

        geth --datadir (folder_of_your_first_node) --networkid 77665533


5. Now the blockchain is ready and up and running, start a **new Terminal** window to access your node:

        geth attach (folder_of_your_first_node)/geth.ipc

6. Now you are inside the node of the blockchain, create an account:

        personal.newAccount()
        Passphrase:(select a password)
        Repeat passphrase: (repeat the password)
        (you should see the address of your account here)

7. You can start mining for ethers, which you will need to deploy the contract:

        miner.start(1)

8. Wait for some time, a minute, then stop mining:

        miner.stop()

**End of Article**

Now I avoided what has been mentioned in the article to deploy contracts, where you can [download the default Mist][2] and start it using your private network, this will make deploying your contracts easier (using **third new Terminal**:

    open -a /Applications/Mist.app --args --rpc  (folder_of_your_first_node)/geth.ipc

You should see your first account full of ethers :). Enjoy!

Another thing worth to mention her, after you deploy your first contract using Mist, you need to go back to your second Terminal (where you are inside the node) and start mining again, otherwise, your contact deployment transaction will not be processed:

    miner.start(1)

Check the Mist, and make sure that the transaction at the bottom of the screen already processed, then you can go back and stop mining:

    miner.stop()


  [1]: https://geth.ethereum.org/downloads/
  [2]: https://github.com/ethereum/mist/releases