diff --git a/ec2.yml b/ec2.yml index 85de6aa..d5743a0 100644 --- a/ec2.yml +++ b/ec2.yml @@ -31,6 +31,11 @@ redirect_from: "assburgers.club" redirect_to: "www.assburgers.club" redirect_webroot: "/var/www/redirect" + - role: dokuwiki + vars: + dokuwiki_tgz: "https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz" + dokuwiki_url: "wiki.assburgers.club" + dokuwiki_webroot: "/var/www/dokuwiki" - role: nextcloud vars: nextcloud_mysql_password: !vault | diff --git a/roles/dokuwiki/meta/main.yml b/roles/dokuwiki/meta/main.yml new file mode 100644 index 0000000..7e415bc --- /dev/null +++ b/roles/dokuwiki/meta/main.yml @@ -0,0 +1,4 @@ +--- +allow_duplicates: no +dependencies: + - role: apache-php diff --git a/roles/dokuwiki/tasks/main.yml b/roles/dokuwiki/tasks/main.yml new file mode 100644 index 0000000..cdcbe64 --- /dev/null +++ b/roles/dokuwiki/tasks/main.yml @@ -0,0 +1,77 @@ +#!/usr/bin/ansible-playbook +# vim:ft=ansible: +--- +- name: Install, configure, and start Dokuwiki + block: + - name: Set up Apache + block: + - name: Create webroot + file: + path: "{{ dokuwiki_webroot }}" + mode: "0755" + recurse: yes + state: directory + - name: Check for existing installation + stat: + path: "{{ dokuwiki_webroot }}/index.html" + register: stat_webroot_index + - name: Install Dokuwiki + block: + - name: Download Dokuwiki + get_url: + dest: /var/www/dokuwiki.tgz + url: "{{ dokuwiki_tgz }}" + - name: Extract Dokuwiki + unarchive: + src: /var/www/dokuwiki.tgz + remote_src: yes + dest: "{{ dokuwiki_webroot }}" + extra_opts: [--strip-components=1] + - name: Create data directory + file: + path: "/var/dokuwiki" + state: directory + mode: 0700 + owner: www-data + group: www-data + - name: Chown webroot + file: + path: "{{ dokuwiki_webroot }}" + state: directory + recurse: yes + owner: www-data + group: www-data + - name: Cleanup + file: + path: /var/www/dokuwiki.tgz + state: absent + when: not stat_webroot_index.stat.exists + - name: Register certificates + block: + # Note: We copy over some insecure configs now + # Reason being there's no way for the https role to handle every site's + # configuration on its own. If it doesn't have to update the key, it + # won't reload Apache and our site will never actually see https downtime + - name: Configure insecure virtual host configs + template: + src: apache2-vhost.conf + dest: "/etc/apache2/sites-enabled/{{ dokuwiki_url }}.conf" + - name: Generate certificate + include_role: + name: https + vars: + website_url: "{{ dokuwiki_url }}" + website_webroot: "{{ dokuwiki_webroot }}" + - name: Secure Apache + block: + # If we copied over http-only configs before, they get oblooterated now + - name: Copy over virtual host configs + template: + src: apache2-vhost-ssl.conf + dest: "/etc/apache2/sites-enabled/{{ dokuwiki_url }}.conf" + - name: Reload Apache + service: + name: apache2 + state: reloaded + enabled: true + become: yes diff --git a/roles/dokuwiki/templates/apache2-vhost-ssl.conf b/roles/dokuwiki/templates/apache2-vhost-ssl.conf new file mode 100644 index 0000000..0f8936c --- /dev/null +++ b/roles/dokuwiki/templates/apache2-vhost-ssl.conf @@ -0,0 +1,33 @@ +# Configuration for {{ dokuwiki_url }} +# vim:ft=apache: + +# Accept connections from non-SNI clients +SSLStrictSNIVHostCheck off + +# Website configuration + + ServerName {{ dokuwiki_url }} + Redirect permanent / https://{{ dokuwiki_url }} + + + SSLEngine on + SSLCertificateFile /etc/pki/cert/crt/{{ dokuwiki_url }}.crt + SSLCertificateKeyFile /etc/pki/cert/private/{{ dokuwiki_url }}.key + SSLCertificateChainFile /etc/pki/cert/crt/{{ dokuwiki_url}}-fullchain.crt + \ + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + ServerName {{ dokuwiki_url }} + DocumentRoot {{ dokuwiki_webroot }} + + Require all granted + AllowOverride All + Options MultiViews FollowSymlinks + + + Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" + + diff --git a/roles/dokuwiki/templates/apache2-vhost.conf b/roles/dokuwiki/templates/apache2-vhost.conf new file mode 100644 index 0000000..174a5cb --- /dev/null +++ b/roles/dokuwiki/templates/apache2-vhost.conf @@ -0,0 +1,13 @@ +# Configuration for {{ dokuwiki_url }} +# vim:ft=apache: + +# Website configuration + + ServerName {{ dokuwiki_url }} + DocumentRoot {{ dokuwiki_webroot }} + + Require all granted + AllowOverride All + Options MultiViews FollowSymlinks + +