Preheat the oven to 350 degrees F.
Spread the hazelnuts in a single layer on a rimmed baking sheet.
Toast for 10-15 minutes, until the hazelnut skins start to crack and flake.
Remove from the oven and cool until you can easily handle the hazelnuts without burning your hands.
Place a handful of hazelnuts on a non-terry kitchen towel and loosely fold the towel over them.
Rub the hazelnuts in the towel to dislodge the skins. Not every bit will come off, and that's fine. Though the hazelnut skin is slightly bitter and can impart its papery texture to the finished product, you don't need to spend hours picking at every last stubborn flake with your fingernails. Do the best you can do and move on.
Place the skinned hazelnuts in a food processor fitted with the S-blade attachment or a high-powered blender.
Grind the hazelnuts until they are reduced to a fine powder.
Scrape down the sides of the bowl and add the maple syrup, cocoa powder, and salt.
Continue to grind, stopping frequently to scrape down the sides of the bowl. This is an exercise in patience, and don't lose faith! Based on the freshness/oiliness of your particular batch of hazelnuts and the horsepower of your food processor or blender, this process can take up to 10 minutes.
If you notice your equipment starting to overheat, stop and let the motor cool down before continuing. Even my Magimix food processor can heat up in the course of making a batch of Nutella.
But just when you're ready to give up and throw your spatula across the room, the ground hazelnuts will coalesce into a more liquidy, buttery texture. You'll see the mixture start to clump and eventually start chugging around the bowl in a stream.
Scrape the nut butter into a mason jar or other lidded container. It will keep in the refrigerator for up to 1 month.