feat: add ollama and searxng, migrate to debyl.io hostname
- Add ollama role for local LLM inference (install, service, models) - Add searxng container for private search - Migrate hostname from home.bdebyl.net to home.debyl.io (inventory, awsddns, zomboid entrypoint, home_server_name) - Update vault with new secrets Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,8 @@
|
|||||||
- role: podman
|
- role: podman
|
||||||
# SSL certificates are now handled automatically by Caddy
|
# SSL certificates are now handled automatically by Caddy
|
||||||
# - role: ssl # REMOVED - Caddy handles all certificate management
|
# - role: ssl # REMOVED - Caddy handles all certificate management
|
||||||
|
- role: ollama
|
||||||
|
tags: ollama
|
||||||
- role: github-actions
|
- role: github-actions
|
||||||
- role: graylog-config
|
- role: graylog-config
|
||||||
tags: graylog-config
|
tags: graylog-config
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
all:
|
all:
|
||||||
hosts:
|
hosts:
|
||||||
home.bdebyl.net:
|
home.debyl.io:
|
||||||
ansible_user: fedora
|
ansible_user: fedora
|
||||||
|
|||||||
8
ansible/roles/ollama/handlers/main.yml
Normal file
8
ansible/roles/ollama/handlers/main.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
- name: restart ollama
|
||||||
|
become: true
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: ollama
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
||||||
|
tags: ollama
|
||||||
3
ansible/roles/ollama/meta/main.yml
Normal file
3
ansible/roles/ollama/meta/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
dependencies:
|
||||||
|
- role: common
|
||||||
11
ansible/roles/ollama/tasks/install.yml
Normal file
11
ansible/roles/ollama/tasks/install.yml
Normal file
@@ -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
|
||||||
9
ansible/roles/ollama/tasks/main.yml
Normal file
9
ansible/roles/ollama/tasks/main.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- import_tasks: install.yml
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- import_tasks: service.yml
|
||||||
|
tags: ollama
|
||||||
|
|
||||||
|
- import_tasks: models.yml
|
||||||
|
tags: ollama
|
||||||
10
ansible/roles/ollama/tasks/models.yml
Normal file
10
ansible/roles/ollama/tasks/models.yml
Normal file
@@ -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"
|
||||||
23
ansible/roles/ollama/tasks/service.yml
Normal file
23
ansible/roles/ollama/tasks/service.yml
Normal file
@@ -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
|
||||||
4
ansible/roles/ollama/templates/ollama.env.j2
Normal file
4
ansible/roles/ollama/templates/ollama.env.j2
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[Service]
|
||||||
|
Environment="OLLAMA_HOST={{ ollama_host }}:{{ ollama_port }}"
|
||||||
|
Environment="OLLAMA_NUM_PARALLEL=1"
|
||||||
|
Environment="OLLAMA_MAX_LOADED_MODELS=1"
|
||||||
@@ -8,6 +8,7 @@ debyltech_path: "{{ podman_volumes }}/debyltech"
|
|||||||
factorio_path: "{{ podman_volumes }}/factorio"
|
factorio_path: "{{ podman_volumes }}/factorio"
|
||||||
fulfillr_path: "{{ podman_volumes }}/fulfillr"
|
fulfillr_path: "{{ podman_volumes }}/fulfillr"
|
||||||
gregtime_path: "{{ podman_volumes }}/gregtime"
|
gregtime_path: "{{ podman_volumes }}/gregtime"
|
||||||
|
searxng_path: "{{ podman_volumes }}/searxng"
|
||||||
hass_path: "{{ podman_volumes }}/hass"
|
hass_path: "{{ podman_volumes }}/hass"
|
||||||
# nginx_path: removed - nginx no longer used
|
# nginx_path: removed - nginx no longer used
|
||||||
# nosql_path: removed - nosql/redis 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_server_name: cloud.bdebyl.net
|
||||||
cloud_skudak_server_name: cloud.skudakrennsport.com
|
cloud_skudak_server_name: cloud.skudakrennsport.com
|
||||||
fulfillr_server_name: fulfillr.debyltech.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_server_name: uptime.debyltech.com
|
||||||
uptime_kuma_personal_server_name: uptime.debyl.io
|
uptime_kuma_personal_server_name: uptime.debyl.io
|
||||||
parts_server_name: parts.bdebyl.net
|
parts_server_name: parts.bdebyl.net
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
container_name: awsddns
|
container_name: awsddns
|
||||||
container_image: "{{ image }}"
|
container_image: "{{ image }}"
|
||||||
|
|
||||||
- name: create home.bdebyl.net awsddns server container
|
- name: create home.debyl.io awsddns server container
|
||||||
become: true
|
become: true
|
||||||
become_user: "{{ podman_user }}"
|
become_user: "{{ podman_user }}"
|
||||||
diff: false
|
diff: false
|
||||||
|
|||||||
59
ansible/roles/podman/tasks/containers/home/searxng.yml
Normal file
59
ansible/roles/podman/tasks/containers/home/searxng.yml
Normal file
@@ -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
|
||||||
35
ansible/roles/podman/templates/searxng/settings.yml.j2
Normal file
35
ansible/roles/podman/templates/searxng/settings.yml.j2
Normal file
@@ -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
|
||||||
@@ -84,6 +84,6 @@ fi
|
|||||||
# Start server
|
# Start server
|
||||||
cd "${INSTALL_DIR}"
|
cd "${INSTALL_DIR}"
|
||||||
echo "=== Starting Project Zomboid Server ==="
|
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
|
exec su -c "export LD_LIBRARY_PATH=${INSTALL_DIR}/jre64/lib:\${LD_LIBRARY_PATH} && ./start-server.sh ${SERVER_ARGS}" steam
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user