diff --git a/ansible/playbooks/zsh.yml b/ansible/playbooks/zsh.yml
new file mode 100644
index 00000000..0a859bf3
--- /dev/null
+++ b/ansible/playbooks/zsh.yml
@@ -0,0 +1,115 @@
+---
+- name: Configure Zsh, Neofetch, FZF, and custom .zshrc
+  hosts: all
+  become: true
+  vars:
+    zsh_custom: "{{ ansible_env.HOME }}/.oh-my-zsh/custom"
+    user: "{{ ansible_user }}"
+
+  tasks:
+    - name: Install necessary packages
+      apt:
+        name:
+          - zsh
+          - neofetch
+          - fzf
+        state: present
+        update_cache: yes
+
+    - name: Pre-create basic .zshrc
+      copy:
+        dest: "/home/{{ user }}/.zshrc"
+        content: |
+          # Path to your Oh My Zsh installation.
+          export ZSH="$HOME/.oh-my-zsh"
+          export PATH=$PATH:$HOME/.local/bin
+
+          # Set theme
+          ZSH_THEME="robbyrussell"
+
+          # Plugins
+          plugins=(git ubuntu copypath copyfile dirhistory zsh-interactive-cd docker docker-compose opentofu zsh-history-substring-search zsh-autosuggestions zsh-syntax-highlighting you-should-use)
+
+          source $ZSH/oh-my-zsh.sh
+
+          # Set up Oh My Posh
+          eval "$(oh-my-posh init zsh --config https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/sonicboom_dark.omp.json)"
+
+          # Custom aliases
+          alias dcd="docker compose down"
+          alias dcu="docker compose up -d"
+
+          # Display system information
+          neofetch
+        owner: "{{ user }}"
+        mode: '0644'
+
+    - name: Download Oh My Zsh installation script
+      get_url:
+        url: https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
+        dest: /tmp/install_ohmyzsh.sh
+
+    - name: Run Oh My Zsh installation script
+      command: sh /tmp/install_ohmyzsh.sh --unattended
+      register: ohmyzsh_result
+      failed_when: "'FAILED' in ohmyzsh_result.stderr"
+      args:
+        chdir: "/home/{{ user }}"
+      environment:
+        HOME: "/home/{{ user }}"
+        RUNZSH: "no"
+
+    - name: Ensure custom plugins directory exists
+      file:
+        path: "{{ zsh_custom }}/plugins"
+        state: directory
+        owner: "{{ user }}"
+        group: "{{ user }}"
+
+    - name: Clone zsh-syntax-highlighting plugin
+      git:
+        repo: https://github.com/zsh-users/zsh-syntax-highlighting.git
+        dest: "/home/{{ ansible_user }}/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting"
+        update: yes
+
+    - name: Clone zsh-autosuggestions plugin
+      git:
+        repo: https://github.com/zsh-users/zsh-autosuggestions.git
+        dest: "/home/{{ ansible_user }}/.oh-my-zsh/custom/plugins/zsh-autosuggestions"
+        update: yes
+
+    - name: Clone zsh-history-substring-search plugin
+      git:
+        repo: https://github.com/zsh-users/zsh-history-substring-search.git
+        dest: "/home/{{ ansible_user }}/.oh-my-zsh/custom/plugins/zsh-history-substring-search"
+        update: yes
+
+    - name: Clone you-should-use plugin
+      git:
+        repo: https://github.com/MichaelAquilina/zsh-you-should-use.git
+        dest: "/home/{{ ansible_user }}/.oh-my-zsh/custom/plugins/you-should-use"
+        update: yes
+
+    - name: Ensure .local/bin directory exists
+      file:
+        path: "/home/{{ user }}/.local/bin"
+        state: directory
+        owner: "{{ user }}"
+        mode: '0755'
+
+    - name: Download Oh My Posh binary
+      get_url:
+        url: https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64
+        dest: "/home/{{ user }}/.local/bin/oh-my-posh"
+        mode: '0755'
+
+    - name: Ensure ownership of .local/bin/oh-my-posh
+      file:
+        path: "/home/{{ user }}/.local/bin/oh-my-posh"
+        owner: "{{ user }}"
+        mode: '0755'
+
+    - name: Change default shell to Zsh (after setting up .zshrc)
+      user:
+        name: "{{ user }}"
+        shell: /bin/zsh
diff --git a/docker/AI/docker-compose.yml b/docker/AI/docker-compose.yml
index bd899b0d..4eb7b428 100644
--- a/docker/AI/docker-compose.yml
+++ b/docker/AI/docker-compose.yml
@@ -1,10 +1,10 @@
-version: "3.8"
-
 services:
   ollama:
     image: ollama/ollama:0.3.11
     container_name: ollama
     restart: unless-stopped
