To summary for people who may have similar needs, here is how you can use Panda3D as a render engine for one frame on CPU, server-side without any visible window and which will save the rendering result as an image file:
from panda3d.core import loadPrcFileData
loadPrcFileData("",
"""
load-display p3tinydisplay # to force CPU only rendering (to make it available as an option if everything else fail, use aux-display p3tinydisplay)
window-type offscreen # Spawn an offscreen buffer (use window-type none if you don't need any rendering)
audio-library-name null # Prevent ALSA errors
show-frame-rate-meter 0
sync-video 0
""")
from direct.showbase.ShowBase import ShowBase
base = ShowBase()
base.graphicsEngine.renderFrame()
base.screenshot(namePrefix='screenshot', defaultFilename=1, source=None, imageComment="")
Thank’s to H3LLB0Y for the multi config call, this avoids calling loadPrcFileData() multiple times.
I think this information should be added to the manual, a chapter about how to use Panda3D as a server-side only renderer.