What you're describing sounds like normal shyness for his age, especially when everything is new. But there's one important thing: if he's watching from a distance without trying to approach, he probably needs a little push. It's not about forcing him, but about giving him tools and confidence. Talk to his teacher so she can include him in group activities where he doesn't have to "take the initiative" on his own - like directed games where everyone participates together. That way he'll interact without the pressure of having to make friends.
At home, you can practice social situations without it being obvious that you're "practicing." For example, invite another kid from his class over for a short afternoon (an hour max, not the whole day), somewhere they can do something: play in the yard, do something with clay, watch a movie. That way they don't have to "talk" awkwardly. And here's the hack that not many people mention: **give him a "role" in the activity**. Like, if they're building a fort with cushions, he's the "construction boss" and the other kid is his "assistant." That gives him confidence because he has a purpose and a position, not just "playing together without knowing what to do."
Also normalize that not all kids play the same way or at the same pace. If your son prefers quieter activities while others run around like crazy, that's fine. But do help him find at least one other kid with similar interests. Sometimes friendship starts when two shy kids meet 😊 and stop feeling so alone.