diff --git a/site.yml b/site.yml index b7477b14ffec7847fd2d9a9a9346517b04d721ba..c59279335d15a8cd91943746dff8b0077c7fca31 100644 --- a/site.yml +++ b/site.yml @@ -105,6 +105,12 @@ domain: "verwaltung-jameica.test-warpzone.de", basedir: "/srv/{{servicename}}" } + - { + role: testserver/docker_dokuwiki, tags: [ test_dokuwiki, docker_services ], + servicename: "dokuwiki", + domain: "wiki.test-warpzone.de", + basedir: /srv/dokuwiki, + } ################################################## # Produktive Server diff --git a/testserver/docker_dokuwiki/tasks/main.yml b/testserver/docker_dokuwiki/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..86f845311c1a9c612d46570d87451c089bcf42e9 --- /dev/null +++ b/testserver/docker_dokuwiki/tasks/main.yml @@ -0,0 +1,35 @@ +--- + +- include_tasks: ../functions/get_secret.yml + with_items: + - { path: "{{ basedir }}/secrets/oauth_secret", length: 64} + +- name: create folder struct for dokuwiki + file: + path: "{{item}}" + state: "directory" + with_items: + - "{{ basedir }}" + - "{{ basedir }}/data" + - "{{ basedir }}/pdftemplate" + +- name: Docker Compose Konfig-Datei erstellen + template: + src: "{{item}}" + dest: "{{ basedir }}/{{item}}" + with_items: + - docker-compose.yml + - Dockerfile + - authuffd_vars.php + register: config + +- name: "stop {{ servicename}} docker" + community.docker.docker_compose_v2: + project_src: "{{ basedir }}" + state: absent + when: config.changed + +- name: "start {{ servicename}} docker" + community.docker.docker_compose_v2: + project_src: "{{ basedir }}" + state: present diff --git a/testserver/docker_dokuwiki/templates/Dockerfile b/testserver/docker_dokuwiki/templates/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..c8d7a90f95427f2b7df4928e25e14faccee5f348 --- /dev/null +++ b/testserver/docker_dokuwiki/templates/Dockerfile @@ -0,0 +1,42 @@ +FROM php:8.3.2-apache-bookworm + +# php-gd Modul für dw2pdf Plugin +RUN apt-get update && apt-get install -y \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install -j$(nproc) gd + +# Upload-Limits hoch setzen +RUN touch /usr/local/etc/php/conf.d/uploads.ini \ + && echo "upload_max_filesize = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini \ + && echo "post_max_size = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini + +# Apache mod_rewrite aktivieren +RUN a2enmod rewrite + +# Expose Ports +EXPOSE 80 + +# DokuWiki herunterladen und installieren +RUN apt-get update && apt-get install -y wget unzip git \ + && wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz \ + && tar -xvzf dokuwiki-stable.tgz -C /var/www/html --strip-components=1 \ + && rm dokuwiki-stable.tgz + +# Plugin-Verzeichnis erstellen und das Authentifizierungs-Plugin hinzufügen +RUN mkdir -p /var/www/html/lib/plugins/authuffd \ + && git clone https://git.cccv.de/uffd/dokuwiki-plugin-authuffd.git /var/www/html/lib/plugins/authuffd + +# Konfigurationsdatei für das Plugin anpassen +COPY authuffd_vars.php /var/www/html/lib/plugins/authuffd/conf/default.php + +# DokuWiki Konfiguration anpassen +RUN echo "\$conf['authtype'] = 'authuffd';" >> /var/www/html/conf/local.php + +# Setzen der richtigen Berechtigungen +RUN chown -R www-data:www-data /var/www/html + +# Startup +CMD ["apache2-foreground"] diff --git a/testserver/docker_dokuwiki/templates/authuffd_vars.php b/testserver/docker_dokuwiki/templates/authuffd_vars.php new file mode 100644 index 0000000000000000000000000000000000000000..df9a1fc7ace20d3c0f7018db999979f47a7d28a5 --- /dev/null +++ b/testserver/docker_dokuwiki/templates/authuffd_vars.php @@ -0,0 +1,9 @@ +<?php + +$conf['name'] = 'uffd'; +$conf['baseurl'] = '{{ oidc_global.provider_url }}'; +$conf['oauth2_client_id'] = '{{ servicename }}'; +$conf['oauth2_client_secret'] = '{{ oauth_secret }}'; +$conf['oauth2_redirect_uri'] = '{{ domain }}/dokuwiki/doku.php?id=authredirect'; +#$conf['api_username'] = ''; +#$conf['api_password'] = ''; diff --git a/testserver/docker_dokuwiki/templates/docker-compose.yml b/testserver/docker_dokuwiki/templates/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..e3389c993b24bb52dd2b8e4bee050cda7a0eff6b --- /dev/null +++ b/testserver/docker_dokuwiki/templates/docker-compose.yml @@ -0,0 +1,23 @@ +services: + + app: + # values set in configuration: noreply_email_user - noreply_email_pass - smtp_host - smtp_port + build: . + image: "dokuwiki--{{ ansible_date_time.date }}--{{ ansible_date_time.hour }}-{{ ansible_date_time.minute }}-{{ ansible_date_time.second }}" + restart: always + volumes: + - /srv/dokuwiki/data/:/var/www/html + - /srv/dokuwiki/pdftemplate/:/var/www/html/lib/plugins/dw2pdf/tpl/warpzone/ + labels: + - com.centurylinklabs.watchtower.enable=false + - traefik.enable=true + - traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`) + - traefik.http.routers.{{ servicename }}.entrypoints=websecure + - traefik.http.services.{{ servicename }}.loadbalancer.server.port=80 + networks: + - default + - web + +networks: + web: + external: true