1 Commits

Author SHA1 Message Date
533dd40722 Upgrade Nextcloud setup to use compose files
- Integrated MariaDB role into Dockerbox configuration
- Moved proxy role to the end to avoid early endpoint activation
- Temporarily disabled select roles for future re-evaluation
- Introduced flush_handlers task for early MariaDB restart
- Moved a few Nextcloud tasks to handlers
- Configured Nextcloud to utilize the host's MariaDB instance
- Enhanced overall code linting quality
2024-04-21 21:45:33 -04:00
5 changed files with 50 additions and 74 deletions

View File

@@ -5,11 +5,8 @@
- host_vars/dockerbox.yml - host_vars/dockerbox.yml
roles: roles:
- base - base
- proxy
- docker - docker
- mariadb - mariadb
- traefik - traefik
- nextcloud - nextcloud
# - jenkins - proxy
# - prometheus
# - nginx

View File

@@ -23,18 +23,17 @@ docker_compose_deploy:
# Traefik # Traefik
- name: traefik - name: traefik
url: https://github.com/krislamo/traefik url: https://github.com/krislamo/traefik
version: e03268af4cf942c47cba66c2112628dbcad1b756 version: d62bd06b37ecf0993962b0449a9d708373f9e381
path: docker-compose.web.yml
enabled: true enabled: true
accept_newhostkey: true accept_newhostkey: true # Consider verifying manually instead
trusted_keys: trusted_keys:
- FBF673CEEC030F8AECA814E73EDA9C3441EDA925 - FBF673CEEC030F8AECA814E73EDA9C3441EDA925
env: env:
ENABLE: true DASHBOARD: true
# Nextcloud # Nextcloud
- name: nextcloud - name: nextcloud
url: https://git.krislamo.org/kris/nextcloud url: https://github.com/krislamo/nextcloud
version: a2e38cec703839211e11dc8347b4cdd62fa6f24d version: 0abc5cc6ba64ed94b7ddc6fd934f0fd62b8a6d11
env: env:
DATA: ./data DATA: ./data
@@ -44,32 +43,6 @@ traefik:
# nextcloud # nextcloud
nextcloud: nextcloud:
DOMAIN: cloud.local.krislamo.org
DB_PASSWD: password DB_PASSWD: password
ADMIN_PASSWD: password ADMIN_PASSWD: password
# nextcloud
#nextcloud_version: stable
#nextcloud_admin: admin
#nextcloud_pass: password
#nextcloud_domain: cloud.local.krislamo.org
#nextcloud_dbversion: latest
#nextcloud_dbpass: password
# jenkins
jenkins_version: lts
jenkins_domain: jenkins.local.krislamo.org
# prometheus (includes grafana)
prom_version: latest
prom_domain: prom.local.krislamo.org
grafana_version: latest
grafana_domain: grafana.local.krislamo.org
prom_targets: "['10.0.2.15:9100']"
# nginx
nginx_domain: nginx.local.krislamo.org
nginx_name: staticsite
nginx_repo_url: https://git.krislamo.org/kris/example-website/
nginx_auth: admin:$apr1$T1l.BCFz$Jyg8msXYEAUi3LLH39I9d1 # admin:admin
nginx_version: latest

View File

@@ -17,6 +17,10 @@
line: "bind-address = {{ ansible_facts.docker0.ipv4.address }}" line: "bind-address = {{ ansible_facts.docker0.ipv4.address }}"
notify: restart_mariadb notify: restart_mariadb
- name: Flush handlers to ensure MariaDB restarts immediately
ansible.builtin.meta: flush_handlers
tags: restart_mariadb
- name: Allow database connections from Docker - name: Allow database connections from Docker
community.general.ufw: community.general.ufw:
rule: allow rule: allow

View File

