- Add 260124-nextcloud-maintenance.yml playbook for database indices and mimetypes - Add run-maintenance-all-servers.sh script to run maintenance on all servers - Update ansible.cfg with IdentitiesOnly SSH option to prevent auth failures - Remove orphaned SSH keys for deleted servers (black, dev, purple, white, edge) - Remove obsolete edge-traefik and nat-gateway roles - Remove old upgrade playbooks and fix-private-network playbook - Update host_vars for egel, ree, zwaan - Update diun webhook configuration Successfully ran maintenance on all 17 active servers: - Database indices optimized - Mimetypes updated (145-157 new types on most servers) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
151 lines
5.4 KiB
YAML
151 lines
5.4 KiB
YAML
---
|
|
# Nextcloud Maintenance Playbook
|
|
# Created: 2026-01-24
|
|
# Purpose: Run database and file maintenance tasks on Nextcloud instances
|
|
#
|
|
# This playbook performs:
|
|
# 1. Add missing database indices (improves query performance)
|
|
# 2. Update mimetypes database (ensures proper file type handling)
|
|
#
|
|
# Usage:
|
|
# cd ansible/
|
|
# HCLOUD_TOKEN="..." ansible-playbook -i hcloud.yml \
|
|
# playbooks/nextcloud-maintenance.yml --limit <server> \
|
|
# --private-key "../keys/ssh/<server>"
|
|
#
|
|
# To run on all servers:
|
|
# HCLOUD_TOKEN="..." ansible-playbook -i hcloud.yml \
|
|
# playbooks/nextcloud-maintenance.yml \
|
|
# --private-key "../keys/ssh/<server>"
|
|
#
|
|
# Requirements:
|
|
# - HCLOUD_TOKEN environment variable set
|
|
# - SSH access to target server(s)
|
|
# - Nextcloud container must be running
|
|
|
|
- name: Nextcloud Maintenance Tasks
|
|
hosts: all
|
|
become: true
|
|
gather_facts: true
|
|
|
|
vars:
|
|
nextcloud_container: "nextcloud"
|
|
|
|
tasks:
|
|
# ============================================================
|
|
# PRE-CHECK
|
|
# ============================================================
|
|
|
|
- name: Display maintenance plan
|
|
debug:
|
|
msg: |
|
|
============================================================
|
|
Nextcloud Maintenance - {{ inventory_hostname }}
|
|
============================================================
|
|
|
|
This playbook will:
|
|
1. Add missing database indices
|
|
2. Update mimetypes database
|
|
3. Display results
|
|
|
|
Estimated time: 1-3 minutes per server
|
|
============================================================
|
|
|
|
- name: Check if Nextcloud container is running
|
|
shell: docker ps --filter "name=^{{ nextcloud_container }}$" --format "{{ '{{' }}.Names{{ '}}' }}"
|
|
register: nextcloud_running
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Fail if Nextcloud is not running
|
|
fail:
|
|
msg: "Nextcloud container is not running on {{ inventory_hostname }}"
|
|
when: "'nextcloud' not in nextcloud_running.stdout"
|
|
|
|
- name: Get current Nextcloud version
|
|
shell: docker exec -u www-data {{ nextcloud_container }} php occ --version
|
|
register: nextcloud_version
|
|
changed_when: false
|
|
|
|
- name: Display Nextcloud version
|
|
debug:
|
|
msg: "{{ nextcloud_version.stdout }}"
|
|
|
|
# ============================================================
|
|
# TASK 1: ADD MISSING DATABASE INDICES
|
|
# ============================================================
|
|
|
|
- name: Check for missing database indices
|
|
shell: docker exec -u www-data {{ nextcloud_container }} php occ db:add-missing-indices
|
|
register: db_indices_result
|
|
changed_when: "'updated successfully' in db_indices_result.stdout"
|
|
failed_when: db_indices_result.rc != 0
|
|
|
|
- name: Display database indices results
|
|
debug:
|
|
msg: |
|
|
============================================================
|
|
Database Indices Results
|
|
============================================================
|
|
{{ db_indices_result.stdout }}
|
|
============================================================
|
|
|
|
# ============================================================
|
|
# TASK 2: UPDATE MIMETYPES DATABASE
|
|
# ============================================================
|
|
|
|
- name: Update mimetypes database
|
|
shell: docker exec -u www-data {{ nextcloud_container }} php occ maintenance:mimetype:update-db
|
|
register: mimetype_result
|
|
changed_when: "'Added' in mimetype_result.stdout"
|
|
failed_when: mimetype_result.rc != 0
|
|
|
|
- name: Parse mimetype results
|
|
set_fact:
|
|
mimetypes_added: "{{ mimetype_result.stdout | regex_search('Added (\\d+) new mimetypes', '\\1') | default(['0'], true) | first }}"
|
|
|
|
- name: Display mimetype results
|
|
debug:
|
|
msg: |
|
|
============================================================
|
|
Mimetype Update Results
|
|
============================================================
|
|
Mimetypes added: {{ mimetypes_added }}
|
|
{% if mimetypes_added | int > 0 %}
|
|
✓ Mimetype database updated successfully
|
|
{% else %}
|
|
✓ All mimetypes already up to date
|
|
{% endif %}
|
|
============================================================
|
|
|
|
# ============================================================
|
|
# SUMMARY
|
|
# ============================================================
|
|
|
|
- name: Display maintenance summary
|
|
debug:
|
|
msg: |
|
|
============================================================
|
|
✓ MAINTENANCE COMPLETED - {{ inventory_hostname }}
|
|
============================================================
|
|
|
|
Server: {{ inventory_hostname }}
|
|
Version: {{ nextcloud_version.stdout }}
|
|
|
|
Tasks completed:
|
|
{% if db_indices_result.changed %}
|
|
✓ Database indices: Updated
|
|
{% else %}
|
|
✓ Database indices: Already optimized
|
|
{% endif %}
|
|
{% if mimetype_result.changed %}
|
|
✓ Mimetypes: Added {{ mimetypes_added }} new types
|
|
{% else %}
|
|
✓ Mimetypes: Already up to date
|
|
{% endif %}
|
|
|
|
Next steps:
|
|
- Check admin interface for any remaining warnings
|
|
- Warnings may take a few minutes to clear from cache
|
|
|
|
============================================================
|