From ce3646dcf95d5bb19d97c33246b59df57e0dfa12 Mon Sep 17 00:00:00 2001 From: VC Date: Fri, 4 Apr 2025 20:38:30 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=A8:=20move=20phpbb=20to=20app=20dir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventory/host_vars/web2.yml | 11 +++ playbooks/webapps.yml | 8 +- .../vhosts/forum.nintendojo.fr.conf.j2 | 2 +- roles/phpbb/files/dojopeertube.yml | 7 ++ roles/phpbb/files/mastodon.yml | 18 ++++ roles/phpbb/files/ndfr_casual.png | Bin 0 -> 9092 bytes roles/phpbb/tasks/db.yml | 10 +++ roles/phpbb/tasks/main.yml | 27 ++++++ roles/phpbb/tasks/migrate_db.yml | 14 ++++ roles/phpbb/tasks/phpbb.yml | 77 ++++++++++++++++++ roles/phpbb/tasks/phpbb_customs.yml | 27 ++++++ roles/phpbb/tasks/phpbb_exts.yml | 29 +++++++ roles/phpbb/tasks/phpbb_languages.yml | 11 +++ roles/phpbb/tasks/phpbb_styles.yml | 11 +++ roles/phpbb/templates/config.php.j2 | 19 +++++ roles/phpbb/vars/main.yml | 45 ++++++++++ 16 files changed, 313 insertions(+), 3 deletions(-) create mode 100644 roles/phpbb/files/dojopeertube.yml create mode 100644 roles/phpbb/files/mastodon.yml create mode 100644 roles/phpbb/files/ndfr_casual.png create mode 100644 roles/phpbb/tasks/db.yml create mode 100644 roles/phpbb/tasks/main.yml create mode 100644 roles/phpbb/tasks/migrate_db.yml create mode 100644 roles/phpbb/tasks/phpbb.yml create mode 100644 roles/phpbb/tasks/phpbb_customs.yml create mode 100644 roles/phpbb/tasks/phpbb_exts.yml create mode 100644 roles/phpbb/tasks/phpbb_languages.yml create mode 100644 roles/phpbb/tasks/phpbb_styles.yml create mode 100644 roles/phpbb/templates/config.php.j2 create mode 100644 roles/phpbb/vars/main.yml diff --git a/inventory/host_vars/web2.yml b/inventory/host_vars/web2.yml index ea51fd4..50eb2c2 100644 --- a/inventory/host_vars/web2.yml +++ b/inventory/host_vars/web2.yml @@ -6,6 +6,7 @@ web_hostname: - host: www.nintendojo.fr - host: wwwdev.nintendojo.fr - host: forum.nintendojo.fr + type: phpbb - host: nintendojofr.com - host: www.nintendojofr.com type: retrodojo @@ -19,6 +20,16 @@ mariadb_root_pass: !vault | 3437653064323138310a663363373736623931336432376466316666616234356133383263373136 31343534663063663134306464306234366430323762656165653930333134326231 +phpbb_maria_database: "dojo_forum" +phpbb_maria_user: "adm_forum" +phpbb_maria_password: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 65306237643235363962653566336537303632386466646462656234333836396630306438336632 + 3334663566303963646135313265643235623538633463650a663637386436306538616266626232 + 36373332396338326437663832383237623836643137323432323435333231633363386432303830 + 3465306161666563630a356462363561653431303438653935346564343861303962363030323633 + 3632 + wordpress_maria_database: "dojo_wp" wordpress_maria_user: "adm_wp" wordpress_maria_password: !vault | diff --git a/playbooks/webapps.yml b/playbooks/webapps.yml index f5dd7ac..caa79e4 100644 --- a/playbooks/webapps.yml +++ b/playbooks/webapps.yml @@ -23,5 +23,9 @@ hosts: web2 diff: true roles: - - wordpress - - retrodojo + - role: wordpress + tags: [never, wordpress] + - role: phpbb + tags: [never, phpbb] + - role: retrodojo + tags: [never, retrodojo] diff --git a/roles/nginx/templates/vhosts/forum.nintendojo.fr.conf.j2 b/roles/nginx/templates/vhosts/forum.nintendojo.fr.conf.j2 index 33e86e3..ed87cc1 100644 --- a/roles/nginx/templates/vhosts/forum.nintendojo.fr.conf.j2 +++ b/roles/nginx/templates/vhosts/forum.nintendojo.fr.conf.j2 @@ -1,6 +1,6 @@ server { {% include './templates/header.conf.j2' %} - root /srv/http/forum.nintendojo.fr/; + root /var/www/forum.nintendojo.fr/; index index.html index.htm index.php; client_max_body_size 10M; diff --git a/roles/phpbb/files/dojopeertube.yml b/roles/phpbb/files/dojopeertube.yml new file mode 100644 index 0000000..a806b52 --- /dev/null +++ b/roles/phpbb/files/dojopeertube.yml @@ -0,0 +1,7 @@ +--- +name: DojoPeertube +host: p.nintendojo.fr +example: https://p.nintendojo.fr/videos/embed/19bc46e8-7640-4417-86a1-03aa2b439508 +extract: "!//p.nintendojo.fr/videos/embed/(?'id'[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12})!" +iframe: + src: "https://p.nintendojo.fr/videos/embed/{@id}" diff --git a/roles/phpbb/files/mastodon.yml b/roles/phpbb/files/mastodon.yml new file mode 100644 index 0000000..80480c5 --- /dev/null +++ b/roles/phpbb/files/mastodon.yml @@ -0,0 +1,18 @@ +--- +name: "Mastodon" +host: m.nintendojo.fr +example: https://mastodon.social/@HackerNewsBot/100181134752056592 +extract: "!//(?'host'[-.\\w]+)/@(?'name'\\w+)/(?'id'\\d+)!" +oembed: + endpoint: https://m.nintendojo.fr/api/oembed + scheme: https://m.nintendojo.fr/@{@name}/{@id} +scrape: + - extract: "!\"url\":\"https://(?'host'[-.\\w]+)/@(?'name'\\w+)/(?'id'\\d+)\"!" + - match: "!^(?'origin'https://[^/]+)/@\\w+@[-.\\w]+/(?'id'\\d+)!" + - url: "{@origin}/api/v1/statuses/{@id}" +iframe: + data-s9e-livepreview-ignore-attrs: "style" + onload: "let c=new MessageChannel;c.port1.onmessage=e=>this.style.height=e.data+'px';this.contentWindow.postMessage('s9e:init','*',[c.port2])" + width: "550" + height: "300" + src: https://s9e.github.io/iframe/2/mastodon.min.html#@/ diff --git a/roles/phpbb/files/ndfr_casual.png b/roles/phpbb/files/ndfr_casual.png new file mode 100644 index 0000000000000000000000000000000000000000..0f88d90689d08ce7fd4a26bd92f3f69f6b773171 GIT binary patch literal 9092 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 W5vm%!T$w_Kzcg> literal 0 HcmV?d00001 diff --git a/roles/phpbb/tasks/db.yml b/roles/phpbb/tasks/db.yml new file mode 100644 index 0000000..1696762 --- /dev/null +++ b/roles/phpbb/tasks/db.yml @@ -0,0 +1,10 @@ +--- + +- name: Create phpbb db user + community.mysql.mysql_user: + login_unix_socket: "/var/run/mysqld/mysqld.sock" + login_user: root + login_password: "{{ mariadb_root_pass }}" + name: "{{ phpbb_maria_user }}" + password: "{{ phpbb_maria_password }}" + priv: "{{ phpbb_maria_database }}.*:ALL" diff --git a/roles/phpbb/tasks/main.yml b/roles/phpbb/tasks/main.yml new file mode 100644 index 0000000..f4e324e --- /dev/null +++ b/roles/phpbb/tasks/main.yml @@ -0,0 +1,27 @@ +--- + +- name: Init db + ansible.builtin.include_tasks: db.yml + +- name: Install phpbb + ansible.builtin.include_tasks: phpbb.yml + +- name: Install phpbb’s styles + ansible.builtin.include_tasks: phpbb_styles.yml + loop: "{{ phpbb_styles }}" + +- name: Install phpbb’s languages + ansible.builtin.include_tasks: phpbb_languages.yml + loop: "{{ phpbb_languages }}" + +- name: Install phpbb’s extensions + ansible.builtin.include_tasks: phpbb_exts.yml + loop: "{{ phpbb_exts }}" + loop_control: + loop_var: ext + +- name: Custom part + ansible.builtin.include_tasks: phpbb_customs.yml + +- name: Migrate db + ansible.builtin.include_tasks: migrate_db.yml diff --git a/roles/phpbb/tasks/migrate_db.yml b/roles/phpbb/tasks/migrate_db.yml new file mode 100644 index 0000000..3780f5f --- /dev/null +++ b/roles/phpbb/tasks/migrate_db.yml @@ -0,0 +1,14 @@ +--- + +- name: Migrate db + become: true + become_user: www-data + ansible.builtin.command: + cmd: "/usr/bin/php bin/phpbbcli.php db:migrate" + chdir: "{{ phpbb_app_home }}" + changed_when: false + +- name: Remove install directory + ansible.builtin.file: + dest: "{{ phpbb_app_home }}/install" + state: absent diff --git a/roles/phpbb/tasks/phpbb.yml b/roles/phpbb/tasks/phpbb.yml new file mode 100644 index 0000000..f9ad55f --- /dev/null +++ b/roles/phpbb/tasks/phpbb.yml @@ -0,0 +1,77 @@ +--- + +- name: Remove phpbb previous version + ansible.builtin.file: + state: absent + dest: "{{ phpbb_app_home }}" + +## Handle app data +- name: Create app home + ansible.builtin.file: + state: directory + dest: "{{ phpbb_app_home }}" + owner: root + group: www-data + mode: "0o750" + +- name: Install phpbb application + ansible.builtin.unarchive: + remote_src: true + src: "{{ phpbb_url }}" + dest: "{{ phpbb_app_home }}" + owner: root + group: www-data + mode: "a-rwx,u+rwX,g+rX" + extra_opts: ['--strip-components=1'] + exclude: "{{ phpbb_userdata_app_dirs | map('regex_replace', '^^', 'phpBB' ~ phpbb_major_version ~ '/') }}" + +- name: Check writable dirs + ansible.builtin.file: + state: directory + dest: "{{ phpbb_app_home }}/{{ item }}" + owner: www-data + group: www-data + mode: "a-rwx,u+rwX,g+rX" + recurse: true + loop: "{{ phpbb_writable_app_dirs }}" + +## Handle user data +- name: Create data home + ansible.builtin.file: + state: directory + path: "{{ phpbb_data_home }}" + owner: www-data + group: www-data + mode: "a-rwx,u+rwX,g+rX" + +- name: Get data dir + ansible.builtin.stat: + path: "{{ phpbb_data_home }}/{{ phpbb_userdata_app_dirs[0] }}" + register: _phpbb_userdata_dir_stat + +- name: Install phpbb data dir + ansible.builtin.unarchive: + remote_src: true + src: "{{ phpbb_url }}" + dest: "{{ phpbb_data_home }}" + owner: www-data + group: www-data + mode: "a-rwx,u+rwX,g+rX" + extra_opts: ['--strip-components=1'] + include: "{{ phpbb_userdata_app_dirs | map('regex_replace', '^^', 'phpBB' ~ phpbb_major_version ~ '/') }}" + when: not _phpbb_userdata_dir_stat.stat.exists + +- name: Link phpbb userdata dirs + ansible.builtin.file: + state: link + src: "{{ phpbb_data_home }}/{{ item }}" + dest: "{{ phpbb_app_home }}/{{ item }}" + loop: "{{ phpbb_userdata_app_dirs }}" + +- name: Put phpbb config file + ansible.builtin.template: + src: config.php.j2 + dest: "{{ phpbb_app_home }}/config.php" + owner: root + group: www-data + mode: "0o640" diff --git a/roles/phpbb/tasks/phpbb_customs.yml b/roles/phpbb/tasks/phpbb_customs.yml new file mode 100644 index 0000000..13afb9c --- /dev/null +++ b/roles/phpbb/tasks/phpbb_customs.yml @@ -0,0 +1,27 @@ +--- + +- name: Put logo file + ansible.builtin.copy: + src: files/ndfr_casual.png + dest: "{{ phpbb_app_home }}/styles/prosilver/theme/images/ndfr_casual.png" + owner: root + group: www-data + mode: "0o640" + +- name: Replace logo + ansible.builtin.lineinfile: + path: "{{ phpbb_app_home }}/styles/prosilver/theme/colours.css" + search_string: "background-image: url(\"./images/site_logo.svg\");" + line: " background-image: url(\"./images/ndfr_casual.png\");" + +- name: Stretch logo (width) + ansible.builtin.lineinfile: + path: "{{ phpbb_app_home }}/styles/prosilver/theme/common.css" + search_string: "width: 149px;" + line: " width: 200px;" + +- name: Stretch logo (height) + ansible.builtin.lineinfile: + path: "{{ phpbb_app_home }}/styles/prosilver/theme/common.css" + search_string: "height: 52px;" + line: " height: 80px;" diff --git a/roles/phpbb/tasks/phpbb_exts.yml b/roles/phpbb/tasks/phpbb_exts.yml new file mode 100644 index 0000000..3bc65c0 --- /dev/null +++ b/roles/phpbb/tasks/phpbb_exts.yml @@ -0,0 +1,29 @@ +--- + +- name: Create phpbb ext path + ansible.builtin.file: + state: directory + dest: "{{ phpbb_app_home }}/ext/{{ ext.path }}" + owner: root + group: www-data + mode: "0o750" + +- name: Extract phpbb ext + ansible.builtin.unarchive: + remote_src: true + src: "{{ ext.url | replace('%VERSION%', ext.version) }}" + dest: "{{ phpbb_app_home }}/ext/{{ ext.path }}" + owner: root + group: www-data + mode: "a-rwx,u+rwX,g+rX" + extra_opts: ['--strip-components=1'] + +- name: Put extra files + ansible.builtin.copy: + src: "{{ item.src }}" + dest: "{{ phpbb_app_home }}/ext/{{ ext.path }}/{{ item.dest }}" + owner: root + group: www-data + mode: "0o640" + loop: "{{ ext.extra_files }}" + when: ext.extra_files is defined diff --git a/roles/phpbb/tasks/phpbb_languages.yml b/roles/phpbb/tasks/phpbb_languages.yml new file mode 100644 index 0000000..303470a --- /dev/null +++ b/roles/phpbb/tasks/phpbb_languages.yml @@ -0,0 +1,11 @@ +--- + +- name: Extract phpbb language + ansible.builtin.unarchive: + remote_src: true + src: "{{ item.url | replace('%VERSION%', item.version) }}" + dest: "{{ phpbb_app_home }}" + owner: root + group: www-data + mode: "a-rwx,u+rwX,g+rX" + extra_opts: ['--strip-components=1'] diff --git a/roles/phpbb/tasks/phpbb_styles.yml b/roles/phpbb/tasks/phpbb_styles.yml new file mode 100644 index 0000000..e467dce --- /dev/null +++ b/roles/phpbb/tasks/phpbb_styles.yml @@ -0,0 +1,11 @@ +--- + +- name: Extract style + ansible.builtin.unarchive: + remote_src: true + src: "{{ item.url | replace('%VERSION%', item.version) }}" + dest: "{{ phpbb_app_home }}/styles/" + owner: root + group: www-data + mode: "a-rwx,u+rwX,g+rX" + extra_opts: ['--strip-components=1'] diff --git a/roles/phpbb/templates/config.php.j2 b/roles/phpbb/templates/config.php.j2 new file mode 100644 index 0000000..7a74385 --- /dev/null +++ b/roles/phpbb/templates/config.php.j2 @@ -0,0 +1,19 @@ + diff --git a/roles/phpbb/vars/main.yml b/roles/phpbb/vars/main.yml new file mode 100644 index 0000000..115fc3f --- /dev/null +++ b/roles/phpbb/vars/main.yml @@ -0,0 +1,45 @@ +--- + +phpbb_version: "3.3.15" +phpbb_minor_version: "{{ phpbb_version | regex_replace('^([0-9])\\.([0-9]*).*', '\\1.\\2') }}" +phpbb_major_version: "{{ phpbb_version | regex_replace('^([0-9])\\..*', '\\1') }}" + +phpbb_url: "https://download.phpbb.com/pub/release/{{ phpbb_minor_version }}/{{ phpbb_version }}/phpBB-{{ phpbb_version }}.tar.bz2" +phpbb_access_url: "{{ web_hostname | selectattr('type', 'defined') | selectattr('type', '==', 'phpbb') | map(attribute='host') | first }}" + +# Access path +phpbb_app_home: "/var/www/{{ phpbb_access_url }}" +phpbb_data_home: "/srv/www-data/{{ phpbb_access_url }}" + +phpbb_writable_app_dirs: + - cache + - store +phpbb_userdata_app_dirs: + - files + - images + +phpbb_styles: + - name: black + version: 3.3.12 + url: "https://github.com/cabot/black/archive/refs/tags/v%VERSION%.tar.gz" + + +phpbb_languages: + - name: fr + version: 4.15.0 + url: "https://github.com/qiaeru/phpbb-language-fr/archive/refs/tags/v%VERSION%.tar.gz" + +phpbb_exts: + - name: externallink + path: martin/externallinkinnewwindow + version: 1.2.0 + url: "https://github.com/Mar-tin-G/ExternalLinkInNewWindow/archive/refs/tags/%VERSION%.tar.gz" + - name: mediaembed + path: phpbb/mediaembed + version: 2.0.2 + url: "https://github.com/phpbb-extensions/mediaembed/archive/refs/tags/%VERSION%.tar.gz" + extra_files: + - src: files/mastodon.yml + dest: collection/sites/mastodon.yml + - src: files/dojopeertube.yml + dest: collection/sites/dojopeertube.yml -- 2.39.5 From dd89ef99f64f6b098b034dfec69b00dabd9c995f Mon Sep 17 00:00:00 2001 From: VC Date: Fri, 4 Apr 2025 20:50:39 +0200 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=9A=A8:=20fix=20linting=20errors=20on?= =?UTF-8?q?=20web=5Fhostname=5Fblock=20vars?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ansible-lint-ignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .ansible-lint-ignore diff --git a/.ansible-lint-ignore b/.ansible-lint-ignore new file mode 100644 index 0000000..9cc2904 --- /dev/null +++ b/.ansible-lint-ignore @@ -0,0 +1 @@ +roles/nsd/tasks/zones.yml no-tabs -- 2.39.5