perf(friendica): single-pass patch for DB creds + system.url; align env URL; tidy vars

- Patch local.config.php in one sed exec:
  * hostname, database, username, password
  * system.url via '#' delimiter to avoid URL slash escaping
  * Single notify: docker compose up
- env.j2:
  * FRIENDICA_URL now uses domains|get_url(application_id, WEB_PROTOCOL)
  * Simplify FRIENDICA_DEBUGGING with |lower
  * Normalize spacing for readability
- vars/main.yml:
  * Minor cleanups (comment header, spacing)
  * Consistent friendica_docker_ldap_config path construction

Why: fewer container execs ⇒ faster runs; idempotent key updates; consistent URL configuration across env and PHP config.
Risk: requires WEB_PROTOCOL and domains|get_url to be defined in inventory/vars as elsewhere in the project.

https://chatgpt.com/share/689b92af-b184-800f-9664-2450e00b29d6
This commit is contained in:
Kevin Veen-Birkenbach 2025-08-12 21:15:33 +02:00
parent b62df5599d
commit 94da112736
No known key found for this signature in database
GPG Key ID: 44D8F11FD62F878E
3 changed files with 20 additions and 32 deletions

View File

@ -1,23 +1,11 @@
- name: Update DB host
- name: Patch Friendica local.config.php (DB + system.url) in one pass
command: >
docker exec --user {{ friendica_user }} {{ friendica_container }}
sed -ri "s/('hostname'\s*=>\s*')[^']*(',)/\1{{ database_host }}:{{ database_port }}\2/" {{ friendica_config_file }}
notify: docker compose up
- name: Update DB name
command: >
docker exec --user {{ friendica_user }} {{ friendica_container }}
sed -ri "s/('database'\s*=>\s*')[^']*(',)/\1{{ database_name }}\2/" {{ friendica_config_file }}
notify: docker compose up
- name: Update DB user
command: >
docker exec --user {{ friendica_user }} {{ friendica_container }}
sed -ri "s/('username'\s*=>\s*')[^']*(',)/\1{{ database_username }}\2/" {{ friendica_config_file }}
notify: docker compose up
- name: Update DB password
command: >
docker exec --user {{ friendica_user }} {{ friendica_container }}
sed -ri "s/('password'\s*=>\s*')[^']*(',)/\1{{ database_password }}\2/" {{ friendica_config_file }}
sed -ri
-e "s/('hostname'\s*=>\s*')[^']*(',)/\1{{ database_host }}:{{ database_port }}\2/"
-e "s/('database'\s*=>\s*')[^']*(',)/\1{{ database_name }}\2/"
-e "s/('username'\s*=>\s*')[^']*(',)/\1{{ database_username }}\2/"
-e "s/('password'\s*=>\s*')[^']*(',)/\1{{ database_password }}\2/"
-e "s#('url'\s*=>\s*')[^']*(',)#\1{{ domains | get_url(application_id, WEB_PROTOCOL) }}\2#"
{{ friendica_config_file }}
notify: docker compose up

View File

@ -1,25 +1,25 @@
# The configuration options can be found here:
# @see https://hub.docker.com/_/friendica
FRIENDICA_URL=https://{{domains | get_domain(application_id)}}
FRIENDICA_URL={{ domains | get_url(application_id, WEB_PROTOCOL) }}
HOSTNAME={{domains | get_domain(application_id)}}
FRIENDICA_NO_VALIDATION={{friendica_no_validation | lower}}
# Debugging
FRIENDICA_DEBUGGING={% if enable_debug | bool %}true{% else %}false{% endif %}{{"\n"}}
FRIENDICA_DEBUGGING={{ (enable_debug | bool) | lower }}{{"\n"}}
FRIENDICA_LOGLEVEL={% if enable_debug | bool %}9{% else %}5{% endif %}{{"\n"}}
FRIENDICA_LOGGER=syslog
# Database Configuration
MYSQL_HOST= "{{database_host}}:{{database_port}}"
MYSQL_DATABASE= {{database_name}}
MYSQL_USER= {{database_username}}
MYSQL_PASSWORD= {{database_password}}
MYSQL_HOST= "{{ database_host }}:{{ database_port }}"
MYSQL_DATABASE= {{ database_name }}
MYSQL_USER= {{ database_username }}
MYSQL_PASSWORD= {{ database_password }}
# Email Configuration
SMTP= {{system_email.host}}
SMTP_DOMAIN= {{system_email.domain}}
SMTP_PORT= {{system_email.port}}
SMTP= {{ system_email.host }}
SMTP_DOMAIN= {{ system_email.domain }}
SMTP_PORT= {{ system_email.port }}
SMTP_AUTH_USER= {{ users['no-reply'].email }}
SMTP_AUTH_PASS= {{ users['no-reply'].mailu_token }}
SMTP_TLS= {{ 'on' if system_email.tls else 'off' }}

View File

@ -5,11 +5,11 @@ database_type: "mariadb"
# Docker
docker_compose_flush_handlers: false
# Friendica Specific
# Friendica
friendica_container: "friendica"
friendica_no_validation: "{{ applications | get_app_conf(application_id, 'features.oidc', True) }}" # Email validation is not neccessary if OIDC is active
friendica_application_base: "/var/www/html"
friendica_docker_ldap_config: "{{friendica_application_base}}/config/ldapauth.config.php"
friendica_docker_ldap_config: "{{ friendica_application_base }}/config/ldapauth.config.php"
friendica_host_ldap_config: "{{ docker_compose.directories.volumes }}ldapauth.config.php"
friendica_config_dir: "{{ friendica_application_base }}/config"
friendica_config_file: "{{ friendica_config_dir }}/local.config.php"