I had good results following this tutorial on using tippecanoe to generate compressed prototobufferprotobuffer vector tiles.
I just use Amazon S3 for hosting, but for your application a dedicated server running Nginx with a memory cache in front would work well.
You can certainly generate vector tiles on the fly, but if your data is not dynamic enough it's probably not worth the processing overhead.