Files
n0mad1k 3542913689 LAN/local deployment support, OS compat, Cloudflare Tunnel
- Smart TLS: skip certbot for IPs/.local/.lan, self-signed with SAN,
  HSTS max-age=0 for self-signed certs, split LAN vs public messages
- Dynamic PHP: versionless meta-packages, runtime detection via php_ver fact
- Vaultwarden: fail-fast on armv7l (32-bit ARM not supported upstream)
- Module prompts: accept IPs for matrix/cloud/vault/media, hard error
  on email with IP, all_in_one skips certbot email for LAN
- Matrix: skip matrix. prefix strip for IPs, warn about immutable server_name
- OS family guards: ansible_os_family == Debian on all apt tasks
- SSH key path: expanduser().resolve() on user-provided key paths
- Cloudflare Tunnel: post-deploy script (setup-tunnel.sh) using CF API
  token — no browser auth needed, creates tunnel + credentials + DNS + systemd

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 13:27:12 -04:00

46 lines
1.2 KiB
YAML

---
# Element Web frontend installation
- name: Install nginx (if not already)
apt:
name: nginx
state: present
when: ansible_os_family == "Debian"
- name: Create Element Web directory
file:
path: /var/www/element
state: directory
owner: www-data
group: www-data
mode: "0755"
- name: Download latest Element Web release
shell: |
LATEST=$(curl -s https://api.github.com/repos/element-hq/element-web/releases/latest | grep -oP '"tag_name": "\K[^"]+')
curl -sL "https://github.com/element-hq/element-web/releases/download/${LATEST}/element-${LATEST}.tar.gz" | tar xz -C /var/www/element --strip-components=1
args:
creates: /var/www/element/index.html
- name: Deploy Element Web config
copy:
dest: /var/www/element/config.json
content: |
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://{{ matrix_domain }}",
"server_name": "{{ matrix_server_name }}"
}
},
"brand": "Element",
"integrations_ui_url": "",
"integrations_rest_url": "",
"disable_guests": true,
"disable_3pid_login": false,
"default_theme": "dark"
}
owner: www-data
group: www-data
mode: "0644"