Slavi Pantaleev da398b4ba5 Use config.yml on the server for baibot
Closes https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4039

Partially reverts 30dad8ba277bc32494125b70794e2d0df5ac08ae which renamed
`config.yml` to `config.yaml` in the playbook and on the server, for
consistency with the rest of the playbook.

The problem is that:

- baibot defaults to looking for `config.yml`, not `config.yaml` (as provided).
  This can be worked around by specifying a new `BAIBOT_CONFIG_FILE_PATH=config.yaml`
  environment variable. This brings more complexity.

- renaming the target file (on the server) to `config.yaml` means people
  with an existing installation would drag around the old file (`config.yml`) as well,
  unless we create a new Ansible task (`ansible.builtin.file` with `state: absent`) to remove
  the old file. This brings more complexity as well.

https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4039 adjusts where the file is mounted,
which fixes the immediate problem (baibot not starting), but still means
people will end up with 2 config files for baibot (`config.yml` and `config.yaml`).

This patch, reverts a bit more, so that we still continue to use `config.yml` on the server.
People who have upgraded within the last ~17 hours may end up with 2 files, but it shouldn't be too many of them.
2025-02-07 08:29:14 +02:00

54 lines
2.4 KiB
Django/Jinja

#jinja2: lstrip_blocks: "True"
[Unit]
Description=Matrix baibot bot
{% for service in matrix_bot_baibot_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_bot_baibot_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
DefaultDependencies=no
[Service]
Type=simple
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-bot-baibot 2>/dev/null || true'
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-baibot 2>/dev/null || true'
{#
We mount a tmpfs at /tmp, because the bot may write temporary files there
(see its `src/agent/provider/openai_compat/controller.rs`).
#}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--rm \
--name=matrix-bot-baibot \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--read-only \
--network={{ matrix_bot_baibot_container_network }} \
--env-file={{ matrix_bot_baibot_config_path }}/env \
--mount type=bind,src={{ matrix_bot_baibot_config_path }}/config.yml,dst=/app/config.yml,ro \
--mount type=bind,src={{ matrix_bot_baibot_data_path }},dst=/data \
--tmpfs=/tmp:rw,noexec,nosuid,size=1024m \
{% for arg in matrix_bot_baibot_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_bot_baibot_container_image }}
{% for network in matrix_bot_baibot_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-bot-baibot
{% endfor %}
ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-bot-baibot
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-bot-baibot 2>/dev/null || true'
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-baibot 2>/dev/null || true'
Restart=always
RestartSec=30
SyslogIdentifier=matrix-bot-baibot
[Install]
WantedBy=multi-user.target