So there are many ways to accomplish the effect.
There are significant efficiency and performance-related considerations relating to freezing a camera and rotating an object. The cost of moving one object (the camera) or two (background and camera) vs moving/rotating many objects, textures, and materials in the foreground. You will have to experiment with which way actually produces the best result vs the performance you need.
To keep a camera still and rotate an object without animation.
In your 3D application parent your object if it’s more than one, to an empty. Then export as Verge3d GLTF.
In your puzzles, you can use a loop puzzle, that uses a Set object rotation puzzle. Create a variable that will increment at the desired speed. Alternatively, you could use a time loop puzzle such as EveryFrame or EverySec. NOTE: These are very expensive and can cause uncontrolled memory leaks if not managed properly. So you will want to put in controls to exit the loop and kill the time loops when done.
The safest method and most efficient method is to parent your background to your camera and then just use the orbit camera. This allows your background to remain fixed and allows the user to control the rotation or you can use the auto-rotate function.