@@ -0,0 +1,25 @@
- name: Set Nextcloud's Trusted Proxy
ansible.builtin.command: >
docker exec --user www-data "{{ nextcloud_name }}"
php occ config:system:set trusted_proxies 0 --value="{{ traefik_name }}"
register: nextcloud_trusted_proxy
changed_when: "nextcloud_trusted_proxy.stdout == 'System config value trusted_proxies => 0 set to string ' ~ traefik_name"
listen: install_nextcloud
- name: Set Nextcloud's Trusted Domain
ansible.builtin.command: >
docker exec --user www-data "{{ nextcloud_name }}"
php occ config:system:set trusted_domains 0 --value="{{ nextcloud.DOMAIN }}"
register: nextcloud_trusted_domains
changed_when: "nextcloud_trusted_domains.stdout == 'System config value trusted_domains => 0 set to string ' ~ nextcloud.DOMAIN"
listen: install_nextcloud
- name: Preform Nextcloud database maintenance
ansible.builtin.command: >
docker exec --user www-data "{{ nextcloud_name }}" {{ item }}
loop:
- "php occ maintenance:mode --on"
- "php occ db:add-missing-indices"
- "php occ db:convert-filecache-bigint"
- "php occ maintenance:mode --off"
listen: install_nextcloud

View File

@@ -37,44 +37,26 @@
port: 80 port: 80
- name: Check Nextcloud status - name: Check Nextcloud status
ansible.builtin.command: "docker exec --user www-data {{ nextcloud_name }} ansible.builtin.command: >
php occ status" docker exec --user www-data "{{ nextcloud_name }}" php occ status
register: nextcloud_status register: nextcloud_status
changed_when: false changed_when: false
- name: Install Nextcloud - name: Install Nextcloud
ansible.builtin.command: 'docker exec --user www-data {{ nextcloud_name }} ansible.builtin.command: >
php occ maintenance:install docker exec --user www-data {{ nextcloud_name }}
--database "mysql" php occ maintenance:install
--database-host "{{ nextcloud.DB_HOST | default(''host.docker.internal'') }}" --database "mysql"
--database-name "{{ nextcloud.DB_NAME | default(''nextcloud'') }}" --database-host "{{ nextcloud.DB_HOST | default('host.docker.internal') }}"
--database-user "{{ nextcloud.DB_USER | default(''nextcloud'') }}" --database-name "{{ nextcloud.DB_NAME | default('nextcloud') }}"
--database-pass "{{ nextcloud.DB_PASSWD }}" --database-user "{{ nextcloud.DB_USER | default('nextcloud') }}"
--admin-user "{{ nextcloud.ADMIN_USER | default(''admin'') }}" --database-pass "{{ nextcloud.DB_PASSWD }}"
--admin-pass "{{ nextcloud.ADMIN_PASSWD }}"' --admin-user "{{ nextcloud.ADMIN_USER | default('admin') }}"
--admin-pass "{{ nextcloud.ADMIN_PASSWD }}"
register: nextcloud_install register: nextcloud_install
when: nextcloud_status.stderr[:26] == "Nextcloud is not installed" when: nextcloud_status.stderr[:26] == "Nextcloud is not installed"
changed_when: nextcloud_install.stdout == "Nextcloud was successfully installed"
- name: Set Nextcloud's Trusted Proxy notify: install_nextcloud
ansible.builtin.command: 'docker exec --user www-data {{ nextcloud_container }}
php occ config:system:set trusted_proxies 0
--value="{{ traefik_name }}"'
when: nextcloud_install.changed
- name: Set Nextcloud's Trusted Domain
ansible.builtin.command: 'docker exec --user www-data {{ nextcloud_container }}
php occ config:system:set trusted_domains 0
--value="{{ nextcloud_domain }}"'
when: nextcloud_install.changed
- name: Preform Nextcloud database maintenance
ansible.builtin.command: "docker exec --user www-data {{ nextcloud_container }} {{ item }}"
loop:
- "php occ maintenance:mode --on"
- "php occ db:add-missing-indices"
- "php occ db:convert-filecache-bigint"
- "php occ maintenance:mode --off"
when: nextcloud_install.changed
- name: Install Nextcloud background jobs cron - name: Install Nextcloud background jobs cron
ansible.builtin.cron: ansible.builtin.cron:
@@ -82,8 +64,3 @@
minute: "*/5" minute: "*/5"
job: "/usr/bin/docker exec -u www-data nextcloud /usr/local/bin/php -f /var/www/html/cron.php" job: "/usr/bin/docker exec -u www-data nextcloud /usr/local/bin/php -f /var/www/html/cron.php"
user: root user: root
- name: Remove Nextcloud's CAN_INSTALL file
ansible.builtin.file:
path: "{{ nextcloud_root }}/config/CAN_INSTALL"
state: absent