diff --git a/ansible/playbooks/zsh.yml b/ansible/playbooks/zsh.yml new file mode 100644 index 0000000..0a859bf --- /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 bd899b0..4eb7b42 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= + - 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 39ca423..6b21b61 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 dbef478..333594e 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 c113ac0..05b3b2b 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 06b0cb0..9c5d432 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 dba8ebf..f28fc07 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 0000000..4eb8d56 --- /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 ee624ed..4611b6a 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 94549ca..64172c3 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