diff --git a/Dockerfile b/Dockerfile
index 471a5af..f00e249 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,10 +1,34 @@
FROM python:3.12-bookworm
+RUN \
+ apt-get update && \
+ apt-get install -y curl && \
+ apt-get autoclean
+
+# Download and install FRP client into /usr/local/bin.
+RUN set -ex; \
+ ARCH=$(uname -m); \
+ if [ "$ARCH" = "aarch64" ]; then \
+ FRP_URL="https://raw.githubusercontent.com/nextcloud/HaRP/main/exapps_dev/frp_0.61.1_linux_arm64.tar.gz"; \
+ else \
+ FRP_URL="https://raw.githubusercontent.com/nextcloud/HaRP/main/exapps_dev/frp_0.61.1_linux_amd64.tar.gz"; \
+ fi; \
+ echo "Downloading FRP client from $FRP_URL"; \
+ curl -L "$FRP_URL" -o /tmp/frp.tar.gz; \
+ tar -C /tmp -xzf /tmp/frp.tar.gz; \
+ mv /tmp/frp_0.61.1_linux_* /tmp/frp; \
+ cp /tmp/frp/frpc /usr/local/bin/frpc; \
+ chmod +x /usr/local/bin/frpc; \
+ rm -rf /tmp/frp /tmp/frp.tar.gz
+
COPY requirements.txt /
+COPY healthcheck.sh /
+COPY --chmod=775 start.sh /
ADD /src/ /app/
RUN \
python3 -m pip install -r requirements.txt && rm -rf ~/.cache && rm requirements.txt
WORKDIR /app
-ENTRYPOINT ["python3", "main.py"]
+ENTRYPOINT ["/start.sh", "python3", "main.py"]
+HEALTHCHECK --interval=5s --timeout=2s --retries=300 CMD /healthcheck.sh
diff --git a/appinfo/info.xml b/appinfo/info.xml
index dd92790..912eb00 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -17,6 +17,7 @@ The bot is capable of answering questions in chat depending on the model set by
Alexander Piskun
Edward Ly
AssistantTalkBot
+ ai
tools
https://raw.githubusercontent.com/nextcloud/talk_bot_ai/main/screenshots/talk_bot_ai.png
https://github.com/nextcloud/talk_bot_ai
diff --git a/healthcheck.sh b/healthcheck.sh
new file mode 100755
index 0000000..e841729
--- /dev/null
+++ b/healthcheck.sh
@@ -0,0 +1,10 @@
+#! /bin/bash
+# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+# SPDX-License-Identifier: AGPL-3.0-or-later
+if [ -f /frpc.toml ] && [ -n "$HP_SHARED_KEY" ]; then
+ if pgrep -x "frpc" > /dev/null; then
+ exit 0
+ else
+ exit 1
+ fi
+fi
diff --git a/requirements.txt b/requirements.txt
index fa5b7ae..ccef928 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1 @@
-nc_py_api[app]>=0.16.0
+nc_py_api[app]>=0.19.2
diff --git a/start.sh b/start.sh
new file mode 100644
index 0000000..82eaeb3
--- /dev/null
+++ b/start.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+set -e
+
+# Only create a config file if HP_SHARED_KEY is set.
+if [ -n "$HP_SHARED_KEY" ]; then
+ echo "HP_SHARED_KEY is set, creating /frpc.toml configuration file..."
+ if [ -d "/certs/frp" ]; then
+ echo "Found /certs/frp directory. Creating configuration with TLS certificates."
+ cat < /frpc.toml
+serverAddr = "$HP_FRP_ADDRESS"
+serverPort = $HP_FRP_PORT
+loginFailExit = false
+
+transport.tls.enable = true
+transport.tls.certFile = "/certs/frp/client.crt"
+transport.tls.keyFile = "/certs/frp/client.key"
+transport.tls.trustedCaFile = "/certs/frp/ca.crt"
+transport.tls.serverName = "harp.nc"
+
+metadatas.token = "$HP_SHARED_KEY"
+
+[[proxies]]
+remotePort = $APP_PORT
+type = "tcp"
+name = "$APP_ID"
+[proxies.plugin]
+type = "unix_domain_socket"
+unixPath = "/tmp/exapp.sock"
+EOF
+ else
+ echo "Directory /certs/frp not found. Creating configuration without TLS certificates."
+ cat < /frpc.toml
+serverAddr = "$HP_FRP_ADDRESS"
+serverPort = $HP_FRP_PORT
+loginFailExit = false
+
+transport.tls.enable = false
+
+metadatas.token = "$HP_SHARED_KEY"
+
+[[proxies]]
+remotePort = $APP_PORT
+type = "tcp"
+name = "$APP_ID"
+[proxies.plugin]
+type = "unix_domain_socket"
+unixPath = "/tmp/exapp.sock"
+EOF
+ fi
+else
+ echo "HP_SHARED_KEY is not set. Skipping FRP configuration."
+fi
+
+# If we have a configuration file and the shared key is present, start the FRP client
+if [ -f /frpc.toml ] && [ -n "$HP_SHARED_KEY" ]; then
+ echo "Starting frpc in the background..."
+ frpc -c /frpc.toml &
+fi
+
+# Start the main application (launch cmd for ExApp is an argument for this script)
+echo "Starting application: $@"
+exec "$@"