--- /dev/null
+---
+- name: install dokuwiki packages
+ apt:
+ name:
+ - dokuwiki
+ - php-fpm
+ state: present
+
+- name: install nginx vhost config
+ template:
+ src: nginx.j2
+ dest: "/etc/nginx/sites-available/{{ dokuwiki_urls[0] }}"
+ notify: reload nginx
+
+- name: eanble nginx vhost config
+ file:
+ src: "../sites-available/{{ dokuwiki_urls[0] }}"
+ dest: "/etc/nginx/sites-enabled/{{ dokuwiki_urls[0] }}"
+ state: link
+ notify: reload nginx
+
+- name: check if acme certs already exists
+ stat:
+ path: "/var/lib/acme/live/{{ item }}"
+ with_items: "{{ dokuwiki_urls }}"
+ register: acme_cert_stat
+
+- name: set acmecert_missing_hostnames variable
+ set_fact:
+ acmecert_missing_hostnames: "{{ acme_cert_stat.results | acme_cert_nonexistent(dokuwiki_urls) }}"
+
+- name: link nonexistent hostnames to self-signed interim cert
+ when: acmecert_missing_hostnames | length > 0
+ block:
+ - name: get id of existing selfsigned interim certificate
+ command: cat /var/lib/acme/.selfsigned-interim-cert
+ changed_when: false
+ check_mode: false
+ register: selfsigned_interim_cert_id
+
+ - name: set selfsigned_interim_cert_id variable
+ set_fact:
+ selfsigned_interim_cert_id: "{{ selfsigned_interim_cert_id.stdout }}"
+
+ - name: link to snakeoil cert for nonexistent hostnames
+ file:
+ src: "../certs/{{ selfsigned_interim_cert_id }}"
+ dest: "/var/lib/acme/live/{{ item }}"
+ state: link
+ with_items: "{{ acmecert_missing_hostnames }}"
+
+- name: enable vhost config using acme cert
+ file:
+ src: "../sites-available/{{ dokuwiki_urls[0] }}"
+ dest: "/etc/nginx/sites-enabled/{{ dokuwiki_urls[0] }}"
+ state: link
+
+- name: make sure nginx config has been loaded
+ meta: flush_handlers
+
+- name: get certificate using acmetool
+ import_role:
+ name: acmetool/cert
+ vars:
+ acmetool_cert_name: "{{ dokuwiki_urls[0] }}"
+ acmetool_cert_hostnames: "{{ dokuwiki_urls }}"
--- /dev/null
+server {
+ listen [::]:443 ssl;
+ listen 443 ssl;
+
+ server_name {{ dokuwiki_urls | join(' ') }};
+
+ client_max_body_size 4M;
+ client_body_buffer_size 128k;
+
+ root /usr/share/dokuwiki;
+ index doku.php;
+
+ #Remember to comment the below out when you're installing, and uncomment it when done.
+ location ~ /(conf/|bin/|inc/|install.php) {
+ deny all;
+ }
+
+ #Support for X-Accel-Redirect
+ location ~ ^/data/ {
+ internal;
+ }
+
+ location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ {
+ expires 365d;
+ }
+
+ location / {
+ try_files $uri $uri/ @dokuwiki;
+ }
+
+ location @dokuwiki {
+ # rewrites "doku.php/" out of the URLs if you set the userwrite setting to .htaccess in dokuwiki config page
+ rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
+ rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
+ rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
+ rewrite ^/(.*) /doku.php?id=$1&$args last;
+ }
+
+ location ~ \.php$ {
+ try_files $uri $uri/ /doku.php;
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_param REDIRECT_STATUS 200;
+ fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
+ }
+}
dest: "/etc/nginx/snippets/{{ item | basename | splitext | first }}"
notify: reload nginx
+- name: set server_names_hash_bucket_size to a reasonable value
+ lineinfile:
+ path: /etc/nginx/nginx.conf
+ backrefs: yes
+ regexp: '^(\s*)#?\s*server_names_hash_bucket_size'
+ line: '\1server_names_hash_bucket_size 64;'
+
- name: install default vhost
template:
src: vhosts/default.j2