diff --git a/.docker/Dockerfile b/.docker/Dockerfile
index fae9c39282daf891a787bb3228d40bf5b7740554..031075381e70fe8656e9d9c254f4e9d2993350e9 100644
--- a/.docker/Dockerfile
+++ b/.docker/Dockerfile
@@ -10,6 +10,34 @@ RUN apt-get install -y python3-pip
 RUN apt-get install -y git
 RUN apt-get install -y curl
 
+RUN apt-get install -y build-essential autoconf libtool pkg-config
+RUN git clone --recurse-submodules -b v1.38.1 https://github.com/grpc/grpc
+
+WORKDIR /grpc
+RUN mkdir -p cmake/build
+WORKDIR cmake/build
+RUN cmake -DgRPC_INSTALL=ON \
+      -DgRPC_BUILD_CSHARP_EXT=OFF \
+      -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \
+      -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \
+      -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \
+      -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \
+      -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \
+      -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \
+      -DgRPC_BUILD_TESTS=OFF \
+      ../..
+RUN make -j
+RUN make install
+
+WORKDIR /grpc
+RUN mkdir -p third_party/abseil-cpp/cmake/build
+WORKDIR third_party/abseil-cpp/cmake/build
+RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
+      ../..
+RUN make -j
+RUN make install
+
+WORKDIR /
 COPY doc/requirements.txt doc-requirements.txt
 RUN pip3 install -r doc-requirements.txt
 COPY requirements.txt build-requirements.txt
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4af698e58b93033ea1b684ce78c7a6a165b572f..fb6df3ef3ef0236242ef2069495e0ccddcb3179c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,24 +41,24 @@ conan_basic_setup()
 
 set(PROJECT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
 
-#find_program(iwyu NAMES include-what-you-use iwyu PATHS ${CMAKE_SOURCE_DIR}/tools/include-what-you-use/${iwyu_os}/bin)
-#if(NOT iwyu)
-    #message(STATUS "include-what-you-use: Not found")
-#else()
-    #message(STATUS "include-what-you-use: ${iwyu}")
-    #set(_CMAKE_CXX_INCLUDE_WHAT_YOU_USE ${iwyu})
-#endif()
-
-#find_program(clang_tidy NAMES clang-tidy clang-tidy-11)
-#if(NOT clang_tidy)
-    #message(STATUS "clang-tidy: Not found")
-#else()
-    #message(STATUS "clang-tidy: ${clang_tidy}")
-    #set(_CMAKE_CXX_CLANG_TIDY "${clang_tidy}"
-        #"--header-filter=caosdb/.*[^\(\.pb\.h\)]$"
-        #"--checks=*,-fuchsia-*,-llvm-include-order,-llvmlibc-*"
-        #"--warnings-as-errors=*")
-#endif()
+find_program(iwyu NAMES include-what-you-use iwyu PATHS ${CMAKE_SOURCE_DIR}/tools/include-what-you-use/${iwyu_os}/bin)
+if(NOT iwyu)
+    message(STATUS "include-what-you-use: Not found")
+else()
+    message(STATUS "include-what-you-use: ${iwyu}")
+    set(_CMAKE_CXX_INCLUDE_WHAT_YOU_USE ${iwyu})
+endif()
+
+find_program(clang_tidy NAMES clang-tidy clang-tidy-11)
+if(NOT clang_tidy)
+    message(STATUS "clang-tidy: Not found")
+else()
+    message(STATUS "clang-tidy: ${clang_tidy}")
+    set(_CMAKE_CXX_CLANG_TIDY "${clang_tidy}"
+        "--header-filter=caosdb/.*[^\(\.pb\.h\)]$"
+        "--checks=*,-fuchsia-*,-llvm-include-order,-llvmlibc-*"
+        "--warnings-as-errors=*")
+endif()
 
 add_subdirectory(src)
 add_subdirectory(include)