Automated Nextcloud installation
This commit is contained in:
parent
511c26392c
commit
bf9c98fd3f
@ -10,6 +10,7 @@ and services operated by Free I.T. Athens (FRITA).
|
||||
3. Go to
|
||||
- [Traefik Dashboard](https://traefik.local.freeitathens.org:8443/dashboard/#/)
|
||||
- [WordPress](https://www.local.freeitathens.org)
|
||||
- [Nextcloud](https://cloud.local.freeitathens.org)
|
||||
4. Click through the HTTPS security warning
|
||||
|
||||
## Production
|
||||
|
10
Vagrantfile
vendored
10
Vagrantfile
vendored
@ -24,11 +24,19 @@ Vagrant.configure("2") do |config|
|
||||
config.vm.define :frita do |frita| #
|
||||
end
|
||||
|
||||
# Disable Machine Name Prefix
|
||||
# Set libvirt settings
|
||||
config.vm.provider :libvirt do |libvirt|
|
||||
libvirt.cpus = 2
|
||||
libvirt.memory = 4096
|
||||
libvirt.default_prefix = ""
|
||||
end
|
||||
|
||||
# Set VirtualBox settings
|
||||
config.vm.provider "virtualbox" do |vbox|
|
||||
vbox.cpus = 2
|
||||
vbox.memory = 4096
|
||||
end
|
||||
|
||||
# Provision with Ansible
|
||||
config.vm.provision "ansible" do |ansible|
|
||||
ENV['ANSIBLE_ROLES_PATH'] = File.dirname(__FILE__) + "/roles"
|
||||
|
@ -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 }}"
|
||||
|
@ -1,2 +1,2 @@
|
||||
packages:
|
||||
- dnsutils
|
||||
- dnsutils
|
||||
|
@ -5,7 +5,7 @@
|
||||
mode: 0700
|
||||
|
||||
- name: Install useful software
|
||||
apt:
|
||||
ansible.builtin.apt:
|
||||
name: "{{ packages }}"
|
||||
state: present
|
||||
update_cache: true
|
||||
|
@ -1,4 +1,5 @@
|
||||
webserver_root: "{{ docker_compose_root }}/webserver"
|
||||
nextcloud_autoinstall: true
|
||||
mariadb_trust:
|
||||
- "172.16.0.0/12"
|
||||
- "192.168.0.0/16"
|
||||
|
@ -1,11 +1,36 @@
|
||||
- name: Restart MariaDB
|
||||
ansible.builtin.service:
|
||||
name: mariadb
|
||||
state: restarted
|
||||
listen: restart_mariadb
|
||||
|
||||
- name: Compose up on webserver stack
|
||||
ansible.builtin.command: "docker-compose up -d"
|
||||
args:
|
||||
chdir: "{{ webserver_root }}"
|
||||
listen: composeup_webserver
|
||||
|
||||
- name: Restart MariaDB
|
||||
ansible.builtin.service:
|
||||
name: mariadb
|
||||
state: restarted
|
||||
listen: restart_mariadb
|
||||
- name: Grab Nextcloud container information
|
||||
community.docker.docker_container_info:
|
||||
name: "{{ webserver_root | basename }}_nextcloud_1"
|
||||
listen: composeup_webserver
|
||||
register: nextcloud_info
|
||||
|
||||
- name: Wait for Nextcloud to become available
|
||||
ansible.builtin.wait_for:
|
||||
host: "{{ nextcloud_info.container.NetworkSettings.Networks.traefik.IPAddress }}"
|
||||
port: 80
|
||||
listen: composeup_webserver
|
||||
|
||||
- name: Check Nextcloud status
|
||||
ansible.builtin.command: "docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1
|
||||
php occ status"
|
||||
listen: composeup_webserver
|
||||
register: nextcloud_status
|
||||
|
||||
- name: Import Nextcloud installation handlers
|
||||
ansible.builtin.import_tasks: nextcloud.yml
|
||||
listen: composeup_webserver
|
||||
when:
|
||||
- nextcloud_status.stderr[:26] == "Nextcloud is not installed"
|
||||
- nextcloud_autoinstall
|
||||
|
35
roles/webserver/handlers/nextcloud.yml
Normal file
35
roles/webserver/handlers/nextcloud.yml
Normal file
@ -0,0 +1,35 @@
|
||||
- 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: composeup_webserver
|
||||
|
||||
- name: Set Nextcloud's Trusted Domain
|
||||
ansible.builtin.command: 'docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1
|
||||
php occ config:system:set trusted_domains 0
|
||||
--value="{{ webserver.NEXTCLOUD_DOMAIN | default("cloud.local.freeitathens.org") }}"'
|
||||
listen: composeup_webserver
|
||||
when: nextcloud_install.changed
|
||||
|
||||
- name: Set Nextcloud's Trusted Proxy
|
||||
ansible.builtin.command: 'docker exec --user www-data {{ webserver_root | basename }}_nextcloud_1
|
||||
php occ config:system:set trusted_proxies 0 --value="traefik"'
|
||||
listen: composeup_webserver
|
||||
when: nextcloud_install.changed
|
||||
|
||||
- name: Preform Nextcloud database maintenance
|
||||
ansible.builtin.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: composeup_webserver
|
||||
when: "' - needsDbUpgrade: true' in nextcloud_status.stdout_lines"
|
Loading…
Reference in New Issue
Block a user