You need to make an illusion, which looks really big and far away, but its close enough to render and small enough not to fill the sky. Rendering them in front of your camera means they’ll always be on top of everything, which is obviously not wanted.
Its really the only way you can right now, and it gives you lots more customizability too. This video by Sebastian Lague shows off how he made a sun and moon with orbits similar to real life, making things like moon phases possible. Its a pretty good video if you are interested in it: Trying to Improve My Geography Game with More Real-World Data - YouTube
I figured out what to do. Custom celestial bodies can be done by making a part with a BillboardGui. If the part is updated to be the right distance from the player (1000-4000) every frame, then it will always be rendered while still appearing to be very far away. Then the billboardGui just needs to be large enough with the correct image. This has to be done on the client to work.