+    networks:
+      - ai-stack
     volumes:
       - ollama:/root/.ollama
     ports:
@@ -18,9 +18,31 @@ services:
               capabilities: [gpu]
 
   open-webui:
-    image: ghcr.io/open-webui/open-webui:v0.3.22
+    image: ghcr.io/open-webui/open-webui:v0.3.23
     container_name: open-webui
     restart: unless-stopped
+    networks:
+      - ai-stack
+    environment:
+      - ENABLE_RAG_WEB_SEARCH=True
+      - RAG_WEB_SEARCH_ENGINE=searxng
+      - RAG_WEB_SEARCH_RESULT_COUNT=3
+      - RAG_WEB_SEARCH_CONCURRENT_REQUESTS=10
+      - SEARXNG_QUERY_URL=http://searxng:8080/search?q=<query>
+      - OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}
+      - OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}
+      - OPENID_PROVIDER_URL=${OPENID_PROVIDER_URL}
+      - OAUTH_PROVIDER_NAME=${OAUTH_PROVIDER_NAME}
+      - OAUTH_USERNAME_CLAIM=name
+      - OAUTH_EMAIL_CLAIM=email
+      - OAUTH_SCOPES=${OAUTH_SCOPES}
+      - OAUTH_MERGE_ACCOUNTS_BY_EMAIL=True
+      - ENABLE_OAUTH_SIGNUP=True
+      - ENABLE_SIGNUP=True
+      - WEBUI_AUTH=False
+      - ENABLE_LOGIN_FORM=True
+      - ENABLE_IMAGE_GENERATION=True
+      - COMFYUI_BASE_URL=http://stable-diffusion-webui:7860
     ports:
       - 3000:8080
     volumes:
@@ -28,8 +50,156 @@ services:
     extra_hosts:
       - host.docker.internal:host-gateway
 
