diff --git a/dev/vars/webserver.yml b/dev/vars/webserver.yml index 7623e56..3c7f583 100644 --- a/dev/vars/webserver.yml +++ b/dev/vars/webserver.yml @@ -3,9 +3,10 @@ ############### # These are sample public passwords not encrypted in Ansible Vault, unlike production secret: - WORDPRESS_DB_PASSWORD: WPpa55w0rd! - NEXTCLOUD_MYSQL_PASSWORD: NCpa55w0rd! TRAEFIK_DREAMHOST_APIKEY: DHap1pa55w0rd! + WORDPRESS_DB_PASSWORD: WPpa55w0rd! + NEXTCLOUD_MYSQL_PASSWORD: NCdbpa55w0rd! + NEXTCLOUD_ADMIN_PASSWORD: NCadm1npa55w0rd! ############## ### Docker ### @@ -49,9 +50,18 @@ webserver: #WORDPRESS_DB_HOST: host.docker.internal #WORDPRESS_DB_NAME: wordpress #WORDPRESS_DB_USER: wordpress + #WORDPRESS_WEB_ENABLED: true WORDPRESS_DB_PASSWORD: "{{ secret.WORDPRESS_DB_PASSWORD }}" ################# ### Nextcloud ### ################# + #NEXTCLOUD_VERSION: stable + #NEXTCLOUD_DOMAIN: cloud.local.freeitathens.org + #NEXTCLOUD_MYSQL_HOST: host.docker.internal + #NEXTCLOUD_MYSQL_DATABASE: nextcloud + #NEXTCLOUD_MYSQL_USER: nextcloud + #NEXTCLOUD_WEB_ENABLED: true + #NEXTCLOUD_ADMIN: admin + NEXTCLOUD_ADMIN_PASSWORD: "{{ secret.NEXTCLOUD_ADMIN_PASSWORD }}" NEXTCLOUD_MYSQL_PASSWORD: "{{ secret.NEXTCLOUD_MYSQL_PASSWORD }}" diff --git a/roles/webserver/defaults/main.yml b/roles/webserver/defaults/main.yml index a5c7236..0e1d5d1 100644 --- a/roles/webserver/defaults/main.yml +++ b/roles/webserver/defaults/main.yml @@ -1,4 +1,5 @@ webserver_root: "{{ docker_compose_root }}/webserver" +nextcloud_install: true mariadb_trust: - "172.16.0.0/12" - "192.168.0.0/16" diff --git a/roles/webserver/files/docker-compose.yml b/roles/webserver/files/docker-compose.yml index c9e564c..223b6a9 100644 --- a/roles/webserver/files/docker-compose.yml +++ b/roles/webserver/files/docker-compose.yml @@ -84,7 +84,7 @@ services: image: nextcloud:${NEXTCLOUD_VERSION:-stable} restart: always environment: - MYSQL_HOST: ${NEXTCLOUD_MYSQL_HOST:-host.docker.internal:3306} + MYSQL_HOST: ${NEXTCLOUD_MYSQL_HOST:-host.docker.internal} MYSQL_DATABASE: ${NEXTCLOUD_MYSQL_DATABASE-nextcloud} MYSQL_USER: ${NEXTCLOUD_MYSQL_USER:-nextcloud} MYSQL_PASSWORD: ${NEXTCLOUD_MYSQL_PASSWORD} diff --git a/roles/webserver/handlers/main.yml b/roles/webserver/handlers/main.yml index 0b55930..7a3e2c8 100644 --- a/roles/webserver/handlers/main.yml +++ b/roles/webserver/handlers/main.yml @@ -3,6 +3,58 @@ args: chdir: "{{ webserver_root }}" listen: composeup_webserver + notify: install_nextcloud + +- name: Grab Nextcloud container information + docker_container_info: + name: "{{ webserver_root | basename }}_nextcloud_1" + listen: install_nextcloud + register: nextcloud_info + +- name: Check Nextcloud status + ansible.builtin.command: "docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1 + php occ status" + listen: install_nextcloud + register: nextcloud_status + +- name: Install Nextcloud + ansible.builtin.command: 'docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1 + php occ maintenance:install + --database "mysql" + --database-host "{{ webserver.NEXTCLOUD_MYSQL_HOST | default("host.docker.internal") }}" + --database-name "{{ webserver.NEXTCLOUD_MYSQL_DATABASE | default("nextcloud") }}" + --database-user "{{ webserver.NEXTCLOUD_MYSQL_USER | default("nextcloud") }}" + --database-pass "{{ webserver.NEXTCLOUD_MYSQL_PASSWORD }}" + --admin-user "{{ webserver.NEXTCLOUD_ADMIN | default("admin") }}" + --admin-pass "{{ webserver.NEXTCLOUD_ADMIN_PASSWORD }}"' + register: nextcloud_install + listen: install_nextcloud + when: + - nextcloud_status.stdout[:26] == "Nextcloud is not installed" + - nextcloud_install is defined and nextcloud_install + +- name: Set Nextcloud's Trusted Proxy + command: 'docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1 + php occ config:system:set trusted_proxies 0 --value="traefik"' + listen: install_nextcloud + when: nextcloud_install.changed + +- name: Set Nextcloud's Trusted Domain + command: 'docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1 + php occ config:system:set trusted_domains 0 + --value="{{ webserver.NEXTCLOUD_DOMAIN }}"' + listen: install_nextcloud + when: nextcloud_install.changed + +- name: Preform Nextcloud database maintenance + command: "docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1 {{ 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 + when: nextcloud_install.changed - name: Restart MariaDB ansible.builtin.service: