diff --git a/Dockerfile b/Dockerfile
index 8887025a317234a42cfffa05908133bcb47aa8bb..a1343d7c23c73996ae2f3b8421f56e2582470b98 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -10,6 +10,8 @@ ARG COMMON_BRANCH=master
 ARG COMMON_ID=9855787
 ARG PONOS_BRANCH=master
 ARG PONOS_ID=10017043
+ARG TRANSKRIBUS_BRANCH=master
+ARG TRANSKRIBUS_ID=11180199
 ARG GITLAB_TOKEN="gaFM7LRa9zy9QMowcUhx"
 
 # Install arkindex-common from private repo
@@ -29,6 +31,14 @@ RUN \
   cd /tmp/ponos && pip install --disable-pip-version-check --no-cache-dir --quiet . && \
   rm -rf /tmp/ponos
 
+# Install transkribus-client from private repo
+RUN \
+  mkdir /tmp/transkribus && \
+  wget --header "PRIVATE-TOKEN: $GITLAB_TOKEN" https://gitlab.com/api/v4/projects/$TRANSKRIBUS_ID/repository/archive.tar.gz?sha=$TRANSKRIBUS_BRANCH -O /tmp/transkribus/archive.tar.gz && \
+  tar --strip-components=1 -xvf /tmp/transkribus/archive.tar.gz -C /tmp/transkribus && \
+  cd /tmp/transkribus && pip install --disable-pip-version-check --no-cache-dir --quiet . && \
+  rm -rf /tmp/transkribus
+
 # Install arkindex and its deps
 # Uses a source archive instead of full local copy to speedup docker build
 COPY --from=build /build/dist/arkindex-*.tar.gz /tmp/arkindex.tar.gz
diff --git a/Dockerfile.binary b/Dockerfile.binary
index 1f9fb3ef15d7dfd4afb91a6be5227a113a63c9f6..e05d93a63c07fbc57f1d18de4b8871a6c59b1e18 100644
--- a/Dockerfile.binary
+++ b/Dockerfile.binary
@@ -6,6 +6,8 @@ ARG COMMON_BRANCH=master
 ARG COMMON_ID=9855787
 ARG PONOS_BRANCH=master
 ARG PONOS_ID=10017043
+ARG TRANSKRIBUS_BRANCH=master
+ARG TRANSKRIBUS_ID=11180199
 ARG GITLAB_TOKEN="gaFM7LRa9zy9QMowcUhx"
 
 # We build in /usr/share because Django will try to load some files relative to that path
@@ -29,10 +31,17 @@ RUN mkdir /tmp/ponos && \
   tar --strip-components=1 -xvf /tmp/ponos.tar.gz -C /tmp/ponos && \
   mv /tmp/ponos/ponos /usr/share
 
+# Install transkribus-client from private repo
+RUN \
+  mkdir /tmp/transkribus && \
+  wget --header "PRIVATE-TOKEN: $GITLAB_TOKEN" https://gitlab.com/api/v4/projects/$TRANSKRIBUS_ID/repository/archive.tar.gz?sha=$TRANSKRIBUS_BRANCH -O /tmp/transkribus.tar.gz && \
+  tar --strip-components=1 -xvf /tmp/transkribus.tar.gz -C /tmp/transkribus && \
+  mv /tmp/transkribus/transkribus /usr/share
+
 # Build full requirements, removing relative or remote references to arkindex projects
 # Special case for apistar, where we want to keep our own fork
 # Special case for approximate requirements from ponos, where we want to keep the versions specified from this repo
-RUN cat /tmp/common/requirements.txt /tmp/ponos/requirements-server.txt /tmp/requirements-*arkindex.txt | sort | uniq | grep -v -E '^apistar|arkindex|^#|^Django~=|^boto3~=|^cryptography~=|^django-enumfields~=|^djangorestframework~=|^pyyaml~=' > /requirements.txt
+RUN cat /tmp/common/requirements.txt /tmp/ponos/requirements-server.txt /tmp/requirements-*arkindex.txt | sort | uniq | grep -v -E '^apistar|arkindex|^#|^Django~=|^boto3~=|^cryptography~=|^django-enumfields~=|^djangorestframework~=|^pyyaml~=|transkribus-client' > /requirements.txt
 
 # List all management commands
 RUN find /usr/share/arkindex/*/management -name '*.py' -not -name '__init__.py' > /commands.txt
@@ -50,6 +59,7 @@ RUN python -m nuitka \
       --include-package=arkindex \
       --include-package=arkindex_common \
       --include-package=ponos \
+      --include-package=transkribus \
       --show-progress \
       --python-flag=-OO \
       --lto \