+  searxng:
+    image: searxng/searxng@sha256:efc99f666dd360bb5f606b401cff5baad6cdbb3095fd061b3eb34e0c1a12e54a
+    container_name: searxng
+    networks:
+      - ai-stack
+    environment:
+      - PUID=${PUID:-1000}
+      - PGID=${PGID:-1000}
+    volumes:
+      - /etc/localtime:/etc/localtime:ro
+      - /etc/timezone:/etc/timezone:ro
+      - /docker/appdata/searxng:/etc/searxng
+    depends_on:
+      - ollama
+      - open-webui
+    restart: unless-stopped
+    ports:
+      - "8081:8080"
+
+  stable-diffusion-download:
+    build: /docker/appdata/stable-diffusion-webui-docker/services/download/
+    image: comfy-download
+    environment:
+      - PUID=${PUID:-1000}
+      - PGID=${PGID:-1000}
+    volumes:
+      - /etc/localtime:/etc/localtime:ro
+      - /etc/timezone:/etc/timezone:ro
+      - /docker/appdata/stable-diffusion-webui-docker/data:/data
+
+  stable-diffusion-webui:
+    build: /docker/appdata/stable-diffusion-webui-docker/services/comfy/
+    image: comfy-ui
+    environment:
+      - PUID=${PUID:-1000}
+      - PGID=${PGID:-1000}
+      - CLI_ARGS=
+    volumes:
+      - /etc/localtime:/etc/localtime:ro
+      - /etc/timezone:/etc/timezone:ro
+      - /docker/appdata/stable-diffusion-webui-docker/data:/data
+      - /docker/appdata/stable-diffusion-webui-docker/output:/output
+    stop_signal: SIGKILL
+    tty: true
+    deploy:
+      resources:
+        reservations:
+          devices:
+            - driver: nvidia
+              device_ids: ['0']
+              capabilities: [compute, utility]
+    restart: unless-stopped
+    networks:
+      - ai-stack
+    ports:
+      - "7860:7860"
+
+  mongo:
+    image: mongo
+    env_file:
+      - .env
+    networks:
+      - ai-stack
+    restart: unless-stopped
+    volumes:
+      - /etc/localtime:/etc/localtime:ro
+      - /etc/timezone:/etc/timezone:ro
+      - /docker/appdata/whisper/db_data:/data/db
+      - /docker/appdata/whisper/db_data/logs/:/var/log/mongodb/
+    environment:
+      - PUID=${PUID:-1000}
+      - PGID=${PGID:-1000}
+      - MONGO_INITDB_ROOT_USERNAME=${DB_USER:-whisper}
+      - MONGO_INITDB_ROOT_PASSWORD=${DB_PASS:-whisper}
+    command: ['--logpath', '/var/log/mongodb/mongod.log']
+    ports:
+      - "27017:27017"
+
+  translate:
+    container_name: whisper-libretranslate
+    image: libretranslate/libretranslate:v1.6.0-cuda
+    env_file:
+      - .env
+    networks:
+      - ai-stack
+    restart: "no"
+    volumes:
+      - /etc/localtime:/etc/localtime:ro
+      - /etc/timezone:/etc/timezone:ro
+      - /docker/appdata/whisper/libretranslate/data:/home/libretranslate/.local/share
+      - /docker/appdata/whisper/libretranslate/cache:/home/libretranslate/.local/cache
+    user: root
+    tty: true
+    environment:
+      - PUID=${PUID:-1000}
+      - PGID=${PGID:-1000}
+      - LT_DISABLE_WEB_UI=True
+      - LT_LOAD_ONLY=${LT_LOAD_ONLY:-en,fr,es}
+      - LT_UPDATE_MODELS=True
+    deploy:
+      resources:
+        reservations:
+          devices:
+          - driver: nvidia
+            count: all
+            capabilities: [gpu]
+    ports:
+      - "5000:5000"
+
+  whisper:
+    container_name: whisper
+    pull_policy: always
+    image: pluja/whishper:v3.1.4-gpu
+    env_file:
+      - .env
+    networks:
+      - ai-stack
+    volumes:
+      - /etc/localtime:/etc/localtime:ro
+      - /etc/timezone:/etc/timezone:ro
+      - /docker/appdata/whisper/uploads:/app/uploads
+      - /docker/appdata/whisper/logs:/var/log/whishper
+      - /docker/appdata/whisper/models:/app/models
+    restart: unless-stopped
+    depends_on:
+      - mongo
+    environment:
+      - PUID=${PUID:-1000}
+      - PGID=${PGID:-1000}
+      - PUBLIC_INTERNAL_API_HOST=http://127.0.0.1:80
+      - PUBLIC_API_HOST=${WHISHPER_HOST:-}
+      - PUBLIC_WHISHPER_PROFILE=gpu
+      - WHISPER_MODELS_DIR=/app/models
+      - UPLOAD_DIR=/app/uploads
+    deploy:
+      resources:
+        reservations:
+          devices:
+          - driver: nvidia
+            count: all
+            capabilities: [gpu]
+    ports:
+      - "8090:80"
+
+networks:
+  ai-stack:
+    external: true
+
 volumes:
   ollama:
     external: true
   open-webui:
