diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1df84dbcfae2962f4259c159be261981bfc71522..6637cca33856c1044e90c620adb8642738862fc0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -207,6 +207,7 @@ api-doc: # Note: the Nix store avoids rebuilding
   artifacts:
     paths:
       - api/frama-c-api.tar.gz
+      - api/frama-c-server-api.tar.gz
     expire_in: 7 days
 
 # Build distribution tarball
diff --git a/nix/api-doc.nix b/nix/api-doc.nix
index d16814551514ad5def3e9b56d4dca0148845e3db..ff41a6fa76adcc4153454d42f5f27fa5b69cc979 100644
--- a/nix/api-doc.nix
+++ b/nix/api-doc.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , frama-c
+, pandoc
 , odoc
 } :
 
@@ -9,27 +10,28 @@ stdenv.mkDerivation rec {
   version = frama-c.version;
   slang = frama-c.slang;
 
-  src = frama-c.src;
-
-  nativeBuildInputs = frama-c.nativeBuildInputs;
+  src = frama-c.build_dir + "/dir.tar";
+  sourceRoot = ".";
 
   buildInputs = frama-c.buildInputs ++ [
+    pandoc
     odoc
   ];
 
-  preConfigure = frama-c.preConfigure;
-
   buildPhase = ''
     dune build -j1 @doc
-
     cp -r _build/default/_doc/_html frama-c-api
-
     echo ".dummy" > excluded
     tar czf frama-c-api.tar.gz -X excluded frama-c-api
+
+    make server-doc NO_BUILD_FRAMAC=yes
+    cp -r doc/server frama-c-server-api
+    tar czf frama-c-server-api.tar.gz frama-c-server-api
   '';
 
   installPhase = ''
     mkdir -p $out
     cp frama-c-api.tar.gz $out
+    cp frama-c-server-api.tar.gz $out
   '';
 }
diff --git a/share/Makefile.serverdoc b/share/Makefile.serverdoc
index 8d438a8fd7439b1430bbce26d97dfc6734e58561..9857ea8f9a53f655d7e98f2439bd2e92ed09e379 100644
--- a/share/Makefile.serverdoc
+++ b/share/Makefile.serverdoc
@@ -28,7 +28,12 @@
 
 .PHONY: server-doc-md server-doc-html server-doc
 
+ifeq (NO_BUILD_FRAMAC,yes)
+# Make sure that Frama-C is not rebuilt essentially for CI purpose
+server-doc-md:
+else
 server-doc-md: all
+endif
 	$(PRINT) 'Generating Markdown server documentation'
 	@rm -fr doc/server
 	@mkdir -p doc/server