diff --git a/ansible/deploy_home.yml b/ansible/deploy_home.yml index a40b77e..d4724b7 100644 --- a/ansible/deploy_home.yml +++ b/ansible/deploy_home.yml @@ -8,6 +8,8 @@ - role: podman # SSL certificates are now handled automatically by Caddy # - role: ssl # REMOVED - Caddy handles all certificate management + - role: ollama + tags: ollama - role: github-actions - role: graylog-config tags: graylog-config diff --git a/ansible/inventories/home/hosts.yml b/ansible/inventories/home/hosts.yml index 51a3845..539b66b 100644 --- a/ansible/inventories/home/hosts.yml +++ b/ansible/inventories/home/hosts.yml @@ -1,5 +1,5 @@ --- all: hosts: - home.bdebyl.net: + home.debyl.io: ansible_user: fedora diff --git a/ansible/roles/ollama/handlers/main.yml b/ansible/roles/ollama/handlers/main.yml new file mode 100644 index 0000000..09cce53 --- /dev/null +++ b/ansible/roles/ollama/handlers/main.yml @@ -0,0 +1,8 @@ +--- +- name: restart ollama + become: true + ansible.builtin.systemd: + name: ollama + state: restarted + daemon_reload: true + tags: ollama diff --git a/ansible/roles/ollama/meta/main.yml b/ansible/roles/ollama/meta/main.yml new file mode 100644 index 0000000..fdda41b --- /dev/null +++ b/ansible/roles/ollama/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - role: common diff --git a/ansible/roles/ollama/tasks/install.yml b/ansible/roles/ollama/tasks/install.yml new file mode 100644 index 0000000..fdf27ef --- /dev/null +++ b/ansible/roles/ollama/tasks/install.yml @@ -0,0 +1,11 @@ +--- +- name: check if ollama is already installed + ansible.builtin.stat: + path: /usr/local/bin/ollama + register: ollama_binary + +- name: install ollama via official install script + become: true + ansible.builtin.shell: | + curl -fsSL https://ollama.com/install.sh | sh + when: not ollama_binary.stat.exists diff --git a/ansible/roles/ollama/tasks/main.yml b/ansible/roles/ollama/tasks/main.yml new file mode 100644 index 0000000..040f736 --- /dev/null +++ b/ansible/roles/ollama/tasks/main.yml @@ -0,0 +1,9 @@ +--- +- import_tasks: install.yml + tags: ollama + +- import_tasks: service.yml + tags: ollama + +- import_tasks: models.yml + tags: ollama diff --git a/ansible/roles/ollama/tasks/models.yml b/ansible/roles/ollama/tasks/models.yml new file mode 100644 index 0000000..ab66e0c --- /dev/null +++ b/ansible/roles/ollama/tasks/models.yml @@ -0,0 +1,10 @@ +--- +- name: pull ollama models + become: true + ansible.builtin.command: ollama pull {{ item }} + loop: "{{ ollama_models }}" + register: result + retries: 3 + delay: 10 + until: result is not failed + changed_when: "'pulling' in result.stderr or 'pulling' in result.stdout" diff --git a/ansible/roles/ollama/tasks/service.yml b/ansible/roles/ollama/tasks/service.yml new file mode 100644 index 0000000..f9aaffc --- /dev/null +++ b/ansible/roles/ollama/tasks/service.yml @@ -0,0 +1,23 @@ +--- +- name: create ollama systemd override directory + become: true + ansible.builtin.file: + path: /etc/systemd/system/ollama.service.d + state: directory + mode: 0755 + +- name: template ollama environment override + become: true + ansible.builtin.template: + src: ollama.env.j2 + dest: /etc/systemd/system/ollama.service.d/override.conf + mode: 0644 + notify: restart ollama + +- name: enable and start ollama service + become: true + ansible.builtin.systemd: + name: ollama + enabled: true + state: started + daemon_reload: true diff --git a/ansible/roles/ollama/templates/ollama.env.j2 b/ansible/roles/ollama/templates/ollama.env.j2 new file mode 100644 index 0000000..29c0919 --- /dev/null +++ b/ansible/roles/ollama/templates/ollama.env.j2 @@ -0,0 +1,4 @@ +[Service] +Environment="OLLAMA_HOST={{ ollama_host }}:{{ ollama_port }}" +Environment="OLLAMA_NUM_PARALLEL=1" +Environment="OLLAMA_MAX_LOADED_MODELS=1" diff --git a/ansible/roles/podman/defaults/main.yml b/ansible/roles/podman/defaults/main.yml index c92d68b..7d2d0fc 100644 --- a/ansible/roles/podman/defaults/main.yml +++ b/ansible/roles/podman/defaults/main.yml @@ -8,6 +8,7 @@ debyltech_path: "{{ podman_volumes }}/debyltech" factorio_path: "{{ podman_volumes }}/factorio" fulfillr_path: "{{ podman_volumes }}/fulfillr" gregtime_path: "{{ podman_volumes }}/gregtime" +searxng_path: "{{ podman_volumes }}/searxng" hass_path: "{{ podman_volumes }}/hass" # nginx_path: removed - nginx no longer used # nosql_path: removed - nosql/redis no longer used @@ -77,7 +78,7 @@ bookstack_server_name: wiki.skudakrennsport.com cloud_server_name: cloud.bdebyl.net cloud_skudak_server_name: cloud.skudakrennsport.com fulfillr_server_name: fulfillr.debyltech.com -home_server_name: home.bdebyl.net +home_server_name: home.debyl.io uptime_kuma_server_name: uptime.debyltech.com uptime_kuma_personal_server_name: uptime.debyl.io parts_server_name: parts.bdebyl.net diff --git a/ansible/roles/podman/tasks/containers/base/awsddns.yml b/ansible/roles/podman/tasks/containers/base/awsddns.yml index ebf4307..146340f 100644 --- a/ansible/roles/podman/tasks/containers/base/awsddns.yml +++ b/ansible/roles/podman/tasks/containers/base/awsddns.yml @@ -4,7 +4,7 @@ container_name: awsddns container_image: "{{ image }}" -- name: create home.bdebyl.net awsddns server container +- name: create home.debyl.io awsddns server container become: true become_user: "{{ podman_user }}" diff: false diff --git a/ansible/roles/podman/tasks/containers/home/searxng.yml b/ansible/roles/podman/tasks/containers/home/searxng.yml new file mode 100644 index 0000000..44d4f9e --- /dev/null +++ b/ansible/roles/podman/tasks/containers/home/searxng.yml @@ -0,0 +1,59 @@ +--- +- name: create searxng host directory volumes + become: true + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ podman_subuid.stdout }}" + group: "{{ podman_user }}" + mode: 0755 + notify: restorecon podman + loop: + - "{{ searxng_path }}/config" + - "{{ searxng_path }}/data" + +- name: template searxng settings + become: true + ansible.builtin.template: + src: searxng/settings.yml.j2 + dest: "{{ searxng_path }}/config/settings.yml" + owner: "{{ podman_subuid.stdout }}" + group: "{{ podman_user }}" + mode: 0644 + +- name: unshare chown the searxng volumes for internal uid 977 + become: true + become_user: "{{ podman_user }}" + changed_when: false + ansible.builtin.shell: | + podman unshare chown -R 977:977 {{ searxng_path }}/config + podman unshare chown -R 977:977 {{ searxng_path }}/data + +- name: flush handlers + ansible.builtin.meta: flush_handlers + +- import_tasks: podman/podman-check.yml + vars: + container_name: searxng + container_image: "{{ image }}" + +- name: create searxng container + become: true + become_user: "{{ podman_user }}" + containers.podman.podman_container: + name: searxng + image: "{{ image }}" + restart_policy: on-failure:3 + log_driver: journald + network: + - host + env: + SEARXNG_BASE_URL: "http://127.0.0.1:8080/" + volumes: + - "{{ searxng_path }}/config:/etc/searxng" + - "{{ searxng_path }}/data:/srv/searxng/data" + +- name: create systemd startup job for searxng + include_tasks: podman/systemd-generate.yml + vars: + container_name: searxng diff --git a/ansible/roles/podman/templates/searxng/settings.yml.j2 b/ansible/roles/podman/templates/searxng/settings.yml.j2 new file mode 100644 index 0000000..25ec26d --- /dev/null +++ b/ansible/roles/podman/templates/searxng/settings.yml.j2 @@ -0,0 +1,35 @@ +use_default_settings: true + +general: + instance_name: "SearXNG" + debug: false + +server: + bind_address: "127.0.0.1" + port: 8080 + secret_key: "{{ searxng_secret_key }}" + limiter: false + image_proxy: false + +search: + safe_search: 0 + formats: + - html + - json + +engines: + - name: duckduckgo + engine: duckduckgo + disabled: false + + - name: google + engine: google + disabled: false + + - name: wikipedia + engine: wikipedia + disabled: false + + - name: bing + engine: bing + disabled: false diff --git a/ansible/roles/podman/templates/zomboid/entrypoint.sh.j2 b/ansible/roles/podman/templates/zomboid/entrypoint.sh.j2 index be78b62..cfc4054 100644 --- a/ansible/roles/podman/templates/zomboid/entrypoint.sh.j2 +++ b/ansible/roles/podman/templates/zomboid/entrypoint.sh.j2 @@ -84,6 +84,6 @@ fi # Start server cd "${INSTALL_DIR}" echo "=== Starting Project Zomboid Server ===" -echo "Connect to: home.bdebyl.net:16261" +echo "Connect to: home.debyl.io:16261" exec su -c "export LD_LIBRARY_PATH=${INSTALL_DIR}/jre64/lib:\${LD_LIBRARY_PATH} && ./start-server.sh ${SERVER_ARGS}" steam diff --git a/ansible/vars/vault.yml b/ansible/vars/vault.yml index 249adeb..e8fd7e6 100644 Binary files a/ansible/vars/vault.yml and b/ansible/vars/vault.yml differ