-    external: true
+    
diff --git a/docker/arm/docker-compose.yml b/docker/arm/docker-compose.yml
index 39ca4230..6b21b616 100644
--- a/docker/arm/docker-compose.yml
+++ b/docker/arm/docker-compose.yml
@@ -133,7 +133,7 @@ services:
     networks:
       - gitea_main
   n8n:
-    image: ghcr.io/n8n-io/n8n:1.60.0
+    image: ghcr.io/n8n-io/n8n:1.60.1
     container_name: n8n
     ports:
       - 5678:5678
diff --git a/docker/arrs/docker-compose.yml b/docker/arrs/docker-compose.yml
index dbef4789..333594ea 100644
--- a/docker/arrs/docker-compose.yml
+++ b/docker/arrs/docker-compose.yml
@@ -43,7 +43,7 @@ services:
       - PGID=1000
 
   radarr:
-    image: ghcr.io/linuxserver/radarr@sha256:dfbce5095045fc1c15058318342ee590ab50379854b13464dd2ca17b10c4beb4
+    image: ghcr.io/linuxserver/radarr@sha256:df843d96b812d858b94377ffed1918424ece6735038a19e8ff93730277757b65
     container_name: radarr
     ports:
       - "7878:7878"
@@ -105,7 +105,7 @@ services:
 
 
   doplarr:
-    image: ghcr.io/linuxserver/doplarr@sha256:e7a1a285b873622a3d2491612cad93ef2e015401495be96778304b15816547f5
+    image: ghcr.io/linuxserver/doplarr@sha256:553ab1a599797924b7c6aec47becd05a3bbc455197349cac190eec1f2707ade2
     container_name: doplarr
     environment:
       - PUID=1000
diff --git a/docker/netboot/docker-compose.yml b/docker/netboot/docker-compose.yml
index c113ac07..05b3b2bb 100644
--- a/docker/netboot/docker-compose.yml
+++ b/docker/netboot/docker-compose.yml
@@ -1,7 +1,7 @@
 ---
 services:
   netbootxyz:
-    image: ghcr.io/linuxserver/netbootxyz@sha256:16fdc41c85cd9fd3057868e539b9300aaf95f9fc29be1b13bf78334802e0b10f
+    image: ghcr.io/linuxserver/netbootxyz@sha256:ca89a75a79371b041da7c7b9ff75320831212c1e9dcb7957b2f82914f54d9ce9
     container_name: netboot
     environment:
       - PUID=1000
diff --git a/docker/paperless/docker-compose.yml b/docker/paperless/docker-compose.yml
index 06b0cb0e..9c5d432e 100644
--- a/docker/paperless/docker-compose.yml
+++ b/docker/paperless/docker-compose.yml
@@ -27,7 +27,7 @@ services:
       PAPERLESS_TIKA_ENDPOINT: http://tika:9998
 
   gotenberg:
-    image: docker.io/gotenberg/gotenberg:8.7
+    image: docker.io/gotenberg/gotenberg:8.10
     restart: unless-stopped
 
     # The gotenberg chromium route is used to convert .eml files. We do not
diff --git a/docker/portainer/docker-compose.yml b/docker/portainer/docker-compose.yml
index dba8ebf9..f28fc078 100644
--- a/docker/portainer/docker-compose.yml
+++ b/docker/portainer/docker-compose.yml
@@ -12,7 +12,7 @@ services:
     restart: always
 
   vikunja:
-    image: vikunja/vikunja@sha256:c31c7d6cad49038ab8a7d1414845d4c45539b43dd6ddd082bcd148e6fcd7b01c
+    image: vikunja/vikunja@sha256:c400bdcb2ae4a78fccb9b463d01f96d1b2cfaef3484a4dd5c2a26e55eadc2d7a
     environment:
       VIKUNJA_SERVICE_PUBLICURL: $VIKUNJA_SERVICE_PUBLICURL
       VIKUNJA_DATABASE_TYPE: sqlite
