For the crate, what worked best for my puppy was to teach her to "go to bed". That way you don't need to physically force him in there, but he'll go in willingly. This falls into place with crate training generally, where he should be okay going in and staying in his crate.
Before starting this exercise, choose a place that you want his crate to be. If you keep changing the location his den, he may have a harder time recognizing it as his 'room', and you may have to repeat this exercise in each different location the crate is placed (my dog generalized it pretty well, but I live in a small condo).
1. Sit next to the crate, and toss a treat inside. When you dog goes in to get the treat, click when all four paws are in the crate, then give him another tasty treat. Repeat 10x until he's automatically going into the crate thinking he's going to get a treat.
2. Once he starts going in automatically, add in the cue word right before you know he's going to go in. Say "Crate!" or "Go to Bed!" or "Goodnight!" and when all four paws are inside the crate, click and treat. Repeat until he's getting this 9/10 times.
3. Once he's good at this, increase the distance, sit a foot away from the crate. Say the cue word, and if he doesn't go in, toss the treat in and when all four paws are in the crate, click and treat! Repeat 10-20 times.
4. Increases distance to a few feet away (repeat step 3).
5. Once he's reliably going inside the crate, ask him to lie down as well, before he gets the treat. So, he goes in, put him in a down position either through luring or if he knows the command ask him to lie down, and once he does, treat. Repeat repeat repeat. Now, he only gets the treat if he a) goes in the crate b) lies down in it.
6. Close the door for one second once he's inside. Click if he's quiet in the crate, then let him out. Repeat with increasingly longer intervals, always letting him out when he's quiet and never paying attention to him if he whines or barks.
Hope this helps!