diff --git a/ansible/playbooks/docker-prune.yml b/ansible/playbooks/docker-prune.yml
new file mode 100644
index 00000000..15b98a70
--- /dev/null
+++ b/ansible/playbooks/docker-prune.yml
@@ -0,0 +1,7 @@
+---
+- name: Prune unused Docker images
+  hosts: all
+  become: true
+  tasks:
+    - name: Prune unused Docker images using shell
+      shell: docker image prune -f
diff --git a/docker/AI/docker-compose.yml b/docker/AI/docker-compose.yml
index 679647c2..55d55f87 100644
--- a/docker/AI/docker-compose.yml
+++ b/docker/AI/docker-compose.yml
@@ -130,7 +130,7 @@ services:
 
   translate:
     container_name: whisper-libretranslate
-    image: libretranslate/libretranslate:v1.6.0-cuda
+    image: libretranslate/libretranslate:v1.6.1-cuda
     env_file:
       - .env
     networks:
diff --git a/docker/arm/docker-compose.yml b/docker/arm/docker-compose.yml
index 6b21b616..1a21c7a1 100644
--- a/docker/arm/docker-compose.yml
+++ b/docker/arm/docker-compose.yml
@@ -161,6 +161,30 @@ services:
     networks:
       gitea_main:
         ipv4_address: 172.25.0.25
+  ## Linkwarden
+  postgres:
+    image: postgres:16-alpine
+    env_file: .env
+    restart: always
+    volumes:
+      - /docker/appdata/linkwarden/pgdata:/var/lib/postgresql/data
+    networks:
+      - gitea_main
+  linkwarden:
+    env_file: .env
+    environment:
+      - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
+    restart: always
+    container_name: linkwarden
+    image: ghcr.io/linkwarden/linkwarden:v2.7.1
+    networks:
+      - gitea_main
+    ports:
+      - 3005:3000
+    volumes:
+      - /docker/appdata/linkwarden/data:/data/data
+    depends_on:
+      - postgres
 
   syncthing:
     image: ghcr.io/linuxserver/syncthing@sha256:f80ba28cd9597b38a8f25ce1c5097aa92bb08d34a684286e759a90edcd5db617