diff --git a/packer/ubuntu-jammy/files/.zshrc b/packer/ubuntu-jammy/files/.zshrc
new file mode 100644
index 00000000..4eb8d567
--- /dev/null
+++ b/packer/ubuntu-jammy/files/.zshrc
@@ -0,0 +1,21 @@
+# Path to your Oh My Zsh installation.
+export ZSH="$HOME/.oh-my-zsh"
+export PATH=$PATH:$HOME/.local/bin
+
+# Set theme
+ZSH_THEME="robbyrussell"
+
+# Plugins
+plugins=(git ubuntu copypath copyfile dirhistory zsh-interactive-cd docker docker-compose opentofu zsh-history-substring-search zsh-autosuggestions zsh-syntax-highlighting you-should-use)
+
+source $ZSH/oh-my-zsh.sh
+
+# Set up Oh My Posh
+eval "$(oh-my-posh init zsh --config https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/sonicboom_dark.omp.json)"
+
+# Custom aliases
+alias dcd="docker compose down"
+alias dcu="docker compose up -d"
+
+# Display system information
+neofetch
diff --git a/packer/ubuntu-jammy/ubuntu-jammy.pkr.hcl b/packer/ubuntu-jammy/ubuntu-jammy.pkr.hcl
index ee624ed8..4611b6a2 100644
--- a/packer/ubuntu-jammy/ubuntu-jammy.pkr.hcl
+++ b/packer/ubuntu-jammy/ubuntu-jammy.pkr.hcl
@@ -94,27 +94,38 @@ build {
         ]
     }
 
-    
     provisioner "file" {
         source = "files/pve.cfg"
         destination = "/tmp/pve.cfg"
     }
 
-    
     provisioner "shell" {
         inline = [ "sudo cp /tmp/pve.cfg /etc/cloud/cloud.cfg.d/pve.cfg" ]
     }
 
-    # Install Commonly Used Things - add alias's - set git config
+    # Install commonly used things - add alias's - set git config
     provisioner "shell" {
         inline = [
-            "sudo apt-get install -y ca-certificates curl gnupg lsb-release nfs-common qemu-guest-agent net-tools",
+            "sudo apt-get install -y ca-certificates curl gnupg lsb-release nfs-common qemu-guest-agent net-tools zsh neofetch fzf",
+            "sudo chsh -s $(which zsh) mafyuh",
             "curl -fsSL https://get.docker.com | sudo sh",
-            "echo \"alias dcu='docker compose up -d'\" >> ~/.bashrc",
-            "echo \"alias dcd='docker compose down'\" >> ~/.bashrc",
+            "sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\" --unattended",
+            "git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting",
+            "git clone https://github.com/zsh-users/zsh-autosuggestions.git $${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions",
+            "git clone https://github.com/zsh-users/zsh-history-substring-search.git $${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-history-substring-search",
+            "git clone https://github.com/MichaelAquilina/zsh-you-should-use.git $${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/you-should-use",
+            "mkdir -p /home/mafyuh/.local/bin",
+            "curl -fsSL https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -o /home/mafyuh/.local/bin/oh-my-posh",
+            "sudo chmod +x /home/mafyuh/.local/bin/oh-my-posh",
             "git config --global user.name \"Mafyuh\"",
             "git config --global user.email \"matt@mafyuh.com\"",
             "sudo apt-get -y update"
         ]
     }
-}
\ No newline at end of file
+
+    provisioner "file" {
+        source = "files/.zshrc"
+        destination = "~/.zshrc"
+    }
+
+}
diff --git a/terraform/ubu.tf b/terraform/ubu.tf
index 94549ca2..64172c39 100644
--- a/terraform/ubu.tf
+++ b/terraform/ubu.tf
@@ -64,8 +64,4 @@ resource "proxmox_virtual_environment_vm" "Ubu" {
         ]
     }
 
-}
-
-output "vm_ipv4_address" {
-  value = proxmox_virtual_environment_vm.Ubu.ipv4_addresses[1][0]
 }
\ No newline at end of file