I spent the last few days installing FastGPT v4.15 (open-source knowledge-base chatbot) on a fresh Linux box with Docker. It mostly works out of the box, but three things will stop you cold:
The MinIO image no longer pulls from Docker Hub.
pull access denied for minio/minio— MinIO pulled their public images. The fix that worked for me: use the same version from FastGPT's own mirror (registry.cn-hangzhou.aliyuncs.com/fastgpt/minio). Slow from outside China, but it works.CSV FAQ import needs a third column.
The header must beq,a,indexes, notq,a, or the import is rejected with a format error.You need an embedding model, not just a chat model.
Without one, you can't even create a knowledge base ("System not embedding model"). DeepSeek alone isn't enough.
Bonus: Docker can bypass your firewall (ufw). Bind FastGPT's ports to 127.0.0.1 and put a reverse proxy in front.
Idle memory on my test box was ~2.1 GB, so 2 GB RAM VPSes won't cut it — plan for 4 GB.
I wrote the whole process up as a step-by-step guide with templates (compose fixes, backup/restore scripts, website widget snippet): https://zhutiandiba.gumroad.com/l/ibgouh
Happy to answer questions here either way.
Top comments (1)
The ufw point is the most important line here and deserves more than a bonus mention. Docker rewrites iptables directly, so a published container port is reachable regardless of what ufw says , the firewall you configured and verified isn't the one being enforced.
That's the argument for default-closed rather than default-open-with-rules. At Krova Cloud a Cube has no inbound address at all; nothing is reachable until you map a port, and each mapping takes an IP allowlist. There's no iptables layer for a container runtime to write past.
Your 2.1 GB idle figure is the useful number , most "runs on a small VPS" guides omit what idle costs. Our 2 vCPU / 4 GB / 40 GB shape is $10.22/mo, which matches your 4 GB recommendation with headroom.
The MinIO registry disappearance is worth its own post.