diff --git a/README.md b/README.md index b3192c8..03ef173 100644 --- a/README.md +++ b/README.md @@ -20,26 +20,26 @@ Ansible _tests_ to learn its concepts. * TDD -### 2023-09-24 +### 2023-09-25 * TDD * docker-compose template: split single/multiple command(s) with a test _(await a better solution)_ * Add _some_ documentation * Bugfixes _(founded when running stacks)_ -### 2023-09-23 +### 2023-09-25 * TDD * Bugfixes * Rework on stacks folders organization -### 2023-09-19 +### 2023-09-25 * TDD * Depot reinitialization due to error * Bugfixes after empty vm deployment -### 2023-09-12 +### 2023-09-25 * TDD * Rework, refacto, variabilization @@ -50,13 +50,13 @@ Ansible _tests_ to learn its concepts. * Add middleware option for traefik * Stacks definition: jekyll, registry, ntfy, ipfs -### 2023-09-11 +### 2023-09-25 * TDD * Add stack name override (and defaulting network name to it in this case in docker-compose template) * Stacks definition: promtail, portainer-agent, monitoring-vm, portainer -### 2023-09-10 +### 2023-09-25 * TDD * docker-compose template corrections @@ -64,7 +64,7 @@ Ansible _tests_ to learn its concepts. * Redesign of 'files' folder structure for each stack (conf/datas/template as services subfolders) * Stacks definition: drawio, flame, hastebin -### 2023-09-09 +### 2023-09-25 * TDD * Reorder readme's changelog @@ -74,7 +74,7 @@ Ansible _tests_ to learn its concepts. * Add system services managment * Rename template files -### 2023-09-08 +### 2023-09-25 * TDD * Move Itzg from Orochi task to VM conditionnal stack @@ -84,7 +84,7 @@ Ansible _tests_ to learn its concepts. * Stacks definition: adguardhome, adminer, aptcacherng, dl, homepage, itzg * Add _jinja2.ext.do_ to **jinja2_extensions** in _ansible.cfg_ -### 2023-09-07 +### 2023-09-25 * TDD * Rework using roles @@ -95,7 +95,7 @@ Ansible _tests_ to learn its concepts. * Templating stacks * Stacks definition: dozzle, watchtower -### 2023-09-06 +### 2023-09-25 * TDD * Refinements @@ -103,7 +103,7 @@ Ansible _tests_ to learn its concepts. * Use of Vault * Improve VM base deployment -### 2023-09-05 +### 2023-09-25 * TDD * Rework as concept @@ -112,7 +112,7 @@ Ansible _tests_ to learn its concepts. * Add things to common * Add Itzg Minecraft Server -### 2023-09-01 +### 2023-09-25 * TDD * Depot reinitialization due to corruption diff --git a/ansible.cfg b/ansible.cfg index 29283c9..56520d4 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,4 +1,4 @@ -# 2023-09-19 +# 2023-09-25 [defaults] home = /opt/ansible diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml new file mode 100644 index 0000000..80059a8 --- /dev/null +++ b/inventory/group_vars/all.yml @@ -0,0 +1,18 @@ +$ANSIBLE_VAULT;1.1;AES256 +36383630346233663239303335663439356635393364383133393736313262343761393034316530 +3338383035393135343465626165663262363566623062620a326433313766633137373562383831 +65343339653862356334636535393062613363386231646462663535626536313265616535616561 +6465383836393233320a306632306530366133653331653839393833653861636134326235363561 +66333637633234376138333636343761633832346134343335393233316337616562613730633666 +31626162326133376565353236383562303733326431343937363539656637353531326565346431 +35373366643739353963383533333638343034303732386563386637386335333834373936656561 +39616137613964313838653930353664636432613262303236666239633431333634376361373935 +30386431363066613034383831353865663265386335373662386339336436623835383734323930 +63623464326461613463396137666264333962666462346332663262303064363339663331323938 +34373463323938313834383837393935636261313461653038633764313863643433326337303463 +38366362306161623166353237323337636439333661346139303037353362663565653531353530 +64396136663735383932643464646464396635353036633033343464383830373235323932656163 +30356365306161633233336461643239326465643436336533313534666365633362303437303665 +34656263656233336639356664346435356437333730613565666230333663383139303037636236 +32376563303936343765383332313338333865616539303738326439666632326266316230626130 +31346362386332663934356534616261623538333665383163333638373131326231 diff --git a/inventory/host_vars/all.yml b/inventory/host_vars/all.yml new file mode 100644 index 0000000..054f250 --- /dev/null +++ b/inventory/host_vars/all.yml @@ -0,0 +1,2 @@ +# 2023-09-25 +--- diff --git a/inventory/host_vars/orochi.yml b/inventory/host_vars/orochi.yml new file mode 100644 index 0000000..054f250 --- /dev/null +++ b/inventory/host_vars/orochi.yml @@ -0,0 +1,2 @@ +# 2023-09-25 +--- diff --git a/inventory/zogg.yml b/inventory/zogg.yml new file mode 100644 index 0000000..e44fa19 --- /dev/null +++ b/inventory/zogg.yml @@ -0,0 +1,75 @@ +# 2023-09-25 + +zogg: + + hosts: + + izanagi: + ansible_host: izanagi.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + omoikane: + ansible_host: omoikane.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + raijin: + ansible_host: raijin.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + tenjin: + ansible_host: tenjin.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + inari: + ansible_host: inari.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + uzume: + ansible_host: uzume.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + sarutahiko: + ansible_host: sarutahiko.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + susanoo: + ansible_host: susanoo.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + orochi: + ansible_host: orochi.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" + + suijin: + ansible_host: suijin.home + ansible_connection: ssh + ansible_port: "{{sshport}}" + ansible_ssh_user: "{{sshuser}}" + ansible_ssh_private_key_file: "{{sshkey}}" diff --git a/logs/README.md b/logs/README.md new file mode 100644 index 0000000..44c27f6 --- /dev/null +++ b/logs/README.md @@ -0,0 +1,3 @@ +# Logs + +Show logs from playbooks run. diff --git a/playbook/README.md b/playbook/README.md new file mode 100644 index 0000000..64dba88 --- /dev/null +++ b/playbook/README.md @@ -0,0 +1,3 @@ +# Playbook + +* orochi.yml: base playbook for debug diff --git a/playbook/orochi.yml b/playbook/orochi.yml new file mode 100644 index 0000000..892cf4f --- /dev/null +++ b/playbook/orochi.yml @@ -0,0 +1,45 @@ +# 2023-09-25 +--- + + - name: Orochi + hosts: orochi + + vars: + vm_name: "orochi" # VM name + vm_title: "Orochi" # VM title + vm_ip: "151" # VM IP + # VM specifics stacks + stacks_vm: + #[] + - "{{ adguardhome }}" + - "{{ adminer }}" + - "{{ aptcacherng }}" + - "{{ dl }}" + - "{{ drawio }}" + - "{{ flame }}" + - "{{ hastebin }}" + - "{{ homepage }}" + - "{{ itzg }}" + - "{{ jekyll }}" + - "{{ monitoring_vm }}" + - "{{ portainer_agent }}" + - "{{ portainer }}" + - "{{ promtail }}" + - "{{ registry }}" + - "{{ ntfy }}" + - "{{ ipfs }}" + availables: [] + + roles: + - common # Perform common tacks + - docker # Perform Docker installation + - vm # Perform VM preparation + - stacks # Perform stacks creation (include common & 'stacks_vm') + + tasks: + + # Orochi + - ansible.builtin.include_tasks: orochi/tasks/main.yml + tags: + - tasks + - orochi diff --git a/playbook/orochi/tasks/helloworld.yml b/playbook/orochi/tasks/helloworld.yml new file mode 100644 index 0000000..3254fdb --- /dev/null +++ b/playbook/orochi/tasks/helloworld.yml @@ -0,0 +1,29 @@ +# 2023-09-25 +# Tasks: helloworld +--- + +- ansible.builtin.include_vars: ../vars/helloworld.yml + +- name: Run hello-world + community.docker.docker_container: + cleanup: true + keep_volumes: false + output_logs: true + pull: false + name: hello-world + image: hello-world:latest + hostname: hello-world + auto_remove: false + detach: false + register: container_output + tags: + - tasks + - orochi + - testing + - docker + - container + - helloworld + +- name: Display hello-world output + debug: + msg: "Output:[{{ container_output.container.Output | trim }}]" diff --git a/playbook/orochi/tasks/main.yml b/playbook/orochi/tasks/main.yml new file mode 100644 index 0000000..51add65 --- /dev/null +++ b/playbook/orochi/tasks/main.yml @@ -0,0 +1,15 @@ +# 2023-09-25 +# Tasks: main +--- + +- ansible.builtin.include_vars: ../vars/main.yml + +# Hello World +- ansible.builtin.include_tasks: helloworld.yml + when: + - task_enable_all + - task_enable_helloworld + tags: + - tasks + - testing + - helloworld diff --git a/playbook/orochi/vars/helloworld.yml b/playbook/orochi/vars/helloworld.yml new file mode 100644 index 0000000..17f7606 --- /dev/null +++ b/playbook/orochi/vars/helloworld.yml @@ -0,0 +1,3 @@ +# 2023-09-05 +# Vars: hello-world +--- diff --git a/playbook/orochi/vars/main.yml b/playbook/orochi/vars/main.yml new file mode 100644 index 0000000..b1396d8 --- /dev/null +++ b/playbook/orochi/vars/main.yml @@ -0,0 +1,6 @@ +# 2023-09-25 +# Vars: main +--- + +task_enable_all: false +task_enable_helloworld: false diff --git a/roles/README.md b/roles/README.md new file mode 100644 index 0000000..291732a --- /dev/null +++ b/roles/README.md @@ -0,0 +1,8 @@ +# Roles + +Define common roles for playbook runs. + +* **common**: setup a common base sor linux/debian vm +* **docker**: install & setup a functionnal Docker base +* **stacks**: definitions of my Docker stacks +* **vm**: install & setup common vm's stack functionnalities diff --git a/roles/common/README.md b/roles/common/README.md new file mode 100644 index 0000000..be6a1cd --- /dev/null +++ b/roles/common/README.md @@ -0,0 +1,3 @@ +# Common + +Used to setup a functionnal base linuyx/debian system. diff --git a/roles/common/tasks/aliases.yml b/roles/common/tasks/aliases.yml new file mode 100644 index 0000000..50bbb52 --- /dev/null +++ b/roles/common/tasks/aliases.yml @@ -0,0 +1,41 @@ +# 2023-09-25 +# Tasks: aliases +--- + +- ansible.builtin.include_vars: aliases.yml + +- name: Process bash aliases template + ansible.builtin.template: + backup: true + src: "{{ bash_aliases_template }}" + dest: "{{ bash_aliases_distribution }}" + owner: root + group: root + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + tags: + - template + - system + - bash + - aliases + - add + +- name: Link bash_aliases to bash_bashrc + ansible.builtin.blockinfile: + backup: true + path: "{{ bash_bashrc }}" + block: | + # 2023-09-25 + # Load: bash_aliases + if [ -f {{ bash_aliases_distribution }} ]; then + . {{ bash_aliases_distribution }} + fi + when: + - ansible_facts['system'] == "Linux" + tags: + - template + - system + - bash + - aliases + - link diff --git a/roles/common/tasks/daemons.yml b/roles/common/tasks/daemons.yml new file mode 100644 index 0000000..037e045 --- /dev/null +++ b/roles/common/tasks/daemons.yml @@ -0,0 +1,13 @@ +# 2023-09-25 +# Tasks: daemons +--- + +- name: Reload system daemons + ansible.builtin.systemd: + daemon_reload: true + tags: + - system + - services + - reload + when: + - ansible_facts['system'] == "Linux" diff --git a/roles/common/tasks/directories.yml b/roles/common/tasks/directories.yml new file mode 100644 index 0000000..7fb8ea7 --- /dev/null +++ b/roles/common/tasks/directories.yml @@ -0,0 +1,20 @@ +# 2023-09-25 +# Tasks: directories +--- + +- ansible.builtin.include_vars: directories.yml + +- name: Create extra directories + ansible.builtin.file: + path: "{{ item }}" + owner: root + group: root + state: directory + mode: u=rwx,g=rx,o=rx + with_items: "{{ directories_create }}" + tags: + - system + - directories + - create + when: + - ansible_facts['system'] == "Linux" diff --git a/roles/common/tasks/locales.yml b/roles/common/tasks/locales.yml new file mode 100644 index 0000000..a56ec3d --- /dev/null +++ b/roles/common/tasks/locales.yml @@ -0,0 +1,29 @@ +# 2023-09-25 +# Tasks: locales +--- + +- ansible.builtin.include_vars: locales.yml + +- name: Process default locale template + ansible.builtin.template: + src: "{{ locale_template }}" + dest: "{{ locale_template_distribution }}" + owner: root + group: root + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - locales + - default + +- name: Build locales + ansible.builtin.locale_gen: + name : "{{ item }}" + with_items: "{{ locales_selections }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - locales diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..859e267 --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,135 @@ +# 2023-09-25 +# Tasks: main +--- + +- ansible.builtin.include_vars: main.yml + +# Packages +- ansible.builtin.include_tasks: packages.yml + when: + - task_enable_all + - task_enable_packages + tags: + - tasks + - system + - packages + +# Users +- ansible.builtin.include_tasks: users.yml + when: + - task_enable_all + - task_enable_users + tags: + - tasks + - system + - locales + +# Locales +- ansible.builtin.include_tasks: locales.yml + when: + - task_enable_all + - task_enable_locales + tags: + - tasks + - system + - locales + +# Timezones +- ansible.builtin.include_tasks: timezone.yml + when: + - task_enable_all + - task_enable_timezone + tags: + - tasks + - system + - timezone + +# NTP +- ansible.builtin.include_tasks: ntp.yml + when: + - task_enable_all + - task_enable_ntp + tags: + - tasks + - system + - ntp + +# Aliases +- ansible.builtin.include_tasks: aliases.yml + when: + - task_enable_all + - task_enable_aliases + tags: + - tasks + - system + - aliases + +# Mounts +- ansible.builtin.include_tasks: mounts.yml + when: + - task_enable_all + - task_enable_mounts + tags: + - tasks + - system + - mounts + +# Directories +- ansible.builtin.include_tasks: directories.yml + when: + - task_enable_all + - task_enable_directories + tags: + - tasks + - system + - directories + +# Samba +- ansible.builtin.include_tasks: samba.yml + when: + - task_enable_all + - task_enable_samba + tags: + - tasks + - system + - samba + +# Tuned +- ansible.builtin.include_tasks: tuned.yml + when: + - task_enable_all + - task_enable_tuned + tags: + - tasks + - system + - tuned + +# SystemD +- ansible.builtin.include_tasks: systemd.yml + when: + - task_enable_all + - task_enable_systemd + tags: + - tasks + - system + - systemd + +# Daemons +- ansible.builtin.include_tasks: daemons.yml + when: + - task_enable_all + - task_enable_daemons + tags: + - tasks + - system + - daemons + +# Services +- ansible.builtin.include_tasks: services.yml + when: + - task_enable_all + - task_enable_services + tags: + - tasks + - system + - services diff --git a/roles/common/tasks/mounts.yml b/roles/common/tasks/mounts.yml new file mode 100644 index 0000000..644d535 --- /dev/null +++ b/roles/common/tasks/mounts.yml @@ -0,0 +1,62 @@ +# 2023-09-25 +# Tasks: mounts +--- + +- ansible.builtin.include_vars: mounts.yml + +- name: Create mount directories + ansible.builtin.file: + path: "{{ item }}" + owner: root + group: root + state: directory + mode: u=rwx,g=rwx,o=rwx + with_items: "{{ mounts_create }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - mounts + - create + +- name: Append informations to fstab + ansible.builtin.lineinfile: + backup: true + path: "{{ fstab_path }}" + state: present + line: "# {{ item }}" + with_items: + - "master: {{ common_mastering }}" + - "updated: {{ ansible_date_time.date }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - mounts + - fstab + - append + +- name: Append mount directories to fstab + ansible.builtin.lineinfile: + backup: true + path: "{{ fstab_path }}" + state: present + line: tmpfs {{ item }} tmpfs defaults,noatime 0 0 + with_items: "{{ mounts_fstab_append }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - mounts + - fstab + - append + +- name: Remount all mount + ansible.builtin.shell: | + mount -a + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - mounts + - remount diff --git a/roles/common/tasks/ntp.yml b/roles/common/tasks/ntp.yml new file mode 100644 index 0000000..30a814d --- /dev/null +++ b/roles/common/tasks/ntp.yml @@ -0,0 +1,51 @@ +# 2023-09-25 +# Tasks: ntp +--- + +- ansible.builtin.include_vars: ntp.yml + +- name: Install NTP + ansible.builtin.package: + name: "{{ ntp_package_daemon }}" + state: present + when: + - ansible_facts['system'] == "Linux" + tags: + - apt + - packages + - ntp + - add + +- name: Install tzdata + ansible.builtin.package: + name: "{{ ntp_package_tzdata }}" + state: present + when: + - ansible_facts['system'] == "Linux" + tags: + - apt + - packages + - tzdata + - add + +- name: Populate service facts + service_facts: + +- name: Disable systemd-timesyncd (if it's running but ntp is enabled) + ansible.builtin.service: + name: systemd-timesyncd.service + enabled: false + state: stopped + when: + - ansible_facts['system'] == "Linux" + - ntp_enabled | bool + - '"systemd-timesyncd.service" in services' + - services["systemd-timesyncd.service"]["status"] != "not-found" + +- name: Process ntp template + ansible.builtin.template: + src: "{{ ntp_conf_template }}" + dest: "{{ ntp_conf_distribution }}" + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" diff --git a/roles/common/tasks/packages.yml b/roles/common/tasks/packages.yml new file mode 100644 index 0000000..07d3fbb --- /dev/null +++ b/roles/common/tasks/packages.yml @@ -0,0 +1,79 @@ +# 2023-09-25 +# Tasks: apt +--- + +- ansible.builtin.include_vars: "packages/{{ ansible_facts['os_family'] | lower }}.yml" + +- name: Comment all entries in sources.list + ansible.builtin.replace: + backup: true + path: /etc/apt/sources.list + regexp: '^(.*)$' + replace: '# \1' + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - apt + - sources + - cdrom + +- name: Process packages repositories template + ansible.builtin.template: + backup: true + src: "{{ sources_list_template }}" + dest: "{{ sources_list_distribution }}" + owner: root + group: root + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - system + - packages + - template + - repositories + - debian + +- name: Upgrade packages + ansible.builtin.apt: + state: present + install_recommends: no + update_cache: yes + upgrade: full + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - system + - packages + - add + +- name: Install packages + ansible.builtin.apt: + state: present + install_recommends: no + update_cache: yes + name: "{{ packages_needed }}" + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - system + - packages + - add + +- name: Remove packages + ansible.builtin.apt: + state: absent + autoclean: true + autoremove: true + name: "{{ packages_removed }}" + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - system + - packages + - add diff --git a/roles/common/tasks/samba.yml b/roles/common/tasks/samba.yml new file mode 100644 index 0000000..f676fd0 --- /dev/null +++ b/roles/common/tasks/samba.yml @@ -0,0 +1,21 @@ +# 2023-09-25 +# Tasks: samba +--- + +- ansible.builtin.include_vars: vault/samba.yml +- ansible.builtin.include_vars: samba.yml + +- name: Process smb.conf template + ansible.builtin.template: + backup: true + src: "{{ smb_conf_template }}" + dest: "{{ smb_conf_distribution }}" + owner: root + group: root + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + tags: + - template + - samba + - add diff --git a/roles/common/tasks/services.yml b/roles/common/tasks/services.yml new file mode 100644 index 0000000..afae056 --- /dev/null +++ b/roles/common/tasks/services.yml @@ -0,0 +1,63 @@ +# 2023-09-25 +# Tasks: services +--- + +- ansible.builtin.include_vars: services.yml + +- name: Disable services + ansible.builtin.service: + name: "{{ item }}" + enabled: false + state: "stopped" + with_items: "{{ services_disable }}" + tags: + - system + - services + - disable + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + +- name: Enable services + ansible.builtin.service: + name: "{{ item }}" + enabled: true + state: "started" + with_items: "{{ services_enable }}" + tags: + - system + - services + - enable + - restart + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + +- name: Restart services + ansible.builtin.service: + name: "{{ item }}" + enabled: true + state: "restarted" + with_items: "{{ services_restart }}" + tags: + - system + - services + - enable + - restart + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + +- name: Enable timers + ansible.builtin.service: + name: "{{ item }}" + enabled: true + state: "started" + with_items: "{{ timers_enable }}" + tags: + - system + - timers + - enable + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" diff --git a/roles/common/tasks/systemd.yml b/roles/common/tasks/systemd.yml new file mode 100644 index 0000000..bb1e712 --- /dev/null +++ b/roles/common/tasks/systemd.yml @@ -0,0 +1,44 @@ +# 2023-09-25 +# Tasks: systemd +--- + +- ansible.builtin.include_vars: systemd.yml +- ansible.builtin.include_vars: ../../roles/vm/vars/vault/ports.yml + +- name: Create all systemd required directories + ansible.builtin.file: + path: "{{ item }}" + owner: root + group: root + state: directory + mode: u=rwx,g=rx,o=rx + with_items: + - "{{ systemd_directories }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - systemd + - directories + - create + +- name: "Process systemd templates" + ansible.builtin.template: + lstrip_blocks: true + trim_blocks: true + backup: yes + src: "{{ templates.local }}" + dest: "{{ templates.remote }}" + owner: root + group: root + mode: u=rw,g=r,o=r + with_items: + - "{{ systemd_templates }}" + loop_control: + loop_var: templates + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - services + - systemd diff --git a/roles/common/tasks/timezone.yml b/roles/common/tasks/timezone.yml new file mode 100644 index 0000000..9adbe9c --- /dev/null +++ b/roles/common/tasks/timezone.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Tasks: timezone +--- + +- ansible.builtin.include_vars: timezone.yml + +- name: Define timezone + ansible.builtin.timezone: + name: "{{ timezone }}" + when: + - ansible_facts['system'] == "Linux" diff --git a/roles/common/tasks/tuned.yml b/roles/common/tasks/tuned.yml new file mode 100644 index 0000000..6fbf134 --- /dev/null +++ b/roles/common/tasks/tuned.yml @@ -0,0 +1,28 @@ +# 2023-09-25 +# Tasks: tuned +--- + +- ansible.builtin.include_vars: tuned.yml + +- name: Install tuned + ansible.builtin.apt: + name: "{{ packages_needed }}" + install_recommends: false + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - apt + - packages + - add + +- name: Select tuned profile + command: tuned-adm profile virtual-guest + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - system + - service + - tuned + - profile diff --git a/roles/common/tasks/users.yml b/roles/common/tasks/users.yml new file mode 100644 index 0000000..54d17ec --- /dev/null +++ b/roles/common/tasks/users.yml @@ -0,0 +1,19 @@ +# 2023-09-25 +# Tasks: users +--- + +- name: Create new users + ansible.builtin.user: + append: yes + name: "{{ item.name }}" + group: "{{ item.name }}" + shell: "{{ item.shell }}" + groups: "{{ item.groups }}" + with_items: + - "{{ users }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - users + - create diff --git a/roles/common/templates/bash_aliases.j2 b/roles/common/templates/bash_aliases.j2 new file mode 100644 index 0000000..28608f3 --- /dev/null +++ b/roles/common/templates/bash_aliases.j2 @@ -0,0 +1,389 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +# ----------------------------------------------------------------------------- +# BASH TWEAKS +# ----------------------------------------------------------------------------- + + +# ------------------------------ +# HISTORY +# ------------------------------ + +# Line wrap on window resize +shopt -s checkwinsize + +# Enable history +set -o history + +# Combine multiline commands into one in history +shopt -s cmdhist + +# Disable completion when the input buffer is empty. i.e. Hitting tab +# and waiting a long time for bash to expand all of $PATH. +shopt -s no_empty_cmd_completion + +# Shorter history +export HISTCONTROL=ignoredups +export HISTIGNORE='&:ls:[bf]g:exit' + +# big history +export HISTFILESIZE=20000 +export HISTSIZE=10000 +shopt -s histappend + +# History completion +bind "'\e[A': history-search-backward" +bind "'\e[B': history-search-forward" + + +# ------------------------------ +# COMPLETION +# ------------------------------ + +# Autocomplétion +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +# bash completion +[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion +bind 'set completion-ignore-case on' # note: bind used instead of sticking these in .inputrc +bind 'set bell-style none' # no bell +bind 'set show-all-if-ambiguous On' # show list automatically, without double tab + + +# ------------------------------ +# COLORS +# ------------------------------ + +# colors & char +# text normal colors +red='\e[0;31m' +blue='\e[0;34m' +cyan='\e[0;36m' +green='\e[0;32m' +yellow='\e[0;33m' +# text bright colors +bred='\e[0;91m' +bblue='\e[0;94m' +bcyan='\e[0;96m' +bgreen='\e[0;92m' +byellow='\e[0;93m' +bwhite='\e[0;97m' +# reset color +NC='\e[0m' + +# Set colorful PS1 only on colorful terminals. +# dircolors --print-database uses its own built-in database +# instead of using /etc/DIR_COLORS. Try to use the external file +# first to take advantage of user additions. +# We run dircolors directly due to its changes in file syntax and +# terminal name patching. +use_color=false +if type -P dircolors >/dev/null ; then + # Enable colors for ls, etc. Prefer ~/.dir_colors #64489 + LS_COLORS= + if [[ -f ~/.dir_colors ]] ; then + eval "$(dircolors -b ~/.dir_colors)" + elif [[ -f /etc/DIR_COLORS ]] ; then + eval "$(dircolors -b /etc/DIR_COLORS)" + else + eval "$(dircolors -b)" + fi + # Note: We always evaluate the LS_COLORS setting even when it's the + # default. If it isn't set, then `ls` will only colorize by default + # based on file attributes and ignore extensions (even the compiled + # in defaults of dircolors). #583814 + if [[ -n ${LS_COLORS:+set} ]] ; then + use_color=true + else + # Delete it if it's empty as it's useless in that case. + unset LS_COLORS + fi +else + # Some systems (e.g. BSD & embedded) don't typically come with + # dircolors so we need to hardcode some terminals in here. + case ${TERM} in + [aEkx]term*|rxvt*|gnome*|konsole*|screen|cons25|*color) use_color=true;; + esac +fi + +if ${use_color} ; then + if [[ ${EUID} == 0 ]] ; then + PS1+='\[\033[01;31m\]\h\[\033[01;34m\] \w \$\[\033[00m\] ' + else + PS1+='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] ' + fi + + #BSD#@export CLICOLOR=1 + #GNU#@alias ls='ls --color=auto' + alias grep='grep --colour=auto' + alias egrep='egrep --colour=auto' + alias fgrep='fgrep --colour=auto' +else + # show root@ when we don't have colors + PS1+='\u@\h \w \$ ' +fi + +for sh in /etc/bash/bashrc.d/* ; do + [[ -r ${sh} ]] && source '${sh}' +done + +# Try to keep environment pollution down, EPA loves us. +unset use_color sh + + +# ------------------------------ +# PROMPT +# ------------------------------ + +# Prompt +PS1='[\u@\h \W]\$ ' +case ${TERM} in + xterm*|rxvt*|Eterm|aterm|kterm|gnome*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }"printf '\033]0;%s@%s:%s\007' '${USER}' '${HOSTNAME%%.*}' '${PWD/#$HOME/\~}'" + + ;; + screen*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }"printf '\033_%s@%s:%s\033\\' '${USER}' '${HOSTNAME%%.*}' '${PWD/#$HOME/\~}'" + ;; +esac +if [ '$color_prompt' = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# Titre du terminal +# If this is an xterm set the title to user@host:dir +case '$TERM' in +xterm*|rxvt*) + PS1='\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1' + ;; +*) + ;; +esac + + +# ------------------------------ +# ALIASES +# ------------------------------ + +# Privileged access +if (( UID != 0 )); then + alias sudo='sudo ' + alias scat='sudo cat' + alias svim='sudoedit' + alias root='sudo -i' + alias reboot='sudo systemctl reboot' + alias poweroff='sudo systemctl poweroff' + alias update='sudo apt update' + alias netctl='sudo netctl' +fi + +## Safety features +alias cp='cp -i' +alias mv='mv -i' +alias rm='rm -I' # 'rm -i' prompts for every file + +# btrfs cow +alias cp='cp -i --reflink=auto' + +# safer alternative w/ timeout, not stored in history +alias rm=' timeout 3 rm -Iv --one-file-system' +alias ln='ln -i' +alias chown='chown --preserve-root' +alias chmod='chmod --preserve-root' +alias chgrp='chgrp --preserve-root' +alias cls=" echo -ne '\033c'" # clear screen for real (it does not work in Terminology) + +## Make Bash error tolerant +alias :q=' exit' +alias :Q=' exit' +alias :x=' exit' +alias cd..='cd ..' + +# process using web +alias ports='lsof -i -n -P' + +# make parent directory if needed +alias mkdir='mkdir -p' + +# quit, exit & reboot +alias :q='exit' +alias oust="echo 'bye $USER...'; sleep 2s && systemctl poweroff" +alias comeback="echo 'be back right now...'; sleep 2s && systemctl reboot" + +# Modified commands +alias diff='colordiff' # requires colordiff package +alias grep='grep --color=auto' +alias more='less' +alias df='df -h' +alias du='du -c -h' +alias mkdir='mkdir -p -v' +alias nano='nano -w' +alias ping='ping -c 5' +alias dmesg='dmesg -HL' + +## New commands +alias da="date '+%A, %B %d, %Y [%T]'" +alias du1='du --max-depth=1' +alias hist='history | grep' # requires an argument +alias openports='ss --all --numeric --processes --ipv4 --ipv6' +alias pgg='ps -Af | grep' # requires an argument +alias ..='cd ..' +alias x=exit + +# changes directories +alias ..='cd ..' +alias ...='cd ../..' +alias ....='cd ../../..' +alias .....='cd ../../../..' +alias .3='...' +alias .4='....' +alias .5='.....' + +# handy short cuts +alias h='history' +alias j='jobs -l' + +# date /time +alias path='echo -e ${PATH//:/\\n}' +alias now="date +'%T'" +alias nowtime=now +alias nowdate="date +'%d-%m-%Y'" + +## pass options to free ## +alias free='free -h' +alias meminfo='free -m -l -t' + +## get top process eating memory +alias psmem='ps auxf | sort -nr -k 4' +alias psmem10='ps auxf | sort -nr -k 4 | head -10' + +## get top process eating cpu ## +alias pscpu='ps auxf | sort -nr -k 3' +alias pscpu10='ps auxf | sort -nr -k 3 | head -10' + +## Resume wget by default +alias wget='wget -c' + +# better 'top' +alias top='htop' + +# screen default resume +alias screen='screen -R' +alias sr='screen' + +# listings +alias ll='ls -lha' +alias lo='ls -o' +alias lh='ls -lh' +alias la='ls -la' +alias sl='ls' +alias l='ls' +alias s='ls' +alias lt='ls -laptr' #oldest first sort +alias labc='ls -lap' #alphabetical sort + +## ls +alias ls='ls -hFX --color=auto --group-directories-first' +alias lr='ls -RhFX --color=auto --group-directories-first' +alias ll='ls -lhFXa --color=auto --group-directories-first' +alias la='ll -AhFX --color=auto --group-directories-first' +alias lx='ll -BXhFX --color=auto --group-directories-first' # sort by extension +alias lz='ll -rShFX --color=auto --group-directories-first' # sort by size +alias lt='ll -rthFX --color=auto --group-directories-first' # sort by date +alias lm='la | more' + +# Git related +alias gs='git status' +alias gc='git commit' +alias ga='git add' +alias gd='git diff' +alias gb='git branch' +alias gl='git log' +alias gsb='git show-branch' +alias gco='git checkout' +alias gg='git grep' +alias gk='gitk --all' +alias gr='git rebase' +alias gri='git rebase --interactive' +alias gcp='git cherry-pick' +alias grm='git rm' + +# performances analysis +alias analyze='systemd-analyze' +alias blame='systemd-analyze blame' +alias criticalchain='systemd-analyze critical-chain' +alias plot='systemd-analyze plot > /tmp/boot.analysis.svg && chmod 0777 /tmp/boot.analysis.svg' + +# systemctl +alias ssysctl='sudo systemctl' +alias status='ssysctl status' +alias running='ssysctl list-units' +alias failed='ssysctl --failed' +alias units='ssysctl list-unit-files' +alias start='ssysctl start' +alias stop='ssysctl stop' +alias restart='ssysctl restart' +alias reload='ssysctl reload' +alias status='ssysctl status' +alias enable='ssysctl enable' +alias disable='ssysctl disable' +alias activate='enable --now' +alias mask='ssysctl mask' +alias unmask='ssysctl unmask' +alias help='ssysctl help' +alias daemonreload='ssysctl daemon-reload' +alias reboot='ssysctl reboot' +alias poweroff='ssysctl poweroff' +alias suspend='ssysctl suspend' +alias hibernate='ssysctl hibernate' +alias sleep='ssysctl hybrid-sleep' +alias reenable='ssysctl reenable' +alias revert='ssysctl revert' +alias targets='running --type=target' +alias enabled='units |grep enabled' +alias disabled='units |grep disabled' +alias jobs='ssysctl list-jobs' + +# journald +alias journal='sudo journalctl' +alias boot='journal -b' +alias pid='journal _PID=' +alias follow='journal -f' +alias kernel='journal -k' +alias unit='journal -u' +alias jeca='journal -p err..alert' +alias jreload='reload systemd-journald.service' +alias jauth='journal SYSLOG_FACILITY=10' +alias since='journal --since' +alias today="journalsince 'yesterday'" +alias j1h="journalsince '60 minutes ago'" +alias j15m="journal --since '15 minutes ago'" +alias j30m="journal --since '30 minutes ago'" +alias kernelboot='journal -k -b -1' +alias boots='journal --list-boots' +alias entries20='journal -n 20' + +# exports +export EDITOR='nano' +export BROWSER='surf' +export PAGER='most' + +# path +export PATH="/usr/lib/colorgcc/bin/:$PATH" +export CCACHE_PATH='/usr/bin' +export CCACHE_DIR=/mnt/build +export BUILDDIR=/mnt/build + +# vm +NPROC=$(nproc) diff --git a/roles/common/templates/debian_sources_list.j2 b/roles/common/templates/debian_sources_list.j2 new file mode 100644 index 0000000..f9c4b5e --- /dev/null +++ b/roles/common/templates/debian_sources_list.j2 @@ -0,0 +1,12 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +deb http://deb.debian.org/debian/ {{ ansible_distribution_release }} main contrib non-free non-free-firmware +deb-src http://deb.debian.org/debian/ {{ ansible_distribution_release }} main contrib non-free non-free-firmware + +deb http://security.debian.org/debian-security {{ ansible_distribution_release }}-security main contrib non-free non-free-firmware +deb-src http://security.debian.org/debian-security {{ ansible_distribution_release }}-security main contrib non-free non-free-firmware + +deb http://deb.debian.org/debian/ {{ ansible_distribution_release }}-updates main contrib non-free non-free-firmware +deb-src http://deb.debian.org/debian/ {{ ansible_distribution_release }}-updates main contrib non-free non-free-firmware diff --git a/roles/common/templates/ethernet_service.j2 b/roles/common/templates/ethernet_service.j2 new file mode 100644 index 0000000..3f8b44d --- /dev/null +++ b/roles/common/templates/ethernet_service.j2 @@ -0,0 +1,22 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=Ethernet MTU & Tx Queue Len +After=network-online.target + +[Service] +Type=oneshot +{% if jumbo_frames is defined %} +#ExecStart=ip link set {{ ethernet_interface }} mtu 1500 +#ExecStart=ip link set {{ ethernet_interface }} txqueuelen 1000 +ExecStart=ip link set {{ ethernet_interface }} mtu {{ ethernet_mtu }} +ExecStart=ip link set {{ ethernet_interface }} txqueuelen {{ ethernet_txqueuelen }} +{% else %} +ExecStart=ip link set {{ ethernet_interface }} mtu 1500 +ExecStart=ip link set {{ ethernet_interface }} txqueuelen 1000 +{% endif %} + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/templates/journald_conf.j2 b/roles/common/templates/journald_conf.j2 new file mode 100644 index 0000000..3ae3cbe --- /dev/null +++ b/roles/common/templates/journald_conf.j2 @@ -0,0 +1,10 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Journal] +MaxFileSec=1week +SystemMaxUse=250M +SystemMaxFileSize=50M +SystemMaxFiles=32 +RuntimeMaxFiles=32 diff --git a/roles/common/templates/locale.j2 b/roles/common/templates/locale.j2 new file mode 100644 index 0000000..94b8a43 --- /dev/null +++ b/roles/common/templates/locale.j2 @@ -0,0 +1,50 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +LANG="{{ locales_default.lang }}" +{% if locales_default.language is defined %} +LANGUAGE="{{ locales_default.language }}" +{% endif %} +{% if locales_default.lc_address is defined %} +LC_ADDRESS="{{ locales_default.lc_address }}" +{% endif %} +{% if locales_default.lc_all is defined %} +LC_ALL="{{ locales_default.lc_all }}" +{% endif %} +{% if locales_default.lc_collate is defined %} +LC_COLLATE="{{ locales_default.lc_collate }}" +{% endif %} +{% if locales_default.lc_ctype is defined %} +LC_CTYPE="{{ locales_default.lc_ctype }}" +{% endif %} +{% if locales_default.lc_identification is defined %} +LC_IDENTIFICATION="{{ locales_default.lc_identification }}" +{% endif %} +{% if locales_default.lc_measurement is defined %} +LC_MEASUREMENT="{{ locales_default.lc_measurement }}" +{% endif %} +{% if locales_default.lc_messages is defined %} +LC_MESSAGES="{{ locales_default.lc_messages }}" +{% endif %} +{% if locales_default.lc_monetary is defined %} +LC_MONETARY="{{ locales_default.lc_monetary }}" +{% endif %} +{% if locales_default.lc_name is defined %} +LC_NAME="{{ locales_default.lc_name }}" +{% endif %} +{% if locales_default.lc_numeric is defined %} +LC_NUMERIC="{{ locales_default.lc_numeric }}" +{% endif %} +{% if locales_default.lc_paper is defined %} +LC_PAPER="{{ locales_default.lc_paper }}" +{% endif %} +{% if locales_default.lc_response is defined %} +LC_RESPONSE="{{ locales_default.lc_response }}" +{% endif %} +{% if locales_default.lc_telephone is defined %} +LC_TELEPHONE="{{ locales_default.lc_telephone }}" +{% endif %} +{% if locales_default.lc_time is defined %} +LC_TIME="{{ locales_default.lc_time }}" +{% endif %} diff --git a/roles/common/templates/multiqueue_service.j2 b/roles/common/templates/multiqueue_service.j2 new file mode 100644 index 0000000..5140760 --- /dev/null +++ b/roles/common/templates/multiqueue_service.j2 @@ -0,0 +1,14 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=Ethernet Multiqueue +After=network-online.target + +[Service] +Type=oneshot +ExecStart=ethtool -L {{ ethernet_interface }} combined ${NPROC} + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/templates/multiqueue_service_override.j2 b/roles/common/templates/multiqueue_service_override.j2 new file mode 100644 index 0000000..c72ef30 --- /dev/null +++ b/roles/common/templates/multiqueue_service_override.j2 @@ -0,0 +1,6 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Service] +Environment="NPROC={{ ethernet_multiqueue }}" diff --git a/roles/common/templates/ntp_conf.j2 b/roles/common/templates/ntp_conf.j2 new file mode 100644 index 0000000..292def0 --- /dev/null +++ b/roles/common/templates/ntp_conf.j2 @@ -0,0 +1,116 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +# /etc/ntpsec/ntp.conf, configuration for ntpd; see ntp.conf(5) for help + +driftfile {{ ntp_driftfile }} +leapfile {{ ntp_leapfile }} + +# To enable Network Time Security support as a server, obtain a certificate +# (e.g. with Let's Encrypt), configure the paths below, and uncomment: +# nts cert CERT_FILE +# nts key KEY_FILE +# nts enable + +# You must create /var/log/ntpsec (owned by ntpsec:ntpsec) to enable logging. +#statsdir /var/log/ntpsec/ +#statistics loopstats peerstats clockstats +#filegen loopstats file loopstats type day enable +#filegen peerstats file peerstats type day enable +#filegen clockstats file clockstats type day enable + +statistics loopstats peerstats clockstats +filegen loopstats file loopstats type day enable +filegen peerstats file peerstats type day enable +filegen clockstats file clockstats type day enable + +{% if ntp_tinker_panic is sameas true %} +# Always reset the clock, even if the new time is more than 1000s away +# from the current system time. Usefull for VMs that can be paused +# and much later resumed. +tinker panic 0 +{% endif %} + +# This should be maxclock 7, but the pool entries count towards maxclock. +tos maxclock 11 + +# Comment this out if you have a refclock and want it to be able to discipline +# the clock by itself (e.g. if the system is not connected to the network). +tos minclock 4 minsane 3 + +# Specify one or more NTP servers. + +# Public NTP servers supporting Network Time Security: +# server time.cloudflare.com nts + +# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will +# pick a different set every time it starts up. Please consider joining the +# pool: + +{% for item in ntp_servers %} +pool {{ item }} iburst dynamic +{% endfor %} + +# Access control configuration; see /usr/share/doc/ntpsec-doc/html/accopt.html +# for details. +# +# Note that "restrict" applies to both servers and clients, so a configuration +# that might be intended to block requests from certain clients could also end +# up blocking replies from your own upstream servers. + +# By default, exchange time with everybody, but don't allow configuration. +restrict default kod nomodify nopeer noquery limited + +# Allow pool associations +restrict source nomodify notrap noquery + +# Local users may interrogate the ntp server more closely. + +# Permit all access over the loopback interface. This could +# be tightened as well, but to do so would effect some of +# the administrative functions. +{% for item in ntp_restrict %} +restrict {{ item }} +{% endfor %} + + +# Clients from this (example!) subnet have unlimited access, but only if +# cryptographically authenticated. +#restrict 192.168.123.0 mask 255.255.255.0 notrust + +# Enable public key cryptography. +#crypto + +#includefile /etc/ntp/crypto/pw + +# Key file containing the keys and key identifiers used when operating +# with symmetric key cryptography. +#keys /etc/ntp/keys + +# Specify the key identifiers which are trusted. +#trustedkey 4 8 42 + +# Specify the key identifier to use with the ntpdc utility. +#requestkey 8 + +# Specify the key identifier to use with the ntpq utility. +#controlkey 8 + +# Enable writing of statistics records. +#statistics clockstats cryptostats loopstats peerstats + +# Disable the monitoring facility to prevent amplification attacks using ntpdc +# monlist command when default restrict does not include the noquery flag. See +# CVE-2013-5211 for more details. +# Note: Monitoring will not be disabled with the limited restriction flag. +disable monitor + +# If you want to provide time to your local subnet, change the next line. +# (Again, the address is an example only.) +#broadcast 192.168.123.255 + +# If you want to listen to time broadcasts on your local subnet, de-comment the +# next lines. Please do this only if you trust everybody on the network! +#disable auth +#broadcastclient diff --git a/roles/common/templates/opt_backups_mount.j2 b/roles/common/templates/opt_backups_mount.j2 new file mode 100644 index 0000000..e638126 --- /dev/null +++ b/roles/common/templates/opt_backups_mount.j2 @@ -0,0 +1,19 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=Master Node Backups Mount +DefaultDependencies=yes +Conflicts=umount.target +Before=docker.service +After=systemd-networkd-wait-online@{{ ethernet_interface }}.service + +[Mount] +What=//{{ vm_master_node_local }}/backups +Where=/opt/backups +Type=cifs +Options=defaults,_netdev,guest,exec,dir_mode=0775,file_mode=0664,uid=1000,gid=1000 + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/templates/opt_docker_ssl_mount.j2 b/roles/common/templates/opt_docker_ssl_mount.j2 new file mode 100644 index 0000000..509df7e --- /dev/null +++ b/roles/common/templates/opt_docker_ssl_mount.j2 @@ -0,0 +1,19 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=Master Node SSL Mount +DefaultDependencies=yes +Conflicts=umount.target +Before=docker.service +After=systemd-networkd-wait-online@{{ ethernet_interface }}.service + +[Mount] +What=//{{ vm_master_node_local }}/ssl +Where=/opt/docker/ssl +Type=cifs +Options=defaults,_netdev,guest,exec,dir_mode=0555,file_mode=0444,uid=1000,gid=1000 + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/templates/opt_kernels_mount.j2 b/roles/common/templates/opt_kernels_mount.j2 new file mode 100644 index 0000000..c86adad --- /dev/null +++ b/roles/common/templates/opt_kernels_mount.j2 @@ -0,0 +1,19 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=Master Node Kernels Mount +DefaultDependencies=yes +Conflicts=umount.target +Before=docker.service +After=systemd-networkd-wait-online@{{ ethernet_interface }}.service + +[Mount] +What=//{{ vm_master_node_local }}/kernels +Where=/opt/kernels +Type=cifs +Options=defaults,_netdev,guest,exec,dir_mode=0775,file_mode=0664,uid=1000,gid=1000 + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/templates/opt_scripts_mount.j2 b/roles/common/templates/opt_scripts_mount.j2 new file mode 100644 index 0000000..c674cd4 --- /dev/null +++ b/roles/common/templates/opt_scripts_mount.j2 @@ -0,0 +1,19 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=Master Node Scripts Mount +DefaultDependencies=yes +Conflicts=umount.target +Before=docker.service +After=systemd-networkd-wait-online@{{ ethernet_interface }}.service + +[Mount] +What=//{{ vm_master_node_local }}/scripts +Where=/opt/scripts +Type=cifs +Options=defaults,_netdev,guest,exec,dir_mode=0775,file_mode=0664,uid=1000,gid=1000 + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/templates/opt_work_mount.j2 b/roles/common/templates/opt_work_mount.j2 new file mode 100644 index 0000000..f358fb0 --- /dev/null +++ b/roles/common/templates/opt_work_mount.j2 @@ -0,0 +1,19 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=Master Node Work Mount +DefaultDependencies=yes +Conflicts=umount.target +Before=docker.service +After=systemd-networkd-wait-online@{{ ethernet_interface }}.service + +[Mount] +What=//{{ vm_master_node_local }}/work +Where=/opt/work +Type=cifs +Options=defaults,_netdev,guest,exec,dir_mode=0775,file_mode=0664,uid=1000,gid=1000 + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/templates/smb_conf.j2 b/roles/common/templates/smb_conf.j2 new file mode 100644 index 0000000..3c796a5 --- /dev/null +++ b/roles/common/templates/smb_conf.j2 @@ -0,0 +1,86 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[global] +workgroup = {{ samba_workgroup_name }} +security = user +map to guest = Bad User +name resolve order = bcast host +usershare allow guests = yes +client min protocol = NT1 +client max protocol = SMB3 +server min protocol = NT1 +server max protocol = SMB3 +getwd cache = yes +strict allocate = yes +strict locking = no +read raw = yes +write raw = yes +use sendfile = yes +oplocks = yes +getwd cache = yes +max connections = 65535 +max open files = 65535 +max xmit = 65535 +aio read size = 16384 +aio write size = 16384 +min receivefile size = 16384 +log level = 0 +dead time = 15 +load printers = no +printing = bsd +printcap name = /dev/null +disable spoolss = yes +show add printer wizard = no +use sendfile = yes +domain master = auto +mangled names = no +charset = UTF-8 +unix charset = UTF-8 +display charset = UTF-8 +store dos attributes = no +ea support = no +map archive = no +map hidden = no +map system = no +map readonly = no + +[work] +comment = work +path = {{ smb_work }} +force user = {{ samba_default_force_user }} +force group = {{ samba_default_force_group }} +create mask = 0644 +directory mask = 0755 +force create mode = 0644 +force directory mode = 0775 +browsable = yes +public = yes +writable = yes + +[backups] +comment = backups +path = {{ smb_backups }} +force user = {{ samba_default_force_user }} +force group = {{ samba_default_force_group }} +create mask = 0644 +directory mask = 0755 +force create mode = 0644 +force directory mode = 0775 +browsable = yes +public = yes +writable = yes + +[docker] +comment = Docker +path = {{ smb_docker }} +force user = {{ samba_default_force_user }} +force group = {{ samba_default_force_group }} +create mask = 0644 +directory mask = 0755 +force create mode = 0644 +force directory mode = 0775 +browsable = yes +public = yes +writable = yes diff --git a/roles/common/templates/vm_service.j2 b/roles/common/templates/vm_service.j2 new file mode 100644 index 0000000..6dc990e --- /dev/null +++ b/roles/common/templates/vm_service.j2 @@ -0,0 +1,18 @@ +{# Updated: 2023-09-25 #} +# master: {{ common_mastering }} +# updated: {{ ansible_date_time.date }} + +[Unit] +Description=VM Start/Stop Notifications +After=network.target docker.service +After=systemd-networkd-wait-online@{{ ethernet_interface }}.service +RequiresMountsFor=/opt/scripts + +[Service] +Type=oneshot +ExecStart=bash /opt/scripts/ntfy.sh -t "vm" -m "START" +ExecStop=bash /opt/scripts/ntfy.sh -t "vm" -m "STOP" +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/roles/common/vars/aliases.yml b/roles/common/vars/aliases.yml new file mode 100644 index 0000000..e3a0f3a --- /dev/null +++ b/roles/common/vars/aliases.yml @@ -0,0 +1,12 @@ +# 2023-09-25 +# Settings: aliases +--- + +# bash_aliases template +bash_aliases_template: bash_aliases.j2 + +# bash_aliases path +bash_aliases_distribution: /etc/bash_aliases + +# bash.bashrc +bash_bashrc: /etc/bash.bashrc diff --git a/roles/common/vars/directories.yml b/roles/common/vars/directories.yml new file mode 100644 index 0000000..d54a6fe --- /dev/null +++ b/roles/common/vars/directories.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Settings: directories +--- + +# New directories to create +directories_create: + - /opt/backups + - /opt/scripts + - /opt/work + - /opt/docker + - /opt/docker/ssl diff --git a/roles/common/vars/locales.yml b/roles/common/vars/locales.yml new file mode 100644 index 0000000..d4b435c --- /dev/null +++ b/roles/common/vars/locales.yml @@ -0,0 +1,35 @@ +# 2023-09-25 +# Settings: locales +--- + +locales_selections: + - "en_US.UTF-8" + - "fr_FR.UTF-8" + +# locale template +locale_template: locale.j2 + +# locale path +locale_template_distribution: /etc/default/locale + +# Global default locale definition +default_locale: "fr_FR.UTF-8" + +# Setup all system default locales +locales_default: + lang: "{{ default_locale }}" + language: "{{ default_locale }}" + lc_address: "{{ default_locale }}" + lc_all: "{{ default_locale }}" + lc_collate: "{{ default_locale }}" + lc_ctype: "{{ default_locale }}" + lc_identification: "{{ default_locale }}" + lc_measurement: "{{ default_locale }}" + lc_messages: "{{ default_locale }}" + lc_monetary: "{{ default_locale }}" + lc_name: "{{ default_locale }}" + lc_numeric: "{{ default_locale }}" + lc_paper: "{{ default_locale }}" + lc_response: "{{ default_locale }}" + lc_telephone: "{{ default_locale }}" + lc_time: "{{ default_locale }}" diff --git a/roles/common/vars/main.yml b/roles/common/vars/main.yml new file mode 100644 index 0000000..62e3fdc --- /dev/null +++ b/roles/common/vars/main.yml @@ -0,0 +1,26 @@ +# 2023-09-25 +# Vars: main +--- + +task_enable_all: true +task_enable_users: true +task_enable_locales: true +task_enable_timezone: true +task_enable_ntp: true +task_enable_aliases: true +task_enable_mounts: true +task_enable_directories: true +task_enable_packages: true +task_enable_samba: true +task_enable_tuned: true +task_enable_systemd: true +task_enable_daemons: true +task_enable_services: true + + + +# +# mastering date +# + +common_mastering: "{{ mastering_common | default('2023-09-25') }}" diff --git a/roles/common/vars/mounts.yml b/roles/common/vars/mounts.yml new file mode 100644 index 0000000..1cf88ff --- /dev/null +++ b/roles/common/vars/mounts.yml @@ -0,0 +1,21 @@ +# 2023-09-25 +# Settings: mounts +--- + +# New directories to create +mounts_create: + - /mnt/memory + - /mnt/build + - /mnt/cache + +# Path to systel fstab file +fstab_path: /etc/fstab + +# Directories to mount in fstab +mounts_fstab_append: + - /mnt/memory + - /mnt/build + - /mnt/cache + - /tmp + - /var/log + - /var/tmp diff --git a/roles/common/vars/ntp.yml b/roles/common/vars/ntp.yml new file mode 100644 index 0000000..fb6aee5 --- /dev/null +++ b/roles/common/vars/ntp.yml @@ -0,0 +1,26 @@ +# 2023-09-25 +# Settings: ntp +--- + +ntp_enabled: true + +ntp_restrict: + - "127.0.0.1" + - "::1" + +ntp_package_daemon: ntp +ntp_package_tzdata: tzdata + +ntp_timezone: "{{ timezone }}" +ntp_daemon: ntp + +ntp_servers: + - fr.pool.ntp.org + - pool.ntp.org + +ntp_conf_template: ntp_conf.j2 +ntp_conf_distribution: /etc/ntpsec/ntp.conf + +ntp_driftfile: /var/lib/ntpsec/ntp.drift +ntp_leapfile: /usr/share/zoneinfo/leap-seconds.list +ntp_cron_daemon: cron diff --git a/roles/common/vars/packages/debian.yml b/roles/common/vars/packages/debian.yml new file mode 100644 index 0000000..1a9da89 --- /dev/null +++ b/roles/common/vars/packages/debian.yml @@ -0,0 +1,38 @@ +# 2023-09-25 +# Settings: packages +--- + +# APT sources.list template +sources_list_template: debian_sources_list.j2 + +# APT distribution template full remote path +sources_list_distribution: /etc/apt/sources.list.d/debian.list + +# base system packages to remove +packages_removed: + - systemd-timesyncd + +# base system packages needed +packages_needed: + - ca-certificates + - locales + - sudo + - nano + - curl + - wget + - surf + - most + - gnupg + - zram-tools + - bash-completion + - lsof + - colordiff + - htop + - screen + - git + - samba + - mlocate + - mc + - ethtool + - cifs-utils + - qemu-guest-agent diff --git a/roles/common/vars/samba.yml b/roles/common/vars/samba.yml new file mode 100644 index 0000000..e67c9ff --- /dev/null +++ b/roles/common/vars/samba.yml @@ -0,0 +1,14 @@ +# 2023-09-25 +# Settings: samba +--- + +# Samba smb.conf template +smb_conf_template: smb_conf.j2 + +# smb.conf full remote path +smb_conf_distribution: /etc/samba/smb.conf + +# folders specifications +smb_docker: "/opt/docker" +smb_work: "/opt/work" +smb_backups: "/opt/backups" diff --git a/roles/common/vars/services.yml b/roles/common/vars/services.yml new file mode 100644 index 0000000..e4273b9 --- /dev/null +++ b/roles/common/vars/services.yml @@ -0,0 +1,40 @@ +# 2023-09-25 +# Settings: services +--- + +services_disable: + - "proc-sys-fs-binfmt_misc.mount" + - "ifupdown-wait-online.service" + - "systemd-network-generator.service" + - "systemd-networkd-wait-online.service" + - "systemd-time-wait-sync.service" + +services_enable: + - "systemd-boot-check-no-failures.service" + - "systemd-networkd.service" + - "systemd-pstore.service" + - "ntpsec.service" + - "ntpsec-systemd-netif.path" + - "systemd-networkd-wait-online@{{ ethernet_interface }}.service" + +services_restart: + - "cron.service" + - "nmbd.service" + - "smbd.service" + - "tuned.service" + - "{{ systemd_container_ethernet_service }}" + - "{{ systemd_container_multiqueue_service }}" + - "{{ systemd_container_vm_service }}" + - "{{ systemd_container_opt_work_mount }}" + - "{{ systemd_container_opt_backup_mount }}" + - "{{ systemd_container_opt_kernels_mount}}" + - "{{ systemd_container_opt_scripts_mount }}" + - "{{ systemd_container_opt_docker_ssl_mount }}" + +timers_enable: + - "e2scrub_all.timer" + - "fstrim.timer" + - "logrotate.timer" + - "man-db.timer" + - "plocate-updatedb.timer" + - "ntpsec-rotate-stats.timer" diff --git a/roles/common/vars/systemd.yml b/roles/common/vars/systemd.yml new file mode 100644 index 0000000..658587d --- /dev/null +++ b/roles/common/vars/systemd.yml @@ -0,0 +1,61 @@ +# 2023-09-25 +# Settings: systemd +--- + +systemd_root: "/etc/systemd" +systemd_system_root: "{{ systemd_root }}/system" +systemd_journal_root: "{{ systemd_root }}/journald.conf.d" +local_folder_templates: ../templates + +ethernet_interface: "{{ ansible_default_ipv4.interface }}" + +jumbo_frames: true +ethernet_mtu: 9000 +ethernet_txqueuelen: 10000 +ethernet_multiqueue: "{{ ansible_facts['processor_nproc'] }}" + +systemd_template_journald_service: "{{ local_folder_templates }}/journald_conf.j2" +systemd_container_journald_service: "vm.conf" + +systemd_template_ethernet_service: "{{ local_folder_templates }}/ethernet_service.j2" +systemd_container_ethernet_service: "ethernet.service" + +systemd_template_multiqueue_service_override: "{{ local_folder_templates }}/multiqueue_service_override.j2" +systemd_container_multiqueue_service_override: "multiqueue.service.d/override.conf" + +systemd_template_multiqueue_service: "{{ local_folder_templates }}/multiqueue_service.j2" +systemd_container_multiqueue_service: "multiqueue.service" + +systemd_template_vm_service: "{{ local_folder_templates }}/vm_service.j2" +systemd_container_vm_service: "vm.service" + +systemd_template_opt_backup_mount: "{{ local_folder_templates }}/opt_backups_mount.j2" +systemd_container_opt_backup_mount: "opt-backups.mount" + +systemd_template_opt_work_mount: "{{ local_folder_templates }}/opt_work_mount.j2" +systemd_container_opt_work_mount: "opt-work.mount" + +systemd_template_opt_kernels_mount: "{{ local_folder_templates }}/opt_kernels_mount.j2" +systemd_container_opt_kernels_mount: "opt-kernels.mount" + +systemd_template_opt_scripts_mount: "{{ local_folder_templates }}/opt_scripts_mount.j2" +systemd_container_opt_scripts_mount: "opt-scripts.mount" + +systemd_template_opt_docker_ssl_mount: "{{ local_folder_templates }}/opt_docker_ssl_mount.j2" +systemd_container_opt_docker_ssl_mount: "opt-docker-ssl.mount" + +systemd_directories: + - "{{ systemd_system_root }}/multiqueue.service.d" + - "{{ systemd_journal_root }}" + +systemd_templates: + - { local: "{{ systemd_template_journald_service }}", remote: "{{ systemd_journal_root }}/{{ systemd_container_journald_service }}" } + - { local: "{{ systemd_template_ethernet_service }}", remote: "{{ systemd_system_root }}/{{ systemd_container_ethernet_service }}" } + - { local: "{{ systemd_template_multiqueue_service_override }}", remote: "{{ systemd_system_root }}/{{ systemd_container_multiqueue_service_override }}" } + - { local: "{{ systemd_template_multiqueue_service }}", remote: "{{ systemd_system_root }}/{{ systemd_container_multiqueue_service }}" } + - { local: "{{ systemd_template_vm_service }}", remote: "{{ systemd_system_root }}/{{ systemd_container_vm_service }}" } + - { local: "{{ systemd_template_opt_backup_mount }}", remote: "{{ systemd_system_root }}/{{ systemd_container_opt_backup_mount }}" } + - { local: "{{ systemd_template_opt_work_mount }}", remote: "{{ systemd_system_root }}/{{ systemd_container_opt_work_mount }}" } + - { local: "{{ systemd_template_opt_kernels_mount }}", remote: "{{ systemd_system_root }}/{{ systemd_container_opt_kernels_mount }}" } + - { local: "{{ systemd_template_opt_scripts_mount }}", remote: "{{ systemd_system_root }}/{{ systemd_container_opt_scripts_mount }}" } + - { local: "{{ systemd_template_opt_docker_ssl_mount }}", remote: "{{ systemd_system_root }}/{{ systemd_container_opt_docker_ssl_mount }}" } diff --git a/roles/common/vars/timezone.yml b/roles/common/vars/timezone.yml new file mode 100644 index 0000000..675bf03 --- /dev/null +++ b/roles/common/vars/timezone.yml @@ -0,0 +1,9 @@ +# 2023-09-25 +# Settings: timezone +--- + +# Define time zone +timezone: "Europe/Paris" + +# SystemD cron daemon +cron_daemon: "cron" diff --git a/roles/common/vars/tuned.yml b/roles/common/vars/tuned.yml new file mode 100644 index 0000000..7d47c77 --- /dev/null +++ b/roles/common/vars/tuned.yml @@ -0,0 +1,9 @@ +# 2023-09-25 +# Settings: tuned +--- + +# packages needed +packages_needed: + - tuned + - tuned-utils + - tuned-utils-systemtap diff --git a/roles/common/vars/vault/samba.yml b/roles/common/vars/vault/samba.yml new file mode 100644 index 0000000..602405b --- /dev/null +++ b/roles/common/vars/vault/samba.yml @@ -0,0 +1,15 @@ +$ANSIBLE_VAULT;1.1;AES256 +37326662323464363664353831663333313866653762643036663633633939303865333330393164 +6266663764333931356337636434643931623637396236660a656330643061353537316332373261 +39316162393830396165323335623236393638313236343033326538303261383164376436396133 +6533653362326233630a616139323435306538386365366532373436303861633165653861313630 +33653263626330613165306639393533616131373462303837326634393164386138386136643330 +62303335376536323536303633626132386438376364313864646465373538656262306166336562 +62643237613737653337333635333863653933343266633439666131623437383131636434666430 +63303131666539616465303433633231633964613036636439653531343937653635636630613865 +62383338643438346238656131323765373461353739633165333139303136363962313661373166 +37343138626438666264326431323735363635336636623262666336333931653863613135393831 +35356430326436313131626264646564333731383334646466343532653437353866323133643030 +38643033343732303635663963613365636638366131626464356438313236306366353435383038 +36333337383339353737623736666261343836336435316461633039323438633663396632646632 +3138373231326130323864653439373563653961666666633135 diff --git a/roles/docker/README.md b/roles/docker/README.md new file mode 100644 index 0000000..6acbc93 --- /dev/null +++ b/roles/docker/README.md @@ -0,0 +1,3 @@ +# Docker + +Create needed directories, remove old packages and install required packages from official Docker recommandations. diff --git a/roles/docker/tasks/docker.yml b/roles/docker/tasks/docker.yml new file mode 100644 index 0000000..313c4ae --- /dev/null +++ b/roles/docker/tasks/docker.yml @@ -0,0 +1,146 @@ +# 2023-09-25 +# Tasks: docker +--- + +- ansible.builtin.include_vars: docker.yml + +# +# Prepare Docker service +# + +- name: Create directories + ansible.builtin.file: + path: "{{ item }}" + owner: root + group: root + state: directory + mode: u=rwx,g=rx,o=rx + with_items: "{{ directories_create }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - directories + - create + +- name: Process daemon.json template + ansible.builtin.template: + backup: true + src: "{{ vm_template_daemon_json }}" + dest: "{{ vm_daemon_json_root }}/{{ vm_template_daemon_json_name }}" + owner: root + group: root + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + tags: + - template + - docker + - daemon + - add + +- name: Process override.conf template + ansible.builtin.template: + backup: true + src: "{{ vm_template_docker_override }}" + dest: "{{ vm_docker_override_root }}/{{ vm_template_docker_override_name }}" + owner: root + group: root + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + tags: + - template + - docker + - override + - add + + + +# +# Install Docker +# + +- name: Setup Docker's GPG + ansible.builtin.shell: | + install -m 0755 -d /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + chmod a+r /etc/apt/keyrings/docker.gpg + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - docker + - gpg + +- name: Add Docker repository + ansible.builtin.shell: | + echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + when: + - ansible_facts['system'] == "Linux" + - ansible_facts['os_family'] == "Debian" + tags: + - docker + - repositories + +- name: Perform Docker packages cleanup + ansible.builtin.package: + state: absent + name: "{{ docker_pakages_cleanup }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - apt + - packages + - remove + - docker + +- name: Install Docker packages + ansible.builtin.package: + install_recommends: false + update_cache: true + name: "{{ docker_pakages_required + docker_pakages_needed }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - apt + - packages + - add + - docker + +- name: Reload daemons + ansible.builtin.systemd: + daemon_reload: true + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - services + - reload + +- name: Ensure Docker is restarted + ansible.builtin.service: + name: "{{ item }}" + state: restarted + with_items: "{{ docker_services }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - services + - docker + - start + +- name: Install Grafana Loki Docker plugin + community.docker.docker_plugin: + plugin_name: "{{docker_loki_image}}:{{ docker_loki_version }}" + alias: "{{ docker_loki_alias }}" + state: enable + when: + - ansible_facts['system'] == "Linux" + tags: + - services + - docker + - plugins diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml new file mode 100644 index 0000000..3a8d6c8 --- /dev/null +++ b/roles/docker/tasks/main.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Tasks: main +--- + +- ansible.builtin.include_vars: main.yml + +# Docker +- ansible.builtin.include_tasks: docker.yml + when: + - task_enable_all + - task_enable_docker + tags: + - tasks + - system + - vm + - docker diff --git a/roles/docker/templates/daemon_json.j2 b/roles/docker/templates/daemon_json.j2 new file mode 100644 index 0000000..01fec7c --- /dev/null +++ b/roles/docker/templates/daemon_json.j2 @@ -0,0 +1,35 @@ +{ + "live-restore": true, + "max-concurrent-downloads": 16, + "max-concurrent-uploads": 16, + "max-download-attempts": 16, + "mtu": 1500, + "dns": [ + "1.1.1.1", + "8.8.8.8", + "1.0.0.1", + "8.8.4.4" + ], + "bip": "10.200.0.1/24", + "ipv6": true, + "fixed-cidr-v6": "2001:db8:1::/64", + "ip6tables": true, + "experimental": true, + "default-address-pools": [ + { + "base" : "10.201.0.0/16", + "size" : 24 + }, + { + "base" : "10.202.0.0/16", + "size" : 24 + }, + { + "base": "2001:db8::/104", + "size": 112 + } + ], + "hosts": [ + "unix:///var/run/docker.sock" + ] +} diff --git a/roles/docker/templates/docker_override_json.j2 b/roles/docker/templates/docker_override_json.j2 new file mode 100644 index 0000000..dce109d --- /dev/null +++ b/roles/docker/templates/docker_override_json.j2 @@ -0,0 +1,6 @@ +# {{ ansible_managed }} +# {{ docker_mastering }} +# 2023-09-25 +[Service] +ExecStart= +ExecStart=/usr/bin/dockerd diff --git a/roles/docker/vars/docker.yml b/roles/docker/vars/docker.yml new file mode 100644 index 0000000..5390207 --- /dev/null +++ b/roles/docker/vars/docker.yml @@ -0,0 +1,58 @@ +# 2023-09-25 +# Settings: docker +--- + + + +# +# installation +# + +# directories +vm_daemon_json_root: "/etc/docker" +vm_docker_override_root: "/etc/systemd/system/docker.service.d/" + +directories_create: + - "{{ vm_daemon_json_root }}" + - "{{ vm_docker_override_root }}" + +# daemon.json +vm_template_daemon_json: daemon_json.j2 +vm_template_daemon_json_name: "daemon.json" + +# override.conf +vm_template_docker_override: docker_override_json.j2 +vm_template_docker_override_name: "override.conf" + +# Grafana Loki plugin +docker_loki_image: "grafana/loki-docker-driver" +docker_loki_version: "latest" +docker_loki_alias: "loki" + +# Docker packages required +docker_pakages_required: + - curl + - gnupg + - lsb-release + +# Packages to remove before Docker +docker_pakages_cleanup: + - docker.io + - docker-doc + - docker-compose + - podman-docker + - containerd + +# Packages to install Docker +docker_pakages_needed: + - docker-ce + - docker-ce-cli + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin + - cgroupfs-mount + +# Docker services +docker_services: + - docker.service + - docker.socket diff --git a/roles/docker/vars/main.yml b/roles/docker/vars/main.yml new file mode 100644 index 0000000..ba5effa --- /dev/null +++ b/roles/docker/vars/main.yml @@ -0,0 +1,14 @@ +# 2023-09-25 +# Vars: main +--- + +task_enable_all: true +task_enable_docker: true + + + +# +# mastering date +# + +docker_mastering: "{{ mastering_docker | default('2023-09-25') }}" diff --git a/roles/stacks/README.md b/roles/stacks/README.md new file mode 100644 index 0000000..3b83dd5 --- /dev/null +++ b/roles/stacks/README.md @@ -0,0 +1,23 @@ +# Stacks + +Define all required settings and required files, to setup my Docker stacks: + +* Docker Socket Proxy +* Dozzle +* Adguard Home +* APT Cacher NG +* DL (download zone for my blog) +* Draw.IO +* Flame +* Hastebin +* Homepage +* IPFS +* ITZG _(Minecraft server... for testing purpose only)_ +* Jekyll +* Monitoring _(base)_ including cAdvisor & Node-exporter +* Ntfy +* Portainer Agent +* Portainer +* Promtail +* Docker Registry +* Watchtower diff --git a/roles/stacks/composes/files/adguardhome/templates/adguardhome/templates/adguardhome/adguardhome_yaml.j2 b/roles/stacks/composes/files/adguardhome/templates/adguardhome/templates/adguardhome/adguardhome_yaml.j2 new file mode 100644 index 0000000..2e3f0c1 --- /dev/null +++ b/roles/stacks/composes/files/adguardhome/templates/adguardhome/templates/adguardhome/adguardhome_yaml.j2 @@ -0,0 +1,387 @@ +# {{ ansible_managed }} +# master: {{ stacks_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} +http: + pprof: + port: 6060 + enabled: false + address: 0.0.0.0:80 + session_ttl: 720h +users: + - name: {{ admin_user }} + password: {{ admin_password }} +auth_attempts: 5 +block_auth_min: 15 +http_proxy: "" +language: "" +theme: auto +dns: + bind_hosts: + - 0.0.0.0 + port: 53 + anonymize_client_ip: false + ratelimit: 0 + ratelimit_whitelist: [] + refuse_any: true + upstream_dns: + - https://security.cloudflare-dns.com/dns-query + - https://dns.quad9.net/dns-query + - https://dns.adguard.com/dns-query + - tls://security.cloudflare-dns.com + - tls://dns.quad9.net + - tls://dns.adguard.com + upstream_dns_file: "" + bootstrap_dns: + - 9.9.9.10 + - 149.112.112.10 + - 2620:fe::10 + - 2620:fe::fe:10 + - 1.1.1.1 + - 1.0.0.1 + - 2606:4700:4700::1111 + - 2606:4700:4700::1001 + - 8.8.8.8 + - 8.8.4.4 + - 2001:4860:4860::8888 + - 2001:4860:4860::8844 + - 9.9.9.9 + - 149.112.112.112 + - 2620:fe::fe + - 2620:fe::9 + fallback_dns: [] + all_servers: true + fastest_addr: false + fastest_timeout: 1s + allowed_clients: [] + disallowed_clients: [] + blocked_hosts: + - version.bind + - id.server + - hostname.bind + trusted_proxies: + - 127.0.0.0/8 + - ::1/128 + cache_size: 4194304 + cache_ttl_min: 2400 + cache_ttl_max: 84600 + cache_optimistic: true + bogus_nxdomain: [] + aaaa_disabled: false + enable_dnssec: true + edns_client_subnet: + custom_ip: "" + enabled: true + use_custom: false + max_goroutines: 0 + handle_ddr: true + ipset: [] + ipset_file: "" + bootstrap_prefer_ipv6: false + upstream_timeout: 10s + private_networks: [] + use_private_ptr_resolvers: true + local_ptr_upstreams: [] + use_dns64: false + dns64_prefixes: [] + serve_http3: true + use_http3_upstreams: false +tls: + enabled: true + server_name: {{ tls_server_name }} + force_https: false + port_https: 443 + port_dns_over_tls: 853 + port_dns_over_quic: 853 + port_dnscrypt: 0 + dnscrypt_config_file: "" + allow_unencrypted_doh: false + certificate_chain: "" + private_key: "" + certificate_path: {{ tls_certificate_path }} + private_key_path: {{ tls_private_key_path }} + strict_sni_check: false +querylog: + ignored: [] + interval: 720h + size_memory: 1000 + enabled: true + file_enabled: true +statistics: + ignored: [] + interval: 720h + enabled: true +filters: + - enabled: true + url: https://raw.githubusercontent.com/DandelionSprout/adfilt/master/GameConsoleAdblockList.txt + name: Game Console Adblock List + id: 1664518418 + - enabled: true + url: https://someonewhocares.org/hosts/zero/hosts + name: Dan Pollock's List + id: 1664518423 + - enabled: true + url: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblockplus&showintro=1&mimetype=plaintext + name: Peter Lowe's List + id: 1664518424 + - enabled: true + url: https://malware-filter.gitlab.io/malware-filter/urlhaus-filter-agh-online.txt + name: Online Malicious URL Blocklist + id: 1664518428 + - enabled: true + url: https://raw.githubusercontent.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites/master/hosts + name: The Big List of Hacked Malware Web Sites + id: 1664518429 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt + name: AdAway Default Blocklist + id: 1674828830 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt + name: AdGuard DNS filter + id: 1674828831 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_32.txt + name: The NoTracking blocklist + id: 1674828833 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_5.txt + name: OISD Blocklist Basic + id: 1674828834 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_27.txt + name: OISD Blocklist Full + id: 1674828835 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_23.txt + name: WindowsSpyBlocker - Hosts spy rules + id: 1674828836 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_7.txt + name: Perflyst and Dandelion Sprout's Smart-TV Blocklist + id: 1674828837 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_30.txt + name: Phishing URL Blocklist (PhishTank and OpenPhish) + id: 1674828838 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_12.txt + name: Dandelion Sprout's Anti-Malware List + id: 1674828839 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt + name: Malicious URL Blocklist (URLHaus) + id: 1674828840 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_8.txt + name: NoCoin Filter List + id: 1674828841 + - enabled: true + url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_10.txt + name: Scam Blocklist by DurableNapkin + id: 1674828842 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_2_Base/filter.txt + name: Base filter + id: 1674828843 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_3_Spyware/filter.txt + name: Tracking Protection filter + id: 1674828844 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_17_TrackParam/filter.txt + name: URL Tracking filter + id: 1674828845 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_4_Social/filter.txt + name: Social media filter + id: 1674828846 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_14_Annoyances/filter.txt + name: Annoyances filter + id: 1674828847 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_16_French/filter.txt + name: French filter + id: 1674828848 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_11_Mobile/filter.txt + name: Mobile ads filter + id: 1674828849 + - enabled: true + url: https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_15_DnsFilter/filter.txt + name: DNS filter + id: 1674828850 + - enabled: true + url: https://malware-filter.gitlab.io/malware-filter/urlhaus-filter-agh.txt + name: Online Malicious URL Blocklist (AdGuard Home) + id: 1674828851 + - enabled: true + url: https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt + name: uBlock filters - Default + id: 1674828852 + - enabled: true + url: https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt + name: uBlock filters – Badware risks + id: 1674828853 + - enabled: true + url: https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt + name: uBlock filters – Privacy + id: 1674828854 + - enabled: true + url: https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt + name: uBlock filters – Resource abuse + id: 1674828855 + - enabled: true + url: https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txt + name: Lightswitch05 - Ads and Tracking + id: 1674828856 + - enabled: true + url: https://www.github.developerdan.com/hosts/lists/dating-services-extended.txt + name: Lightswitch05 - Dating Services + id: 1674828857 + - enabled: true + url: https://www.github.developerdan.com/hosts/lists/tracking-aggressive-extended.txt + name: Lightswitch05 - Tracking Aggressive + id: 1674828858 + - enabled: true + url: https://v.firebog.net/hosts/Prigent-Crypto.txt + name: Firebog - Prigent Crypto + id: 1674828859 + - enabled: true + url: https://v.firebog.net/hosts/Prigent-Malware.txt + name: Firebog - Prigent Malware + id: 1674828860 + - enabled: true + url: https://raw.githubusercontent.com/matomo-org/referrer-spam-blacklist/master/spammers.txt + name: Matomo - Referrer Spam Blacklist + id: 1674828861 + - enabled: true + url: https://raw.githubusercontent.com/matomo-org/referrer-spam-list/master/spammers.txt + name: Matomo.org - Referrer Spammers + id: 1674828862 + - enabled: true + url: https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt + name: Ad filter list by Disconnect + id: 1674828863 + - enabled: true + url: https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt + name: NoTrack Malware Blocklist + id: 1674828864 + - enabled: true + url: https://easylist-downloads.adblockplus.org/antiadblockfilters.txt + name: Adblock Warning Removal List + id: 1674828865 + - enabled: true + url: https://secure.fanboy.co.nz/fanboy-cookiemonster.txt + name: Easylist Cookie List + id: 1674828866 + - enabled: true + url: https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/alexa + name: NextDNS Privacy - Alexa + id: 1674828867 + - enabled: true + url: https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/windows + name: NextDNS Privacy - Windows + id: 1674828868 + - enabled: true + url: https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/samsung + name: NextDNS Privacy - Samsung + id: 1674828869 + - enabled: true + url: https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt + name: Malvertising list by Disconnect + id: 1674828870 + - enabled: true + url: https://dl.red.flag.domains/red.flag.domains.txt + name: 'FR: French filters RedFlagDomains' + id: 1674828871 + - enabled: true + url: https://dbl.oisd.nl/ + name: OISD Domains + id: 1674828872 + - enabled: true + url: https://hosts.oisd.nl/ + name: OISD Hosts + id: 1674828873 + - enabled: true + url: https://raw.githubusercontent.com/NanoAdblockerLab/NanoContrib/master/dist/placeholder-buster.txt + name: Removes empty ads placeholders + id: 1686454535 +whitelist_filters: [] +user_rules: +{% for item in user_rules %} + - {{ item.rule }} +{% endfor %} +dhcp: + enabled: false + interface_name: "" + local_domain_name: lan + dhcpv4: + gateway_ip: "" + subnet_mask: "" + range_start: "" + range_end: "" + lease_duration: 86400 + icmp_timeout_msec: 1000 + options: [] + dhcpv6: + range_start: "" + lease_duration: 86400 + ra_slaac_only: false + ra_allow_slaac: false +filtering: + blocking_ipv4: "" + blocking_ipv6: "" + blocked_services: + schedule: + time_zone: {{ time_zone }} + ids: [] + protection_disabled_until: null + safe_search: + enabled: false + bing: true + duckduckgo: true + google: true + pixabay: true + yandex: true + youtube: true + blocking_mode: default + parental_block_host: family-block.dns.adguard.com + safebrowsing_block_host: standard-block.dns.adguard.com + rewrites: +{% for item in rewrites %} + - domain: {{ item.domain }} + answer: {{ item.answer }} +{% endfor %} + safebrowsing_cache_size: 1048576 + safesearch_cache_size: 1048576 + parental_cache_size: 1048576 + cache_time: 30 + filters_update_interval: 12 + blocked_response_ttl: 10 + filtering_enabled: true + parental_enabled: false + safebrowsing_enabled: false + protection_enabled: true +clients: + runtime_sources: + whois: true + arp: true + rdns: true + dhcp: true + hosts: true + persistent: [] +log: + file: "" + max_backups: 0 + max_size: 100 + max_age: 3 + compress: false + local_time: false + verbose: false +os: + group: "" + user: "" + rlimit_nofile: 0 +schema_version: 27 diff --git a/roles/stacks/composes/files/aptcacherng/conf/aptcacherng/conf/acng.conf b/roles/stacks/composes/files/aptcacherng/conf/aptcacherng/conf/acng.conf new file mode 100644 index 0000000..b2a0ec4 --- /dev/null +++ b/roles/stacks/composes/files/aptcacherng/conf/aptcacherng/conf/acng.conf @@ -0,0 +1,585 @@ +# 2023-09-25 +# +# IMPORTANT NOTE: +# +# THIS FILE IS MAYBE JUST ONE OF MANY CONFIGURATION FILES IN THIS DIRECTORY. +# SETTINGS MADE IN OTHER FILES CAN OVERRIDE VALUES THAT YOU CHANGE HERE. GO +# LOOK FOR OTHER CONFIGURATION FILES! CHECK THE MANUAL AND INSTALLATION NOTES +# (like README.Debian) FOR MORE DETAILS! +# + +# This is a configuration file for apt-cacher-ng, a smart caching proxy for +# software package downloads. It's supposed to be in a directory specified by +# the -c option of apt-cacher-ng, see apt-cacher-ng(8) for details. +# RULES: +# - letter case in variable names does not matter +# - names and values are separated by colon or equals sign +# - for boolean variables, zero means false, non-zero means true +# - "default value" means built-in (!) defaults, i.e. something which the +# program uses if the option is not set here or in other config files. +# That value might be explicitly mentioned in the description. Where it is +# not, there is no reason to assume any of the examples to be the default +# value! In doubt, use acngtool to query the value of the particular variable. + +# Storage directory for downloaded data and related maintenance activity. +# +# Note: When the value for CacheDir is changed, change the file +# /lib/systemd/system/apt-cacher-ng.service too +# +CacheDir: /var/cache/apt-cacher-ng + +# Log file directory, can be set empty to disable logging +# +LogDir: /var/log/apt-cacher-ng + +# A place to look for additional configuration and resource files if they are not +# found in the configuration directory +# +SupportDir: /usr/lib/apt-cacher-ng + +# TCP server port for incoming http (or HTTP proxy) connections. +# Can be set to 9999 to emulate apt-proxy. Value of 0 turns off TCP server +# (SocketPath must be set in this case). +# +# Port:3142 + +# Addresses or hostnames to listen on. Multiple addresses must be separated by +# spaces. Each entry must be an exact local address which is associated with a +# local interface. DNS resolution is performed using getaddrinfo(3) for all +# available protocols (IPv4, IPv6, ...). Using a protocol specific format will +# create binding(s) only on protocol specific socket(s), e.g. 0.0.0.0 will +# listen only to IPv4. The endpoint can also be specified as host:port (or +# [ipv6-address]:port) which allows binding on non-standard ports (Port +# directive is ignored in this case). +# +# Default: listens on all interfaces and protocols +# +# BindAddress: localhost 192.168.7.254 publicNameOnMainInterface + +# The specification of another HTTP proxy which shall be used for downloads. +# It can include user name and password but see the manual for limitations. +# +# Default: uses direct connection +# +# Proxy: http://www-proxy.example.net:3128 +# Proxy: https://username:proxypassword@proxy.example.net:3129 + +# Repository remapping. See manual for details. +# In this example, some backends files might be generated during package +# installation using information collected on the system. +# Examples: +Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives +Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives +Remap-klxrep: file:kali_mirrors /kali ; file:backends_kali # Kali Linux Archives +Remap-cygwin: file:cygwin_mirrors /cygwin # ; file:backends_cygwin # incomplete, please create this file or specify preferred mirrors here +Remap-sfnet: file:sfnet_mirrors # ; file:backends_sfnet # incomplete, please create this file or specify preferred mirrors here +Remap-alxrep: file:archlx_mirrors /archlinux # ; file:backend_archlx # Arch Linux +Remap-fedora: file:fedora_mirrors # Fedora Linux +Remap-epel: file:epel_mirrors # Fedora EPEL +Remap-slrep: file:sl_mirrors # Scientific Linux +Remap-gentoo: file:gentoo_mirrors.gz /gentoo ; file:backends_gentoo # Gentoo Archives +Remap-secdeb: security.debian.org security.debian.org/debian-security deb.debian.org/debian-security /debian-security cdn-fastly.deb.debian.org/debian-security ; deb.debian.org/debian-security security.debian.org cdn-fastly.deb.debian.org/debian-security + +# Virtual page accessible in a web browser to see statistics and status +# information, i.e. under http://localhost:3142/acng-report.html +# NOTE: This option must be configured to run maintenance jobs (even when used +# via acngtool in cron scripts). The AdminAuth option can be used to restrict +# access to sensitive areas on that page. +# +# Default: not set, should be set by the system administrator +# +ReportPage: acng-report.html + +# Socket file for accessing through local UNIX socket instead of TCP/IP. Can be +# used with inetd (via bridge tool in.acng from apt-cacher-ng package), is also +# used internally for administrative purposes. +# +# Default: /run/apt-cacher-ng/socket +# +# SocketPath: /var/run/apt-cacher-ng/socket + +# If set to 1, makes log files be written to disk on every new line. Default +# is 0, buffers are flushed after the client disconnects. Technically, +# it's a convenience alias for the Debug option, see below for details. +# +# UnbufferLogs: 0 + +# Enables extended client information in log entries. When set to 0, only +# activity type, time and transfer sizes are logged. +# +# VerboseLog: 1 + +# Don't detach from the starting console. +# +ForeGround: 1 + +# Store the pid of the daemon process in the specified text file. +# Default: disabled +# +# PidFile: /var/run/apt-cacher-ng/pid + +# Forbid outgoing connections and work without an internet connection or +# respond with 503 error where it's not possible. +# +# Offlinemode: 0 + +# Forbid downloads from locations that are directly specified in the user +# request, i.e. all downloads must be processed by the preconfigured remapping +# backends (see above). +# +# ForceManaged: 0 + +# Days before considering an unreferenced file expired (to be deleted). +# WARNING: if the value is set too low and particular index files are not +# available for some days (mirror downtime) then there is a risk of removal of +# still useful package files. +# +ExThreshold: 4 + +# If set to true, the removal (i.e. response status 404) of remote +# volatile/index files is considered a hint to consider the local cached +# versions irrelevant and also expire them just like package files. This adds +# some risk of removing too much cache contents in cases where a middlebox +# reports bogus 404 codes. +# +# If false (0), a less sloppy algorithm is used to invalidate certain keyfiles +# first, which might subsequently expire the cache contents but much later or +# maybe never unless the administrator intervenes. +# +FollowIndexFileRemoval: 1 + +# If the expiration is run daily, it sometimes does not make much sense to do +# it because the expected changes (i.e. removal of expired files) don't justify +# the extra processing time or additional downloads for expiration operation +# itself. This discrepancy might be especially worse if the local client +# installations are small or are rarely updated but the daily changes of +# the remote archive metadata are heavy. +# +# The following option enables a possible trade-off: the expiration run is +# suppressed until a certain amount of data has been downloaded through +# apt-cacher-ng since the last expiration execution (which might indicate that +# packages were replaced with newer versions). +# +# The number can have a suffix (k,K,m,M for Kb,KiB,Mb,MiB) +# +# ExStartTradeOff: 500m + +# Stop expiration when a critical problem appears, issue like a failed update +# of an index file in the preparation step. +# +# WARNING: don't set this option to zero or empty without considering possible +# consequences like a sudden and complete cache data loss. +# +# ExAbortOnProblems: 1 + +# Number of failed nightly expiration runs which are considered acceptable and +# do not trigger an error notification to the admin (e.g. via daily cron job) +# before the (day) count is reached. Might be useful with whacky internet +# connections. +# +# Default: a guessed value, 1 if ExThreshold is 5 or more, 0 otherwise. +# +# ExSuppressAdminNotification: 1 + +# Modify file names to work around limitations of some file systems. +# WARNING: experimental feature, subject to change +# +# StupidFs: 0 + +# Experimental feature for apt-listbugs: pass-through SOAP requests and +# responses to/from bugs.debian.org. +# Default: guessed value, true unless ForceManaged is enabled +# +# ForwardBtsSoap: 1 + +# There is a small in-memory cache for DNS resolution data, expired by +# this timeout (in seconds). Internal caching is disabled if set to a value +# less than zero. +# +# DnsCacheSeconds: 1800 + +############################################################################### +# +# WARNING: don't modify thread and file matching parameters without a clear +# idea of what is happening behind the scene! +# +# Max. count of connection threads kept ready (for faster response in the +# future). Should be a sane value between 0 and average number of connections, +# and depend on the amount of spare RAM. +# MaxStandbyConThreads: 8 +# +# Hard limit of active thread count for incoming connections, i.e. operation +# is refused when this value is reached (below zero = unlimited). +# MaxConThreads: -1 +# +# Timeout for a forced disconnect in cases where a client connection is about +# to be closed but remote refuses to confirm the disconnect request. Setting +# this to a lower value mitigates the effects of resource starvation in case of +# a DOS attack but increases the risk of failing to flush the remaining portion +# of data. +# DisconnectTimeout: 15 + +# By default, if a remote suddenly reconnects, ACNG tries at least two times to +# redownload from the same or different location (if known). +# DlMaxRetries: 2 + +# Pigeonholing files (like static vs. volatile contents) is done by (extended) +# regular expressions. +# +# The following patterns are available for the purposes detailed, where +# the latter takes precedence over the former: +# - «PFilePattern» for static data that doesn't change silently on the server. +# - «VFilePattern» for volatile data that may change like every hour. Files +# that match both PFilePattern and VfilePattern will be treated as volatile. +# - Static data with file names that match VFilePattern may be overriden being +# treated as volatile by making it match the special static data pattern, +# «SPfilePattern». +# - «SVfilePattern» or the "special volatile data" pattern is for the +# convenience of specifying any exceptions to matches with SPfilePattern, +# for cases where data must still be treated as volatile. +# - «WfilePattern» specifies a "whitelist pattern" for the regular expiration +# job, telling it to keep the files even if they are not referenced by +# others, like crypto signatures with which clients begin their downloads. +# +# There are two versions. The pattern variables mentioned above should not be +# set without good reason, because they would override the built-in defaults +# (that might impact updates to future versions of apt-cacher-ng). There are +# also versions of those patterns ending with Ex, which may be modified by the +# local administrator. They are evaluated in addition to the regular patterns +# at runtime. +# +# To see examples of the expected syntax, run: apt-cacher-ng -p debug=1 +# +# PfilePatternEx: +# VfilePatternEx: +# SPfilePatternEx: +# SVfilePatternEx: +# WfilePatternEx: +# +############################################################################### + +# A bitmask type value declaring the loging verbosity and behavior of the error +# log writing. Non-zero value triggers at least faster log file flushing. +# +# Some higher bits only working with a special debug build of apt-cacher-ng, +# see the manual for details. +# +# WARNING: this can write significant amount of data into apt-cacher.err logfile. +# +# Default: 0 +# +# Debug:3 + +# Usually, general purpose proxies like Squid expose the IP address of the +# client user to the remote server using the X-Forwarded-For HTTP header. This +# behaviour can be optionally turned on with the Expose-Origin option. +# +# ExposeOrigin: 0 + +# When logging the originating IP address, trust the information supplied by +# the client in the X-Forwarded-For header. +# +# LogSubmittedOrigin: 0 + +# The version string reported to the peer, to be displayed as HTTP client (and +# version) in the logs of the mirror. +# +# WARNING: Expect side effects! Some archives use this header to guess +# capabilities of the client (i.e. allow redirection and/or https links) and +# change their behaviour accordingly but ACNG might not support the expected +# features. +# +# Default: +# +# UserAgent: Yet Another HTTP Client/1.2.3p4 + +# In some cases the Import and Expiration tasks might create fresh volatile +# data for internal use by reconstructing them using patch files. This +# by-product might be recompressed with bzip2 and with some luck the resulting +# file becomes identical to the *.bz2 file on the server which can be used by +# APT when requesting a complete version of this file. +# The downside of this feature is higher CPU load on the server during +# the maintenance tasks, and the outcome might have not much value in a LAN +# where all clients update their data often and regularly and therefore usually +# don't need the full version of the index file. +# +# RecompBz2: 0 + +# Network timeout for outgoing connections, in seconds. +# +# NetworkTimeout: 40 + +# Fast fallback timeout, in seconds. This is the time to wait before +# alternative target addresses for a client connection are tried, which can be +# usefull for quick fallback to IPv4 in case of whacky IPv6 configuration. +# +# FastTimeout = 4 + +# Sometimes it makes sense to not store the data in cache and just return the +# package data to client while it comes in. The following DontCache* parameters +# can enable this behaviour for certain URL types. The tokens are extended +# regular expressions which the URLs are evaluated against. +# +# DontCacheRequested is applied to the URL as it comes in from the client. +# Example: exclude packages built with kernel-package for x86 +# DontCacheRequested: linux-.*_10\...\.Custo._i386 +# Example usecase: exclude popular private IP ranges from caching +# DontCacheRequested: 192.168.0 ^10\..* 172.30 +# +# DontCacheResolved is applied to URLs after mapping to the target server. If +# multiple backend servers are specified then it's only matched against the +# download link for the FIRST possible source (due to implementation limits). +# +# Example usecase: all Ubuntu stuff comes from a local mirror (specified as +# backend), don't cache it again: +# DontCacheResolved: ubuntumirror.local.net +# +# DontCache directive sets (overrides) both, DontCacheResolved and +# DontCacheRequested. Provided for convenience, see those directives for +# details. +# +# Example: +# DontCache: .*.local.university.int + +# Default permission set of freshly created files and directories, as octal +# numbers (see chmod(1) for details). +# Can by limited by the umask value (see umask(2) for details) if it's set in +# the environment of the starting shell, e.g. in apt-cacher-ng init script or +# in its configuration file. +# +# DirPerms: 00755 +# FilePerms: 00664 + +# It's possible to use use apt-cacher-ng as a regular web server with a limited +# feature set, i.e. directory browsing, downloads of any files, Content-Type +# based on /etc/mime.types, but without sorting, CGI execution, index page +# redirection and other funny things. +# To get this behavior, mappings between virtual directories and real +# directories on the server must be defined with the LocalDirs directive. +# Virtual and real directories are separated by spaces, multiple pairs are +# separated by semi-colons. Real directories must be absolute paths. +# NOTE: Since the names of that key directories share the same namespace as +# repository names (see Remap-...) it is administrator's job to avoid conflicts +# between them or explicitly create them. +# +# LocalDirs: woo /data/debarchive/woody ; hamm /data/debarchive/hamm +LocalDirs: acng-doc /usr/share/doc/apt-cacher-ng + +# Precache a set of files referenced by specified index files. This can be used +# to create a partial mirror usable for offline work. There are certain limits +# and restrictions on the path specification, see manual and the cache control +# web site for details. A list of (maybe) relevant index files could be +# retrieved via "apt-get --print-uris update" on a client machine. +# +# Example: +# PrecacheFor: debrep/dists/unstable/*/source/Sources* debrep/dists/unstable/*/binary-amd64/Packages* +PrecacheFor: {secdeb,debrep}//{Packages,InRelease,Packages.xz,Translation,Commands}* + +# Arbitrary set of data to append to request headers sent over the wire. Should +# be a well formated HTTP headers part including newlines (DOS style) which +# can be entered as escape sequences (\r\n). +# +# RequestAppendix: X-Tracking-Choice: do-not-track\r\n + +# Specifies the IP protocol families to use for remote connections. Order does +# matter, first specified are considered first. Possible combinations: +# v6 v4 +# v4 v6 +# v6 +# v4 +# Default: use native order of the system's TCP/IP stack, influenced by the +# BindAddress value. +# +# ConnectProto: v6 v4 + +# Regular expiration algorithm finds package files which are no longer listed +# in any index file and removes them of them after a safety period. +# This option allows to keep more versions of a package in the cache after +# the safety period is over. +# +# KeepExtraVersions: 0 + +# Optionally uses TCP access control provided by libwrap, see hosts_access(5) +# for details. Daemon name is apt-cacher-ng. +# +# Default: guessed on startup by looking for explicit mention of apt-cacher-ng +# in /etc/hosts.allow or /etc/hosts.deny files. +# +# UseWrap: 0 + +# If many machines from the same local network attempt to update index files +# (apt-get update) at nearly the same time, the known state of these index file +# is temporarily frozen and multiple requests receive the cached response +# without contacting the remote server again. This parameter (in seconds) +# specifies the length of this period before these (volatile) files are +# considered outdated. +# Setting this value too low transfers more data and increases remote server +# load, setting this too high (more than a couple of minutes) increases the +# risk of delivering inconsistent responses to the clients. +# +# FreshIndexMaxAge: 27 + +# Usually the users are not allowed to specify custom TCP ports of remote +# mirrors in the requests, only the default HTTP port can be used (as +# workaround, proxy administrator can create Remap- rules with custom ports). +# This restriction can be disabled by specifying a list of allowed ports or 0 +# for any port. +# +# AllowUserPorts: 80 + +# Normally the HTTP redirection responses are forwarded to the original caller +# (i.e. APT) which starts a new download attempt from the new URL. This +# solution is ok for client configurations with proxy mode but doesn't work +# well with configurations using URL prefixes in sources.list. To work around +# this the server can restart its own download with a redirection URL, +# configured with the following option. The downside is that this might be used +# to circumvent download source policies by malicious users. +# The RedirMax option specifies how many such redirects the server is allowed +# to follow per request, 0 disables the internal redirection. +# Default: guessed on startup, 0 if ForceManaged is used and 5 otherwise. +# +# RedirMax: 5 + +# There some broken HTTP servers and proxy servers in the wild which don't +# support the If-Range header correctly and return incorrect data when the +# contents of a (volatile) file changed. This also applies to incomplete +# resumed downloads. Setting VfileUseRangeOps to 0 disables Range-based +# requests (using purely If-Modified-Since and requesting the complete file +# instead, if changed). Setting it to a negative value removes even this check +# and means fetching the whole file from the beginning. +# +# VfileUseRangeOps: 1 + +# Allow data pass-through mode for certain hosts when requested by the client +# using a CONNECT request. This is particularly useful to allow access to SSL +# sites (https proxying). The string is a regular expression which should cover +# the server name with port and must be correctly formated and terminated. +# Examples: +# PassThroughPattern: private-ppa\.launchpad\.net:443$ +PassThroughPattern: .* # +# +# Default: ^(bugs\.debian\.org|changelogs\.ubuntu\.com):443$ +# PassThroughPattern: ^(bugs\.debian\.org|changelogs\.ubuntu\.com):443$ + +# Interval an overaged local cache item (i.e. active file descriptor) can be +# considered broken so that a new forced download can be started. Such +# situation can happen when a very slow clients keeps a hot cache item active +# for extended amounts of time so that even the remote freshness checks +# intervals might become overrun. +# +# Default time is based on the value of FreshIndexMaxAge with a safety factor. +# +# ResponseFreezeDetectTime: 60 + +# Keep outgoing connections alive and reuse them for later downloads from +# the same server as long as possible. +# +# ReuseConnections: 1 + +# Maximum number of requests sent in a batch to remote servers before the first +# response is expected. Using higher values can greatly improve average +# throughput depending on network latency and the implementation of remote +# servers. Makes most sense when also enabled on the client side, see apt.conf +# documentation for details. +# +# Default: 10 if ReuseConnections is set, 1 otherwise +# +# PipelineDepth: 10 + +# Path to the system directory containing trusted CA certificates used for +# outgoing connections, see OpenSSL documentation for details. +# +# CApath: /etc/ssl/certs +# +# Path to a single trusted trusted CA certificate used for outgoing +# connections, see OpenSSL documentation for details. +# +# CAfile: + +# There are different ways to detect that an upstream proxy is broken and turn +# off its use and connect directly. The first is through a custom command - +# when it returns successfully, the proxy is used, otherwise not and the +# command will be rerun only after a specified period. +# Another way is to try to connect to the proxy first and detect a connection +# timeout. The connection will then be made without HTTP proxy for the life +# time of the particular download stream and it may also affect other other +# parallel downloads. +# NOTE: this operation modes are still experimental and are subject to change! +# Unwanted side effects may occur with multiple simultaneous user connections +# or with specific per-repository proxy settings. +# +# Shell command, default: not set. Executed with the default shell and +# permissions of the apt-cacher-ng's process user. Examples: +# /bin/ip route | grep -q 192.168.117 +# /usr/sbin/arp | grep -q 00:22:1f:51:8e:c1 +# +# OptProxyCheckCommand: ... +# +# Check intervall, in seconds. +# +# OptProxyCheckInterval: 99 +# +# Conection timeout in seconds, default: negative, means disabled. +# +# OptProxyTimeout: -1 + +# It's possible to limit the processing speed of download agents to set an +# overall download speed limit. Unit: KiB/s, Default: unlimited. +# +# MaxDlSpeed: 500 + +# In special corner cases, download clients attempt to download random chunks +# of a files headers, i.e. the first kilobytes. The "don't get client stuck" +# policy converts this usually to a 200 response starting the body from the +# beginning but that confuses some clients. When this option is set to a +# certain value, this modifies the behaviour and allows to start a file +# download where the distance between available data and the specified range +# lies within that bounds. This can look like random lag for the user but +# should be harmless apart from that. +# +# MaxInresponsiveDlSize: 64000 + +# In mobile environments having an adhoc connection with a redirection to some +# id verification side, this redirect might damage the cache since the data is +# involuntarily stored as package data. There is a mechanism which attempts to +# detect a such situation and mitigate the mentioned effects by not storing the +# data and also dropping the DNS cache. The trigger is the occurrence of a +# specific SUBSTRING in the content type field of the final download target +# (i.e. the auth web site) and at least one followed redirection. +# +# BadRedirDetectMime: text/html + +# When a BUS signal is received (typically on IO errors), a shell command can be +# executed before the daemon is terminated. +# Example: +# BusAction: ls -l /proc/$PPID/ | mail -s SIGBUS! root + +# Only set this value for debugging purposes. It disables SSL security checks +# like strict host verification. 0 means no, any other value can have +# differrent meaning in the future. +# +# NoSSLChecks: 0 + +# Setting this value means: on file downloads from/via cache, tag relevant +# files. And when acngtool runs the shrink command, it will look at the day +# when the file was retrieved from cache last time (and not when it was +# originally downloaded). +# +# TrackFileUse: 0 + +# Controls preallocation of file system space where this feature is supported. +# This might reduce disk fragmentation and therefore improve later read +# performance. However, write performance can be reduced which could be +# exploited by malicious users. +# The value defines a size limit of how much to report to the OS as expected +# file size (starting from the beginning of the file). +# Set to zero to disable this feature completely. Default: one megabyte +# +# ReserveSpace: 1048576 + +# PermitCacheControl will allow users to specify a few hints for processing +# of a request, for example bypassing the local cache (see +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control for +# no-cache, no-store). +# +# PermitCacheControl: no-cache, no-store diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/css/index.html b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/css/index.html new file mode 100644 index 0000000..e69de29 diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/css/main.css b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/css/main.css new file mode 100644 index 0000000..47b4c25 --- /dev/null +++ b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/css/main.css @@ -0,0 +1,10 @@ +body{ + height: 100vh; + background: #5a6373; +} + +.special { + background: #7a2a21; + color: #fff; + text-align: center; +} diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/img/404.webp b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/img/404.webp new file mode 100644 index 0000000..5bae8bf Binary files /dev/null and b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/img/404.webp differ diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/img/index.html b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/img/index.html new file mode 100644 index 0000000..e69de29 diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/index.html b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/assets/index.html new file mode 100644 index 0000000..e69de29 diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/error.html b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/error.html new file mode 100644 index 0000000..4005f92 --- /dev/null +++ b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/error.html @@ -0,0 +1,25 @@ + + + + + + Zogg Downloads + + + + +
+
+
+

Oops, une erreur !

+

Allez de l'avant !

+
+ Not found +
+
+
+ + + diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/favicon.ico b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/favicon.ico new file mode 100644 index 0000000..6189ab5 Binary files /dev/null and b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/favicon.ico differ diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/files/index.html b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/files/index.html new file mode 100644 index 0000000..e69de29 diff --git a/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/index.html b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/index.html new file mode 100644 index 0000000..53ce5d5 --- /dev/null +++ b/roles/stacks/composes/files/dl/datas/dl-nginx/datas/html/index.html @@ -0,0 +1,22 @@ + + + + + + Zogg Downloads + + + + +
+
+

Bienvenue !

+
+

Sur la zone de téléchargement de Zogg!

+
+
+ + + diff --git a/roles/stacks/composes/files/dl/templates/dl-nginx/templates/dl-nginx/default_conf.j2 b/roles/stacks/composes/files/dl/templates/dl-nginx/templates/dl-nginx/default_conf.j2 new file mode 100644 index 0000000..8cf7e63 --- /dev/null +++ b/roles/stacks/composes/files/dl/templates/dl-nginx/templates/dl-nginx/default_conf.j2 @@ -0,0 +1,69 @@ +# {{ ansible_managed }} +# master: {{ stacks_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +server { + server_name {{ vm_subdomain_dl }}.{{ vm_internet_domain}}; + listen 80; + listen [::]:80; + + root /usr/share/nginx/html; + index index.php index.html index.htm; + try_files $uri $uri/ /index.php?$query_string; + + #error_log /dev/stdout warn; + #access_log /dev/stdout; + + error_page 404 500 501 /error.html; + + location / { + expires 1d; + add_header Cache-Control "public"; + } + + location = /favicon.ico { + access_log off; + log_not_found off; + } + + location = /robots.txt { + access_log off; + log_not_found off; + } + + location ~ /\.ht { + access_log off; + log_not_found off; + deny all; + } + + location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { + return 403; + } + location ~* /(system|vendor)/.*\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { + return 403; + } + location ~* /user/.*\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { + return 403; + } + location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { + return 403; + } + + location ~ .php$ { + root /usr/share/nginx/html; + fastcgi_pass dl-phpfpm:9000; + fastcgi_index index.php; + try_files $uri =404; + fastcgi_split_path_info ^(.+.php)(/.+)$; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_buffer_size 128k; + fastcgi_buffers 256 16k; + fastcgi_busy_buffers_size 256k; + fastcgi_temp_file_write_size 256k; + fastcgi_intercept_errors on; + include fastcgi_params; + } +} diff --git a/roles/stacks/composes/files/hastebin/templates/hastebin/templates/hastebin/config_js.j2 b/roles/stacks/composes/files/hastebin/templates/hastebin/templates/hastebin/config_js.j2 new file mode 100644 index 0000000..1f79827 --- /dev/null +++ b/roles/stacks/composes/files/hastebin/templates/hastebin/templates/hastebin/config_js.j2 @@ -0,0 +1,29 @@ +{ + "host": "0.0.0.0", + "port": 7777, + "keyLength": 10, + "maxLength": 400000, + "staticMaxAge": 86400, + "recompressStaticAssets": true, + "logging": [ + { + "level": "verbose", + "type": "Console", + "colorize": false + } + ], + "keyGenerator": { + "type": "phonetic" + }, + "storage": { + "type": "redis", + "path": "./data", + "host": "{{ vm_master_name }}.{{ vm_local_domain }}", + "port": {{ vm_port_redis }}, + "db": 2, + "expire": 2592000 + }, + "documents": { + "about": "./about.md" + } +} diff --git a/roles/stacks/composes/files/homepage/conf/homepage/conf/kubernetes.yaml b/roles/stacks/composes/files/homepage/conf/homepage/conf/kubernetes.yaml new file mode 100644 index 0000000..0fee715 --- /dev/null +++ b/roles/stacks/composes/files/homepage/conf/homepage/conf/kubernetes.yaml @@ -0,0 +1,4 @@ +# 2023-09-25 +--- + +# sample kubernetes config diff --git a/roles/stacks/composes/files/homepage/conf/homepage/conf/settings.yaml b/roles/stacks/composes/files/homepage/conf/homepage/conf/settings.yaml new file mode 100644 index 0000000..edfdc86 --- /dev/null +++ b/roles/stacks/composes/files/homepage/conf/homepage/conf/settings.yaml @@ -0,0 +1,11 @@ +# 2023-09-25 +--- + +# For configuration options and examples, please see: +# https://github.com/benphelps/homepage/wiki/Settings + +headerStyle: boxed +language: fr +title: Homelab +favicon: /images/favicon.png +hideVersion: true diff --git a/roles/stacks/composes/files/homepage/conf/homepage/conf/widgets.yaml b/roles/stacks/composes/files/homepage/conf/homepage/conf/widgets.yaml new file mode 100644 index 0000000..22ef807 --- /dev/null +++ b/roles/stacks/composes/files/homepage/conf/homepage/conf/widgets.yaml @@ -0,0 +1,9 @@ +# 2023-09-25 + +# For configuration options and examples, please see: +# https://github.com/benphelps/homepage/wiki/Information-Widgets + +- resources: + cpu: true + memory: true + disk: false diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/dashboard-icons-main/link.txt b/roles/stacks/composes/files/homepage/datas/homepage/datas/dashboard-icons-main/link.txt new file mode 100644 index 0000000..c4527c7 --- /dev/null +++ b/roles/stacks/composes/files/homepage/datas/homepage/datas/dashboard-icons-main/link.txt @@ -0,0 +1 @@ +https://github.com/walkxcode/dashboard-icons diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/3cx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/3cx.png new file mode 100644 index 0000000..132c7a8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/3cx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/act.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/act.png new file mode 100644 index 0000000..142238d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/act.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/actual.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/actual.png new file mode 100644 index 0000000..a3edc9d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/actual.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adblock.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adblock.png new file mode 100644 index 0000000..869112e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adblock.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adguard-home.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adguard-home.png new file mode 100644 index 0000000..94da44c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adguard-home.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adminer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adminer.png new file mode 100644 index 0000000..65b3aab Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adminer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adsbexchange.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adsbexchange.png new file mode 100644 index 0000000..2efa3ac Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/adsbexchange.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/airsonic.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/airsonic.png new file mode 100644 index 0000000..694b7e5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/airsonic.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/airtel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/airtel.png new file mode 100644 index 0000000..651c9cc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/airtel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alarmpi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alarmpi.png new file mode 100644 index 0000000..5369847 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alarmpi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/albertheijn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/albertheijn.png new file mode 100644 index 0000000..3bddc2c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/albertheijn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alertmanager.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alertmanager.png new file mode 100644 index 0000000..c83eebd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alertmanager.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/algovpn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/algovpn.png new file mode 100644 index 0000000..1ecec27 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/algovpn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alltube.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alltube.png new file mode 100644 index 0000000..b1f75be Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alltube.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alma.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alma.png new file mode 100644 index 0000000..29a9c10 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alma.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/almalinux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/almalinux.png new file mode 100644 index 0000000..e9b3554 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/almalinux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alpine-linux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alpine-linux.png new file mode 100644 index 0000000..e5b82d9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alpine-linux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alpine.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alpine.png new file mode 100644 index 0000000..58c95fd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/alpine.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amazon-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amazon-light.png new file mode 100644 index 0000000..18ec7a4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amazon-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amazon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amazon.png new file mode 100644 index 0000000..59f9691 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amazon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amcrest-cloud.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amcrest-cloud.png new file mode 100644 index 0000000..0344536 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amcrest-cloud.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amcrest.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amcrest.png new file mode 100644 index 0000000..937ba95 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amcrest.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amd-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amd-light.png new file mode 100644 index 0000000..1c6640c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amd-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amd.png new file mode 100644 index 0000000..d93aca3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amp.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amp.png new file mode 100644 index 0000000..ff93038 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amp.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ampache.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ampache.png new file mode 100644 index 0000000..c3b5c32 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ampache.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amvd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amvd.png new file mode 100644 index 0000000..693fdaa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/amvd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-auto.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-auto.png new file mode 100644 index 0000000..66d59b1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-auto.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-light.png new file mode 100644 index 0000000..a9ddd08 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-robot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-robot.png new file mode 100644 index 0000000..ff8d9ba Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android-robot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android.png new file mode 100644 index 0000000..f5b28d9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/android.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/anonaddy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/anonaddy.png new file mode 100644 index 0000000..a234051 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/anonaddy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ansible.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ansible.png new file mode 100644 index 0000000..2125d4b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ansible.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-cassandra.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-cassandra.png new file mode 100644 index 0000000..b9e3e0e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-cassandra.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-druid.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-druid.png new file mode 100644 index 0000000..d55bdd5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-druid.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-openoffice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-openoffice.png new file mode 100644 index 0000000..f1b680e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-openoffice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-solr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-solr.png new file mode 100644 index 0000000..f80bf6b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-solr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-subversion.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-subversion.png new file mode 100644 index 0000000..4ee2e4e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-subversion.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-tomcat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-tomcat.png new file mode 100644 index 0000000..371b2d6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache-tomcat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache.png new file mode 100644 index 0000000..c92ec79 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apache.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apc.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apc.png new file mode 100644 index 0000000..b3b57ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apc.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/appdaemon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/appdaemon.png new file mode 100644 index 0000000..b06b43a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/appdaemon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apple-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apple-alt.png new file mode 100644 index 0000000..925d62d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apple-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apple.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apple.png new file mode 100644 index 0000000..357ae32 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apple.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apprise.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apprise.png new file mode 100644 index 0000000..9ce06e6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/apprise.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arch.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arch.png new file mode 100644 index 0000000..369d1c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arch.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archisteamfarm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archisteamfarm.png new file mode 100644 index 0000000..9fff4b0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archisteamfarm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archivebox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archivebox.png new file mode 100644 index 0000000..039a67b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archivebox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archiveteamwarrior.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archiveteamwarrior.png new file mode 100644 index 0000000..5676471 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archiveteamwarrior.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archlinux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archlinux.png new file mode 100644 index 0000000..b27e01a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/archlinux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arduino.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arduino.png new file mode 100644 index 0000000..d519743 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arduino.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arggocd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arggocd.png new file mode 100644 index 0000000..9ad30d3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arggocd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/argocd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/argocd.png new file mode 100644 index 0000000..46a00a8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/argocd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ariang.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ariang.png new file mode 100644 index 0000000..56ecb15 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ariang.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arm.png new file mode 100644 index 0000000..faaf28b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arris-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arris-light.png new file mode 100644 index 0000000..561199f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arris-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arris.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arris.png new file mode 100644 index 0000000..d08a939 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/arris.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/artifactory.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/artifactory.png new file mode 100644 index 0000000..09c8588 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/artifactory.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asana.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asana.png new file mode 100644 index 0000000..2e285ca Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asana.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asrockrackipmi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asrockrackipmi.png new file mode 100644 index 0000000..b021063 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asrockrackipmi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/assetgrid.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/assetgrid.png new file mode 100644 index 0000000..5f33f1d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/assetgrid.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asterisk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asterisk.png new file mode 100644 index 0000000..16344f2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asterisk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-light.png new file mode 100644 index 0000000..9b8d471 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-rog.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-rog.png new file mode 100644 index 0000000..b89c170 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-rog.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-router.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-router.png new file mode 100644 index 0000000..e63d991 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus-router.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus.png new file mode 100644 index 0000000..4acd355 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/asus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/at-t.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/at-t.png new file mode 100644 index 0000000..d104dee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/at-t.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-bamboo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-bamboo.png new file mode 100644 index 0000000..2f05eea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-bamboo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-confluence.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-confluence.png new file mode 100644 index 0000000..1211380 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-confluence.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-jira.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-jira.png new file mode 100644 index 0000000..df8bfc2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-jira.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-opsgenie.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-opsgenie.png new file mode 100644 index 0000000..9fdccdc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-opsgenie.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-trello.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-trello.png new file mode 100644 index 0000000..c32dc78 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian-trello.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian.png new file mode 100644 index 0000000..464c27c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/atlassian.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/audacity.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/audacity.png new file mode 100644 index 0000000..483b3bc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/audacity.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/audiobookshelf.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/audiobookshelf.png new file mode 100644 index 0000000..932713c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/audiobookshelf.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/auracast.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/auracast.png new file mode 100644 index 0000000..adf1314 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/auracast.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authelia.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authelia.png new file mode 100644 index 0000000..b5db391 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authelia.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik-light.png new file mode 100644 index 0000000..7329997 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik-orange.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik-orange.png new file mode 100644 index 0000000..6859614 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik-orange.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik.png new file mode 100644 index 0000000..0b82f31 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/authentik.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/autobrr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/autobrr.png new file mode 100644 index 0000000..1f01f43 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/autobrr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/avmfritzbox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/avmfritzbox.png new file mode 100644 index 0000000..8bc6b58 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/avmfritzbox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/aws-ecs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/aws-ecs.png new file mode 100644 index 0000000..c88d325 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/aws-ecs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/aws.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/aws.png new file mode 100644 index 0000000..064471e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/aws.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/awx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/awx.png new file mode 100644 index 0000000..62ce439 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/awx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/axis.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/axis.png new file mode 100644 index 0000000..89758bf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/axis.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azuracast.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azuracast.png new file mode 100644 index 0000000..a9e3c9f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azuracast.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-container-instances.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-container-instances.png new file mode 100644 index 0000000..2648a3b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-container-instances.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-container-service.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-container-service.png new file mode 100644 index 0000000..6be892b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-container-service.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-dns.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-dns.png new file mode 100644 index 0000000..ec37051 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure-dns.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure.png new file mode 100644 index 0000000..7efce5d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azure.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azuredns.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azuredns.png new file mode 100644 index 0000000..3754ef8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/azuredns.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/babybuddy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/babybuddy.png new file mode 100644 index 0000000..2518909 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/babybuddy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/backblaze.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/backblaze.png new file mode 100644 index 0000000..c893bc4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/backblaze.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bacula.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bacula.png new file mode 100644 index 0000000..cb64484 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bacula.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/badge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/badge.png new file mode 100644 index 0000000..287c5ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/badge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/baikal.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/baikal.png new file mode 100644 index 0000000..5eac889 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/baikal.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/barcodebuddy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/barcodebuddy.png new file mode 100644 index 0000000..3bb572b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/barcodebuddy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/baserow.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/baserow.png new file mode 100644 index 0000000..2b7a800 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/baserow.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/basilisk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/basilisk.png new file mode 100644 index 0000000..00df523 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/basilisk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bastillion.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bastillion.png new file mode 100644 index 0000000..4ef96cd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bastillion.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bazarr-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bazarr-light.png new file mode 100644 index 0000000..28ef313 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bazarr-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bazarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bazarr.png new file mode 100644 index 0000000..e00ba3b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bazarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beats.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beats.png new file mode 100644 index 0000000..ba6f115 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beats.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beef-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beef-light.png new file mode 100644 index 0000000..cc64992 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beef-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beef.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beef.png new file mode 100644 index 0000000..1e161ef Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beef.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beets.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beets.png new file mode 100644 index 0000000..08194e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/beets.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/benotes.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/benotes.png new file mode 100644 index 0000000..9212ce7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/benotes.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/betanin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/betanin.png new file mode 100644 index 0000000..fd90115 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/betanin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bible-gateway.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bible-gateway.png new file mode 100644 index 0000000..0cb9770 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bible-gateway.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bibliogram.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bibliogram.png new file mode 100644 index 0000000..174ee10 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bibliogram.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/biedronka.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/biedronka.png new file mode 100644 index 0000000..946e632 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/biedronka.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bing.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bing.png new file mode 100644 index 0000000..3140e1a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bing.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/birdnet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/birdnet.png new file mode 100644 index 0000000..f5d83ba Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/birdnet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bitcoin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bitcoin.png new file mode 100644 index 0000000..1b0cb09 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bitcoin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bithumen.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bithumen.png new file mode 100644 index 0000000..26678e2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bithumen.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bitwarden.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bitwarden.png new file mode 100644 index 0000000..5cb9c92 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bitwarden.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blocky.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blocky.png new file mode 100644 index 0000000..09275f4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blocky.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blogger.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blogger.png new file mode 100644 index 0000000..86e07da Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blogger.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blue-iris.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blue-iris.png new file mode 100644 index 0000000..bc953f0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/blue-iris.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bluetooth.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bluetooth.png new file mode 100644 index 0000000..c99d1e7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bluetooth.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bluewallet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bluewallet.png new file mode 100644 index 0000000..45b5df6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bluewallet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bobcat-miner.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bobcat-miner.png new file mode 100644 index 0000000..f4e832b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bobcat-miner.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/booksonic.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/booksonic.png new file mode 100644 index 0000000..8b29966 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/booksonic.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bookstack.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bookstack.png new file mode 100644 index 0000000..2610655 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bookstack.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bootstrap.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bootstrap.png new file mode 100644 index 0000000..3145a08 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/bootstrap.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/borg.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/borg.png new file mode 100644 index 0000000..f7e146b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/borg.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/borgbackup.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/borgbackup.png new file mode 100644 index 0000000..f7e146b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/borgbackup.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/boundary.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/boundary.png new file mode 100644 index 0000000..501d167 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/boundary.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/box.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/box.png new file mode 100644 index 0000000..aaa7996 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/box.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brave-dev.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brave-dev.png new file mode 100644 index 0000000..612cd8d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brave-dev.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brave.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brave.png new file mode 100644 index 0000000..790a371 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brave.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brewpi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brewpi.png new file mode 100644 index 0000000..d90c47c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brewpi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brillcam.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brillcam.png new file mode 100644 index 0000000..0768af4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brillcam.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brocade.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brocade.png new file mode 100644 index 0000000..c8cb6d0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brocade.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brother.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brother.png new file mode 100644 index 0000000..76f97cd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/brother.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browserless-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browserless-light.png new file mode 100644 index 0000000..f93632d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browserless-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browserless.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browserless.png new file mode 100644 index 0000000..2ba6c7a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browserless.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browsh.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browsh.png new file mode 100644 index 0000000..a95a80c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/browsh.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/btcpay-server.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/btcpay-server.png new file mode 100644 index 0000000..214ae40 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/btcpay-server.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buddy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buddy.png new file mode 100644 index 0000000..5902cf5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buddy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budget-zero.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budget-zero.png new file mode 100644 index 0000000..6c6e3d7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budget-zero.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budibase-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budibase-light.png new file mode 100644 index 0000000..85b2b78 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budibase-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budibase.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budibase.png new file mode 100644 index 0000000..9b84e32 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/budibase.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buffalo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buffalo.png new file mode 100644 index 0000000..24228f7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buffalo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buxfer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buxfer.png new file mode 100644 index 0000000..eea9d04 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/buxfer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/c.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/c.png new file mode 100644 index 0000000..99516d3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/c.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cabot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cabot.png new file mode 100644 index 0000000..5bb16fe Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cabot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cacti.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cacti.png new file mode 100644 index 0000000..2731dc0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cacti.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/caddy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/caddy.png new file mode 100644 index 0000000..796366c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/caddy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cadvisor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cadvisor.png new file mode 100644 index 0000000..60fb9b5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cadvisor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calckey.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calckey.png new file mode 100644 index 0000000..f30ce27 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calckey.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibre-web.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibre-web.png new file mode 100644 index 0000000..d1fdf4c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibre-web.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibre.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibre.png new file mode 100644 index 0000000..a4fa7b3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibre.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibreweb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibreweb.png new file mode 100644 index 0000000..a8424ee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/calibreweb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/camera-ui.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/camera-ui.png new file mode 100644 index 0000000..6dfaf18 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/camera-ui.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/canonical.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/canonical.png new file mode 100644 index 0000000..0682f2a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/canonical.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cardigann-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cardigann-light.png new file mode 100644 index 0000000..b84f392 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cardigann-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cardigann.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cardigann.png new file mode 100644 index 0000000..0ced4e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cardigann.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/carrefour.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/carrefour.png new file mode 100644 index 0000000..ee2fc72 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/carrefour.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/castopod.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/castopod.png new file mode 100644 index 0000000..b3c1b72 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/castopod.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cc-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cc-light.png new file mode 100644 index 0000000..95dcc45 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cc-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cc.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cc.png new file mode 100644 index 0000000..e84b28d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cc.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/centos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/centos.png new file mode 100644 index 0000000..aafc189 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/centos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ceph.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ceph.png new file mode 100644 index 0000000..9abc6f6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ceph.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cert-manager.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cert-manager.png new file mode 100644 index 0000000..8a0a17c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cert-manager.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetection-io-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetection-io-alt.png new file mode 100644 index 0000000..534a9c8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetection-io-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetection-io.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetection-io.png new file mode 100644 index 0000000..ec9771f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetection-io.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetectionio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetectionio.png new file mode 100644 index 0000000..ea99b3b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/changedetectionio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/channels.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/channels.png new file mode 100644 index 0000000..959ba80 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/channels.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chatgpt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chatgpt.png new file mode 100644 index 0000000..9465101 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chatgpt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/checkmk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/checkmk.png new file mode 100644 index 0000000..64e80d0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/checkmk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cherry.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cherry.png new file mode 100644 index 0000000..d06020d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cherry.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chevereto.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chevereto.png new file mode 100644 index 0000000..cbc0240 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chevereto.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chiefonboarding.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chiefonboarding.png new file mode 100644 index 0000000..cb69cea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chiefonboarding.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chowdown.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chowdown.png new file mode 100644 index 0000000..201c24b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chowdown.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-beta.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-beta.png new file mode 100644 index 0000000..474b5b2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-beta.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-canary.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-canary.png new file mode 100644 index 0000000..8135d07 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-canary.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-dev.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-dev.png new file mode 100644 index 0000000..eb281ed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-dev.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-devtools.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-devtools.png new file mode 100644 index 0000000..587e529 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-devtools.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-remote-desktop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-remote-desktop.png new file mode 100644 index 0000000..ae0634d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome-remote-desktop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome.png new file mode 100644 index 0000000..7cf58e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chrome.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromecast-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromecast-light.png new file mode 100644 index 0000000..399c454 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromecast-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromecast.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromecast.png new file mode 100644 index 0000000..f2d507c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromecast.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromium.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromium.png new file mode 100644 index 0000000..1a2c899 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chromium.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chronograf.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chronograf.png new file mode 100644 index 0000000..fecc9ee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/chronograf.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cilium.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cilium.png new file mode 100644 index 0000000..4cf581f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cilium.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cinny-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cinny-light.png new file mode 100644 index 0000000..85c5ff8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cinny-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cinny.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cinny.png new file mode 100644 index 0000000..45f37a0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cinny.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cisco.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cisco.png new file mode 100644 index 0000000..4d8ecef Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cisco.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/clash.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/clash.png new file mode 100644 index 0000000..c9f3284 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/clash.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/clashX.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/clashX.png new file mode 100644 index 0000000..c9f3284 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/clashX.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/closed-captioning-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/closed-captioning-light.png new file mode 100644 index 0000000..95dcc45 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/closed-captioning-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/closed-captioning.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/closed-captioning.png new file mode 100644 index 0000000..e84b28d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/closed-captioning.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloud66.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloud66.png new file mode 100644 index 0000000..2800dd2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloud66.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloud9.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloud9.png new file mode 100644 index 0000000..87bfb7b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloud9.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudbeaver.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudbeaver.png new file mode 100644 index 0000000..c6a836e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudbeaver.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudcmd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudcmd.png new file mode 100644 index 0000000..93d5373 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudcmd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare-pages.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare-pages.png new file mode 100644 index 0000000..41b8a1a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare-pages.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare-zero-trust.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare-zero-trust.png new file mode 100644 index 0000000..4d3eca7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare-zero-trust.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare.png new file mode 100644 index 0000000..4d33c5f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudflare.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudpanel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudpanel.png new file mode 100644 index 0000000..e79e52c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cloudpanel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit-cms-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit-cms-light.png new file mode 100644 index 0000000..150d2db Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit-cms-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit-cms.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit-cms.png new file mode 100644 index 0000000..1a616f9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit-cms.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit.png new file mode 100644 index 0000000..8efd9b7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpit.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpitcms.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpitcms.png new file mode 100644 index 0000000..5649406 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cockpitcms.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/code-server.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/code-server.png new file mode 100644 index 0000000..5706f72 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/code-server.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/code.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/code.png new file mode 100644 index 0000000..af38c2d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/code.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeberg.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeberg.png new file mode 100644 index 0000000..15834f0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeberg.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coder-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coder-light.png new file mode 100644 index 0000000..671afa2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coder-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coder.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coder.png new file mode 100644 index 0000000..9c28653 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coder.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeserver-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeserver-light.png new file mode 100644 index 0000000..ec562e5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeserver-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeserver.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeserver.png new file mode 100644 index 0000000..795fc14 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codeserver.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codestats-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codestats-light.png new file mode 100644 index 0000000..f69a03e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codestats-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codestats.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codestats.png new file mode 100644 index 0000000..0f55a52 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codestats.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codex.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codex.png new file mode 100644 index 0000000..fa4a595 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codex.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codimd-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codimd-light.png new file mode 100644 index 0000000..6978e26 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codimd-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codimd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codimd.png new file mode 100644 index 0000000..e96af70 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/codimd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/commafeed.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/commafeed.png new file mode 100644 index 0000000..70c9fb0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/commafeed.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/concourse-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/concourse-light.png new file mode 100644 index 0000000..8f1d16e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/concourse-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/concourse.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/concourse.png new file mode 100644 index 0000000..d4b4024 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/concourse.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/contabo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/contabo.png new file mode 100644 index 0000000..3840e88 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/contabo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coredns.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coredns.png new file mode 100644 index 0000000..6ea177d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coredns.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coreos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coreos.png new file mode 100644 index 0000000..77090b0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/coreos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/costco.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/costco.png new file mode 100644 index 0000000..08ed72d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/costco.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/couchpotato.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/couchpotato.png new file mode 100644 index 0000000..b89796d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/couchpotato.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cozy-cloud.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cozy-cloud.png new file mode 100644 index 0000000..9a27c94 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cozy-cloud.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cozy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cozy.png new file mode 100644 index 0000000..9a27c94 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cozy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cpanel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cpanel.png new file mode 100644 index 0000000..2ab9ce5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cpanel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cpp.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cpp.png new file mode 100644 index 0000000..8923269 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cpp.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crater-invoice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crater-invoice.png new file mode 100644 index 0000000..6aad8f0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crater-invoice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crazydomains.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crazydomains.png new file mode 100644 index 0000000..f181a1b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crazydomains.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cross-seed-square.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cross-seed-square.png new file mode 100644 index 0000000..de6d8ee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cross-seed-square.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cross-seed.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cross-seed.png new file mode 100644 index 0000000..4b67111 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cross-seed.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crowdsec.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crowdsec.png new file mode 100644 index 0000000..7c724c9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/crowdsec.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cryptomator.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cryptomator.png new file mode 100644 index 0000000..820dfbe Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cryptomator.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cryptpad.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cryptpad.png new file mode 100644 index 0000000..4c99075 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cryptpad.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/csharp.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/csharp.png new file mode 100644 index 0000000..ac95f12 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/csharp.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/css.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/css.png new file mode 100644 index 0000000..10cb334 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/css.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cups-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cups-light.png new file mode 100644 index 0000000..dcd7abf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cups-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cups.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cups.png new file mode 100644 index 0000000..032a040 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cups.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cura.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cura.png new file mode 100644 index 0000000..d5d380c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cura.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cyberchef.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cyberchef.png new file mode 100644 index 0000000..209d2fd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/cyberchef.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/d-link-wifi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/d-link-wifi.png new file mode 100644 index 0000000..bbb4b53 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/d-link-wifi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/d-link.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/d-link.png new file mode 100644 index 0000000..c48d1d9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/d-link.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dahua.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dahua.png new file mode 100644 index 0000000..98b5aca Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dahua.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dart.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dart.png new file mode 100644 index 0000000..28cd1ea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dart.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashboard-icons.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashboard-icons.png new file mode 100644 index 0000000..bf457aa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashboard-icons.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashdot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashdot.png new file mode 100644 index 0000000..eb05984 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashdot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashy.png new file mode 100644 index 0000000..4f0a619 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dashy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/datadog.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/datadog.png new file mode 100644 index 0000000..b445ae5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/datadog.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dc-os.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dc-os.png new file mode 100644 index 0000000..a2d4856 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dc-os.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dd-wrt-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dd-wrt-light.png new file mode 100644 index 0000000..71373b1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dd-wrt-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dd-wrt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dd-wrt.png new file mode 100644 index 0000000..bfe5b18 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dd-wrt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ddns-updater.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ddns-updater.png new file mode 100644 index 0000000..5feba63 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ddns-updater.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/debian.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/debian.png new file mode 100644 index 0000000..44aa3ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/debian.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deemix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deemix.png new file mode 100644 index 0000000..16481ad Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deemix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dell.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dell.png new file mode 100644 index 0000000..61f8ec1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dell.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deluge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deluge.png new file mode 100644 index 0000000..23a0972 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deluge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deno-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deno-light.png new file mode 100644 index 0000000..d02bf53 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deno-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deno.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deno.png new file mode 100644 index 0000000..08d1af8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/deno.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/devtooly-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/devtooly-light.png new file mode 100644 index 0000000..3270c97 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/devtooly-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/devtooly.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/devtooly.png new file mode 100644 index 0000000..fc22356 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/devtooly.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/diagrams-net.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/diagrams-net.png new file mode 100644 index 0000000..20348a1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/diagrams-net.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dietpi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dietpi.png new file mode 100644 index 0000000..990adea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dietpi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/digital-ocean.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/digital-ocean.png new file mode 100644 index 0000000..72bbbca Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/digital-ocean.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dillinger.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dillinger.png new file mode 100644 index 0000000..2f3ff82 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dillinger.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/directus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/directus.png new file mode 100644 index 0000000..bcf820f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/directus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/discord.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/discord.png new file mode 100644 index 0000000..ac95e0e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/discord.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/discourse.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/discourse.png new file mode 100644 index 0000000..4c38065 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/discourse.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/diskover.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/diskover.png new file mode 100644 index 0000000..09f014a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/diskover.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dlna.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dlna.png new file mode 100644 index 0000000..a13489c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dlna.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dnla.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dnla.png new file mode 100644 index 0000000..fbb9178 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dnla.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-amd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-amd.png new file mode 100644 index 0000000..a17cef0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-amd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-compose.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-compose.png new file mode 100644 index 0000000..9c18f18 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-compose.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-gc.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-gc.png new file mode 100644 index 0000000..55cddb5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-gc.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-mailserver.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-mailserver.png new file mode 100644 index 0000000..d385111 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-mailserver.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-moby.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-moby.png new file mode 100644 index 0000000..c38aa91 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker-moby.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker.png new file mode 100644 index 0000000..ff34a16 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docker.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dockstarter.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dockstarter.png new file mode 100644 index 0000000..b81ad75 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dockstarter.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docspell.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docspell.png new file mode 100644 index 0000000..d427d42 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/docspell.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dogpile.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dogpile.png new file mode 100644 index 0000000..89cd04e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dogpile.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dokuwiki.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dokuwiki.png new file mode 100644 index 0000000..1a238b0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dokuwiki.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dolibarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dolibarr.png new file mode 100644 index 0000000..09858c1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dolibarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dolphin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dolphin.png new file mode 100644 index 0000000..c0e5375 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dolphin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/domainmod.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/domainmod.png new file mode 100644 index 0000000..29290f2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/domainmod.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/domoticz.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/domoticz.png new file mode 100644 index 0000000..d618b6e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/domoticz.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dopplertask.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dopplertask.png new file mode 100644 index 0000000..3bc9ab6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dopplertask.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/double-take.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/double-take.png new file mode 100644 index 0000000..dda2501 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/double-take.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/doubletake.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/doubletake.png new file mode 100644 index 0000000..b768246 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/doubletake.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dovecot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dovecot.png new file mode 100644 index 0000000..cfef009 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dovecot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dozzle.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dozzle.png new file mode 100644 index 0000000..44687dc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/dozzle.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draw-io.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draw-io.png new file mode 100644 index 0000000..20348a1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draw-io.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draw.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draw.png new file mode 100644 index 0000000..20348a1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draw.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draytek.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draytek.png new file mode 100644 index 0000000..9f6ecdb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/draytek.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/drone-blue.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/drone-blue.png new file mode 100644 index 0000000..2a7d4c4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/drone-blue.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/drone.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/drone.png new file mode 100644 index 0000000..e580783 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/drone.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/droneblue.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/droneblue.png new file mode 100644 index 0000000..6e5f5df Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/droneblue.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/droppy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/droppy.png new file mode 100644 index 0000000..72afa21 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/droppy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duckdns.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duckdns.png new file mode 100644 index 0000000..b25e922 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duckdns.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duckduckgo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duckduckgo.png new file mode 100644 index 0000000..ff494ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duckduckgo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duo.png new file mode 100644 index 0000000..cff538d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duplicacy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duplicacy.png new file mode 100644 index 0000000..718491c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duplicacy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duplicati.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duplicati.png new file mode 100644 index 0000000..fa5ef33 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/duplicati.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ebay.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ebay.png new file mode 100644 index 0000000..746399b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ebay.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/eclipse-mosquitto.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/eclipse-mosquitto.png new file mode 100644 index 0000000..d5df267 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/eclipse-mosquitto.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edge-dev.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edge-dev.png new file mode 100644 index 0000000..e0cc588 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edge-dev.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edge.png new file mode 100644 index 0000000..60660f8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edgeos-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edgeos-light.png new file mode 100644 index 0000000..4ab4c9a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edgeos-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edgeos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edgeos.png new file mode 100644 index 0000000..a689fd4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/edgeos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-beats.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-beats.png new file mode 100644 index 0000000..f688578 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-beats.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-kibana.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-kibana.png new file mode 100644 index 0000000..658569e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-kibana.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-logstash.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-logstash.png new file mode 100644 index 0000000..c0285cc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic-logstash.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic.png new file mode 100644 index 0000000..2c3160a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elastic.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elasticsearch.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elasticsearch.png new file mode 100644 index 0000000..2c3160a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/elasticsearch.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/electron.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/electron.png new file mode 100644 index 0000000..f0ee642 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/electron.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/element.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/element.png new file mode 100644 index 0000000..af61ec9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/element.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emacs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emacs.png new file mode 100644 index 0000000..b48f400 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emacs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emby.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emby.png new file mode 100644 index 0000000..3406549 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emby.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/embystat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/embystat.png new file mode 100644 index 0000000..5a9a8e7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/embystat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emq-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emq-light.png new file mode 100644 index 0000000..339091e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emq-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emq.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emq.png new file mode 100644 index 0000000..3172404 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emq.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emqx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emqx.png new file mode 100644 index 0000000..d1b67ac Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emqx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emulatorjs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emulatorjs.png new file mode 100644 index 0000000..2176411 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/emulatorjs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/epson-iprint.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/epson-iprint.png new file mode 100644 index 0000000..1e1f050 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/epson-iprint.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ersatztv.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ersatztv.png new file mode 100644 index 0000000..ed7fc90 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ersatztv.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/erste-george.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/erste-george.png new file mode 100644 index 0000000..68cb2c1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/erste-george.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/erste.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/erste.png new file mode 100644 index 0000000..adbb576 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/erste.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/esphome.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/esphome.png new file mode 100644 index 0000000..e0589d7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/esphome.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/espressif.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/espressif.png new file mode 100644 index 0000000..503f87b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/espressif.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etcd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etcd.png new file mode 100644 index 0000000..1b21d96 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etcd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etesync.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etesync.png new file mode 100644 index 0000000..b5aa2a1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etesync.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ethereum.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ethereum.png new file mode 100644 index 0000000..78e7252 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ethereum.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etherpad.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etherpad.png new file mode 100644 index 0000000..7b1fbcc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/etherpad.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/evebox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/evebox.png new file mode 100644 index 0000000..b95b491 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/evebox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/eweka.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/eweka.png new file mode 100644 index 0000000..ec49957 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/eweka.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/excalidraw-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/excalidraw-light.png new file mode 100644 index 0000000..f472d7f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/excalidraw-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/excalidraw.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/excalidraw.png new file mode 100644 index 0000000..58b29dd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/excalidraw.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/facebook-messenger.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/facebook-messenger.png new file mode 100644 index 0000000..46abcd0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/facebook-messenger.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/facebook.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/facebook.png new file mode 100644 index 0000000..d57c0ec Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/facebook.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falcon-christmas.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falcon-christmas.png new file mode 100644 index 0000000..c504138 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falcon-christmas.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falcon-player.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falcon-player.png new file mode 100644 index 0000000..c504138 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falcon-player.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falconplayer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falconplayer.png new file mode 100644 index 0000000..e1aa5e3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/falconplayer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fastmail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fastmail.png new file mode 100644 index 0000000..8d7f61b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fastmail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fedora-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fedora-alt.png new file mode 100644 index 0000000..31b3635 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fedora-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fedora.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fedora.png new file mode 100644 index 0000000..80de32b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fedora.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/feedly.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/feedly.png new file mode 100644 index 0000000..3146ec9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/feedly.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferdi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferdi.png new file mode 100644 index 0000000..8f230f9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferdi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferdium.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferdium.png new file mode 100644 index 0000000..225833b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferdium.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fermentrack.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fermentrack.png new file mode 100644 index 0000000..972f1f3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fermentrack.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferretdb-white.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferretdb-white.png new file mode 100644 index 0000000..1210397 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferretdb-white.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferretdb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferretdb.png new file mode 100644 index 0000000..b5060d0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ferretdb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filebot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filebot.png new file mode 100644 index 0000000..ff91e12 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filebot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filebrowser.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filebrowser.png new file mode 100644 index 0000000..7e54287 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filebrowser.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fileflows.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fileflows.png new file mode 100644 index 0000000..a3b64f0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fileflows.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filepizza.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filepizza.png new file mode 100644 index 0000000..7fe6305 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filepizza.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filerun.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filerun.png new file mode 100644 index 0000000..6362493 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filerun.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/files.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/files.png new file mode 100644 index 0000000..af38d9a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/files.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filezilla.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filezilla.png new file mode 100644 index 0000000..b88e9c4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/filezilla.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fios-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fios-light.png new file mode 100644 index 0000000..f6185fe Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fios-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fios.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fios.png new file mode 100644 index 0000000..5111eba Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fios.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefly.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefly.png new file mode 100644 index 0000000..51f89a2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefly.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-beta.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-beta.png new file mode 100644 index 0000000..629fdf5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-beta.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-developer-edition.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-developer-edition.png new file mode 100644 index 0000000..a580550 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-developer-edition.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-lite.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-lite.png new file mode 100644 index 0000000..ddef776 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-lite.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-nightly.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-nightly.png new file mode 100644 index 0000000..8b73982 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-nightly.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-reality.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-reality.png new file mode 100644 index 0000000..a548e40 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-reality.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-send.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-send.png new file mode 100644 index 0000000..e57083f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox-send.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox.png new file mode 100644 index 0000000..6d182b9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefoxsend.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefoxsend.png new file mode 100644 index 0000000..f23d835 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firefoxsend.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fireshare.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fireshare.png new file mode 100644 index 0000000..14a1438 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fireshare.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firewalla.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firewalla.png new file mode 100644 index 0000000..3814f11 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/firewalla.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flame.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flame.png new file mode 100644 index 0000000..473084e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flame.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flat-notes.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flat-notes.png new file mode 100644 index 0000000..7f81fb8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flat-notes.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flathub.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flathub.png new file mode 100644 index 0000000..bced00e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flathub.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flatpak.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flatpak.png new file mode 100644 index 0000000..76a983e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flatpak.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fleet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fleet.png new file mode 100644 index 0000000..9b91f0f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fleet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flexget.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flexget.png new file mode 100644 index 0000000..b3d6654 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flexget.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flightaware.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flightaware.png new file mode 100644 index 0000000..f1e87c2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flightaware.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flightradar24.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flightradar24.png new file mode 100644 index 0000000..1f49b89 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flightradar24.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flogo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flogo.png new file mode 100644 index 0000000..399ceaf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flogo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flood.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flood.png new file mode 100644 index 0000000..3e9dfc8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flood.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fluffychat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fluffychat.png new file mode 100644 index 0000000..c602438 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fluffychat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fluidd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fluidd.png new file mode 100644 index 0000000..1f27e48 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fluidd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flux-cd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flux-cd.png new file mode 100644 index 0000000..702ddd2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/flux-cd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/focalboard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/focalboard.png new file mode 100644 index 0000000..6736b67 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/focalboard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foldingathome.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foldingathome.png new file mode 100644 index 0000000..4df0747 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foldingathome.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fontawesome.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fontawesome.png new file mode 100644 index 0000000..bb84767 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fontawesome.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/forgejo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/forgejo.png new file mode 100644 index 0000000..387b27f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/forgejo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foscam.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foscam.png new file mode 100644 index 0000000..1b68b0a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foscam.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fossil.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fossil.png new file mode 100644 index 0000000..927d565 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fossil.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foundry-vtt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foundry-vtt.png new file mode 100644 index 0000000..11795fe Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/foundry-vtt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/franz.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/franz.png new file mode 100644 index 0000000..1e35ec6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/franz.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freedombox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freedombox.png new file mode 100644 index 0000000..6b26efc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freedombox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freeipa.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freeipa.png new file mode 100644 index 0000000..947278b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freeipa.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenas-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenas-light.png new file mode 100644 index 0000000..49e9342 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenas-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenas.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenas.png new file mode 100644 index 0000000..51ee445 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenas.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenom.png new file mode 100644 index 0000000..75cade9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freenom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freepbx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freepbx.png new file mode 100644 index 0000000..3932e62 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freepbx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freescout.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freescout.png new file mode 100644 index 0000000..27cb8bb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freescout.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freshping.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freshping.png new file mode 100644 index 0000000..6efff53 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freshping.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freshrss.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freshrss.png new file mode 100644 index 0000000..97ad00a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/freshrss.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/frigate-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/frigate-light.png new file mode 100644 index 0000000..43e1bc8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/frigate-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/frigate.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/frigate.png new file mode 100644 index 0000000..ee206ef Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/frigate.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fronius.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fronius.png new file mode 100644 index 0000000..c30465e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fronius.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/funkwhale.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/funkwhale.png new file mode 100644 index 0000000..1ea296f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/funkwhale.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fusionpbx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fusionpbx.png new file mode 100644 index 0000000..e655183 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/fusionpbx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gameyfin-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gameyfin-light.png new file mode 100644 index 0000000..2b9a9fb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gameyfin-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gameyfin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gameyfin.png new file mode 100644 index 0000000..3ca8b5b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gameyfin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gaps.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gaps.png new file mode 100644 index 0000000..57ed1ee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gaps.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gatsby.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gatsby.png new file mode 100644 index 0000000..4aa7b0b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gatsby.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gatus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gatus.png new file mode 100644 index 0000000..27a09d4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gatus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gboard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gboard.png new file mode 100644 index 0000000..1570cab Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gboard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/geckoview.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/geckoview.png new file mode 100644 index 0000000..25e621f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/geckoview.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gentoo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gentoo.png new file mode 100644 index 0000000..f03bb1e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gentoo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gerbera.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gerbera.png new file mode 100644 index 0000000..7509fc9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gerbera.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/get-iplayer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/get-iplayer.png new file mode 100644 index 0000000..0912886 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/get-iplayer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghost-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghost-light.png new file mode 100644 index 0000000..3c687df Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghost-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghost.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghost.png new file mode 100644 index 0000000..47fc59a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghost.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghostfolio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghostfolio.png new file mode 100644 index 0000000..c054b3d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ghostfolio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gigaset.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gigaset.png new file mode 100644 index 0000000..6835eed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gigaset.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/git.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/git.png new file mode 100644 index 0000000..07dc0bc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/git.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitbook.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitbook.png new file mode 100644 index 0000000..f35c990 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitbook.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitea.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitea.png new file mode 100644 index 0000000..a27a312 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitea.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/github-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/github-light.png new file mode 100644 index 0000000..2c951a0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/github-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/github.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/github.png new file mode 100644 index 0000000..1fc4c80 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/github.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitlab.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitlab.png new file mode 100644 index 0000000..d615acd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gitlab.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gladys-assistant.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gladys-assistant.png new file mode 100644 index 0000000..190579c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gladys-assistant.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/glances.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/glances.png new file mode 100644 index 0000000..58e3e51 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/glances.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/glpi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/glpi.png new file mode 100644 index 0000000..54a073e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/glpi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gluetun.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gluetun.png new file mode 100644 index 0000000..fe4b311 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gluetun.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gmail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gmail.png new file mode 100644 index 0000000..f5e64c8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gmail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/go.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/go.png new file mode 100644 index 0000000..f4e846c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/go.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/goaccess.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/goaccess.png new file mode 100644 index 0000000..3049be1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/goaccess.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gogs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gogs.png new file mode 100644 index 0000000..28e3526 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gogs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/golang.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/golang.png new file mode 100644 index 0000000..c2b8dc0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/golang.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gonic.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gonic.png new file mode 100644 index 0000000..ff5a275 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gonic.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/goodreads.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/goodreads.png new file mode 100644 index 0000000..c92dc21 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/goodreads.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-admin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-admin.png new file mode 100644 index 0000000..33205e2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-admin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-admob.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-admob.png new file mode 100644 index 0000000..2437187 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-admob.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-alerts.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-alerts.png new file mode 100644 index 0000000..9a509e4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-alerts.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-analytics.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-analytics.png new file mode 100644 index 0000000..a31f5db Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-analytics.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-assistant.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-assistant.png new file mode 100644 index 0000000..41b9dfb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-assistant.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-calendar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-calendar.png new file mode 100644 index 0000000..e3b4822 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-calendar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-chat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-chat.png new file mode 100644 index 0000000..3fe6a39 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-chat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-classroom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-classroom.png new file mode 100644 index 0000000..995ae9f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-classroom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-cloud-platform.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-cloud-platform.png new file mode 100644 index 0000000..3f9e7db Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-cloud-platform.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-cloud-print.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-cloud-print.png new file mode 100644 index 0000000..799f8af Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-cloud-print.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-compute-engine.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-compute-engine.png new file mode 100644 index 0000000..3efec7d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-compute-engine.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-contacts.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-contacts.png new file mode 100644 index 0000000..7c50f16 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-contacts.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-container-engine.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-container-engine.png new file mode 100644 index 0000000..22e12e7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-container-engine.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-docs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-docs.png new file mode 100644 index 0000000..26e6905 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-docs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-domains.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-domains.png new file mode 100644 index 0000000..fbc51e5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-domains.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-drive.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-drive.png new file mode 100644 index 0000000..af1e560 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-drive.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-earth.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-earth.png new file mode 100644 index 0000000..70396a2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-earth.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fi.png new file mode 100644 index 0000000..1eedd96 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fit.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fit.png new file mode 100644 index 0000000..0cdfc43 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fit.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fonts.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fonts.png new file mode 100644 index 0000000..51e5173 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-fonts.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-forms.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-forms.png new file mode 100644 index 0000000..488050c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-forms.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-gmail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-gmail.png new file mode 100644 index 0000000..5af7a44 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-gmail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-home.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-home.png new file mode 100644 index 0000000..109d065 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-home.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-keep.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-keep.png new file mode 100644 index 0000000..63322e4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-keep.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-lens.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-lens.png new file mode 100644 index 0000000..64f0974 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-lens.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-mail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-mail.png new file mode 100644 index 0000000..7edc363 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-mail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-maps.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-maps.png new file mode 100644 index 0000000..88e0fdf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-maps.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-meet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-meet.png new file mode 100644 index 0000000..ac1557f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-meet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-messages.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-messages.png new file mode 100644 index 0000000..975beed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-messages.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-news.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-news.png new file mode 100644 index 0000000..30d5b7a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-news.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-one.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-one.png new file mode 100644 index 0000000..0b69260 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-one.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-pay.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-pay.png new file mode 100644 index 0000000..d42b1e4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-pay.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-photos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-photos.png new file mode 100644 index 0000000..34a06a3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-photos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play-books.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play-books.png new file mode 100644 index 0000000..f16c2fe Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play-books.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play-games.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play-games.png new file mode 100644 index 0000000..732c2db Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play-games.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play.png new file mode 100644 index 0000000..9d82be1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-play.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-podcasts.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-podcasts.png new file mode 100644 index 0000000..087f549 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-podcasts.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-remote-desktop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-remote-desktop.png new file mode 100644 index 0000000..da2413f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-remote-desktop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-scholar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-scholar.png new file mode 100644 index 0000000..a326849 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-scholar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-search-console.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-search-console.png new file mode 100644 index 0000000..258b405 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-search-console.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-sheets.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-sheets.png new file mode 100644 index 0000000..9566453 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-sheets.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-shopping.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-shopping.png new file mode 100644 index 0000000..9175c95 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-shopping.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-sites.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-sites.png new file mode 100644 index 0000000..e484c16 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-sites.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-slides.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-slides.png new file mode 100644 index 0000000..ff9ac47 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-slides.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-street-view.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-street-view.png new file mode 100644 index 0000000..9b7a58f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-street-view.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-translate.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-translate.png new file mode 100644 index 0000000..3ec034c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-translate.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-tv.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-tv.png new file mode 100644 index 0000000..8ab5831 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-tv.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-v2.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-v2.png new file mode 100644 index 0000000..dbe333f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-v2.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-voice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-voice.png new file mode 100644 index 0000000..98048a0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-voice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wallet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wallet.png new file mode 100644 index 0000000..2c10ef2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wallet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wide.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wide.png new file mode 100644 index 0000000..928be19 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wide.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wifi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wifi.png new file mode 100644 index 0000000..e624945 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google-wifi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google.png new file mode 100644 index 0000000..3b8b06c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/google.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/googlemaps.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/googlemaps.png new file mode 100644 index 0000000..11ff228 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/googlemaps.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gotify.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gotify.png new file mode 100644 index 0000000..aa4549c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/gotify.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grafana.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grafana.png new file mode 100644 index 0000000..78b2f8c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grafana.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grav-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grav-light.png new file mode 100644 index 0000000..4f4f6f9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grav-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grav.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grav.png new file mode 100644 index 0000000..8ca64a4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grav.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/graylog-red.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/graylog-red.png new file mode 100644 index 0000000..f36c586 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/graylog-red.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/graylog.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/graylog.png new file mode 100644 index 0000000..f29da6f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/graylog.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grist.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grist.png new file mode 100644 index 0000000..e5bdcf6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grist.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grocy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grocy.png new file mode 100644 index 0000000..b89e9c6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/grocy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/guacamole-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/guacamole-light.png new file mode 100644 index 0000000..083c976 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/guacamole-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/guacamole.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/guacamole.png new file mode 100644 index 0000000..59f3d8b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/guacamole.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hammond.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hammond.png new file mode 100644 index 0000000..a021c62 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hammond.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/handbrake.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/handbrake.png new file mode 100644 index 0000000..725ceb9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/handbrake.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/haproxy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/haproxy.png new file mode 100644 index 0000000..e094d0d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/haproxy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/harbor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/harbor.png new file mode 100644 index 0000000..10cd722 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/harbor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hard-forum.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hard-forum.png new file mode 100644 index 0000000..84a4e81 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hard-forum.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/harvester.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/harvester.png new file mode 100644 index 0000000..db1e537 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/harvester.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hastbin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hastbin.png new file mode 100644 index 0000000..60b99e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hastbin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hasura.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hasura.png new file mode 100644 index 0000000..d2297ba Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hasura.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hatsh-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hatsh-light.png new file mode 100644 index 0000000..3c47a86 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hatsh-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hatsh.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hatsh.png new file mode 100644 index 0000000..185255e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hatsh.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hdhomerun.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hdhomerun.png new file mode 100644 index 0000000..a05f697 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hdhomerun.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/headphones.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/headphones.png new file mode 100644 index 0000000..34b7910 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/headphones.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/healthchecks-v2.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/healthchecks-v2.png new file mode 100644 index 0000000..2e07785 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/healthchecks-v2.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/healthchecks.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/healthchecks.png new file mode 100644 index 0000000..c592759 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/healthchecks.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/heimdall-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/heimdall-light.png new file mode 100644 index 0000000..c12f45b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/heimdall-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/heimdall.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/heimdall.png new file mode 100644 index 0000000..ec1e3f4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/heimdall.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/helium-token.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/helium-token.png new file mode 100644 index 0000000..01b8749 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/helium-token.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hetzner.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hetzner.png new file mode 100644 index 0000000..e3e6d2b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hetzner.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hexo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hexo.png new file mode 100644 index 0000000..2373f65 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hexo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hikvision.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hikvision.png new file mode 100644 index 0000000..e32dfa2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hikvision.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homarr.png new file mode 100644 index 0000000..69a7207 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant-alt.png new file mode 100644 index 0000000..5a790e9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant-circle.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant-circle.png new file mode 100644 index 0000000..012bdc1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant-circle.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant.png new file mode 100644 index 0000000..863d012 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/home-assistant.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homebox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homebox.png new file mode 100644 index 0000000..00f9699 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homebox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homebridge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homebridge.png new file mode 100644 index 0000000..f4b6c95 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homebridge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homepage.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homepage.png new file mode 100644 index 0000000..7ce16af Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homepage.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homer.png new file mode 100644 index 0000000..a0d752a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homeseer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homeseer.png new file mode 100644 index 0000000..12b6af8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/homeseer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/honeygain.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/honeygain.png new file mode 100644 index 0000000..119482f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/honeygain.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hoobs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hoobs.png new file mode 100644 index 0000000..ad99cbc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hoobs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hoppscotch.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hoppscotch.png new file mode 100644 index 0000000..4755c30 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hoppscotch.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hotio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hotio.png new file mode 100644 index 0000000..1a23454 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hotio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hp.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hp.png new file mode 100644 index 0000000..5e92f50 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hp.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/html.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/html.png new file mode 100644 index 0000000..8369a79 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/html.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/huawei.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/huawei.png new file mode 100644 index 0000000..baaf684 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/huawei.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hubitat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hubitat.png new file mode 100644 index 0000000..3dfb3e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hubitat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hugging-face.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hugging-face.png new file mode 100644 index 0000000..4c49229 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hugging-face.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/huginn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/huginn.png new file mode 100644 index 0000000..5a8e43b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/huginn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hugo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hugo.png new file mode 100644 index 0000000..852255d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hugo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/humhub.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/humhub.png new file mode 100644 index 0000000..1c7aca4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/humhub.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hydra.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hydra.png new file mode 100644 index 0000000..796c820 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hydra.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hyperion.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hyperion.png new file mode 100644 index 0000000..de1be8b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hyperion.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hyperpipe.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hyperpipe.png new file mode 100644 index 0000000..1ae0b8a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/hyperpipe.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/icecast.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/icecast.png new file mode 100644 index 0000000..ec3a2fb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/icecast.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/icinga.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/icinga.png new file mode 100644 index 0000000..21a37e1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/icinga.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/idrac.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/idrac.png new file mode 100644 index 0000000..61f8ec1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/idrac.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ihatemoney.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ihatemoney.png new file mode 100644 index 0000000..748f67a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ihatemoney.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ilo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ilo.png new file mode 100644 index 0000000..5e92f50 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ilo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/immich.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/immich.png new file mode 100644 index 0000000..eb278c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/immich.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/influxdb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/influxdb.png new file mode 100644 index 0000000..8d709bd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/influxdb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/infoblox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/infoblox.png new file mode 100644 index 0000000..58b3643 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/infoblox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/insanelymac.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/insanelymac.png new file mode 100644 index 0000000..e7268ce Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/insanelymac.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/instagram.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/instagram.png new file mode 100644 index 0000000..7ec1fc2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/instagram.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/inventree.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/inventree.png new file mode 100644 index 0000000..2c8ab4f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/inventree.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invidious.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invidious.png new file mode 100644 index 0000000..8759a81 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invidious.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invisioncommunity.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invisioncommunity.png new file mode 100644 index 0000000..432bced Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invisioncommunity.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invoiceninja-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invoiceninja-light.png new file mode 100644 index 0000000..2462c82 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invoiceninja-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invoiceninja.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invoiceninja.png new file mode 100644 index 0000000..a0e3c0e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/invoiceninja.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/iobroker.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/iobroker.png new file mode 100644 index 0000000..2e82779 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/iobroker.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ionos-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ionos-light.png new file mode 100644 index 0000000..828e429 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ionos-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ionos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ionos.png new file mode 100644 index 0000000..2df5611 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ionos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipboard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipboard.png new file mode 100644 index 0000000..432bced Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipboard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipcamtalk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipcamtalk.png new file mode 100644 index 0000000..83417d4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipcamtalk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipfs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipfs.png new file mode 100644 index 0000000..b4d4f54 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ipfs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/irc.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/irc.png new file mode 100644 index 0000000..517d61b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/irc.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/iredmail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/iredmail.png new file mode 100644 index 0000000..528c926 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/iredmail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ispconfig.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ispconfig.png new file mode 100644 index 0000000..78dd241 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ispconfig.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ispy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ispy.png new file mode 100644 index 0000000..12ef511 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ispy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/it-tools-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/it-tools-light.png new file mode 100644 index 0000000..3fceaaf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/it-tools-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/it-tools.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/it-tools.png new file mode 100644 index 0000000..2cd951f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/it-tools.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jackett-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jackett-light.png new file mode 100644 index 0000000..49e2d04 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jackett-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jackett.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jackett.png new file mode 100644 index 0000000..2745770 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jackett.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jaeger.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jaeger.png new file mode 100644 index 0000000..fa54aad Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jaeger.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jamstack.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jamstack.png new file mode 100644 index 0000000..50ae3ed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jamstack.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/java.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/java.png new file mode 100644 index 0000000..946d1b5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/java.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/javascript.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/javascript.png new file mode 100644 index 0000000..380eb20 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/javascript.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jdownloader.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jdownloader.png new file mode 100644 index 0000000..5c90cf7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jdownloader.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jdownloader2.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jdownloader2.png new file mode 100644 index 0000000..5c90cf7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jdownloader2.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jeedom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jeedom.png new file mode 100644 index 0000000..dff459b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jeedom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jekyll.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jekyll.png new file mode 100644 index 0000000..c8626e7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jekyll.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyfin-vue.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyfin-vue.png new file mode 100644 index 0000000..71fbd05 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyfin-vue.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyfin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyfin.png new file mode 100644 index 0000000..c4a62d5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyfin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyseerr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyseerr.png new file mode 100644 index 0000000..9bbb462 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellyseerr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellystat-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellystat-light.png new file mode 100644 index 0000000..139303a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellystat-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellystat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellystat.png new file mode 100644 index 0000000..5cac180 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jellystat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jelu.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jelu.png new file mode 100644 index 0000000..bbc0ce0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jelu.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jenkins.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jenkins.png new file mode 100644 index 0000000..aa090e6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jenkins.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jetbrains-fleet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jetbrains-fleet.png new file mode 100644 index 0000000..856689b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jetbrains-fleet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jetbrains-youtrack.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jetbrains-youtrack.png new file mode 100644 index 0000000..37adee2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jetbrains-youtrack.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jio.png new file mode 100644 index 0000000..cb6208e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jira.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jira.png new file mode 100644 index 0000000..6afcb13 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jira.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsi-meet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsi-meet.png new file mode 100644 index 0000000..ab7e203 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsi-meet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsi.png new file mode 100644 index 0000000..496f81e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsimeet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsimeet.png new file mode 100644 index 0000000..3796cc6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jitsimeet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joal.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joal.png new file mode 100644 index 0000000..18bf760 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joal.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joomla.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joomla.png new file mode 100644 index 0000000..0fd5c76 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joomla.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joplin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joplin.png new file mode 100644 index 0000000..1ec3810 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/joplin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/julia.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/julia.png new file mode 100644 index 0000000..211de47 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/julia.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jupyter.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jupyter.png new file mode 100644 index 0000000..5bb7d77 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/jupyter.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kaizoku.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kaizoku.png new file mode 100644 index 0000000..dc1770c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kaizoku.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kamatera.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kamatera.png new file mode 100644 index 0000000..4a77c78 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kamatera.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kanboard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kanboard.png new file mode 100644 index 0000000..c4159c8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kanboard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kapacitor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kapacitor.png new file mode 100644 index 0000000..c1e9700 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kapacitor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kasm-workspaces.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kasm-workspaces.png new file mode 100644 index 0000000..d255e1d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kasm-workspaces.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kasm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kasm.png new file mode 100644 index 0000000..d255e1d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kasm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kaufland.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kaufland.png new file mode 100644 index 0000000..da290c5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kaufland.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kavita.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kavita.png new file mode 100644 index 0000000..6ea448d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kavita.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keila.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keila.png new file mode 100644 index 0000000..69effc4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keila.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kerberos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kerberos.png new file mode 100644 index 0000000..d8cd2a4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kerberos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keycloak.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keycloak.png new file mode 100644 index 0000000..c8bf3fe Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keycloak.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keyoxide-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keyoxide-alt.png new file mode 100644 index 0000000..c9af2b4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keyoxide-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keyoxide.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keyoxide.png new file mode 100644 index 0000000..8071562 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/keyoxide.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kibana.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kibana.png new file mode 100644 index 0000000..658569e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kibana.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kimai.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kimai.png new file mode 100644 index 0000000..a320fed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kimai.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kinto.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kinto.png new file mode 100644 index 0000000..a7e3eee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kinto.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kitana.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kitana.png new file mode 100644 index 0000000..cdd8323 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kitana.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kitchenowl.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kitchenowl.png new file mode 100644 index 0000000..5a666ed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kitchenowl.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kiwix-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kiwix-light.png new file mode 100644 index 0000000..e310fb9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kiwix-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kiwix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kiwix.png new file mode 100644 index 0000000..c6f8795 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kiwix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ko-fi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ko-fi.png new file mode 100644 index 0000000..12e06a9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ko-fi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kodi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kodi.png new file mode 100644 index 0000000..0b86000 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kodi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/koel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/koel.png new file mode 100644 index 0000000..7861156 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/koel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/koillection.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/koillection.png new file mode 100644 index 0000000..5bb8023 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/koillection.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/komga.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/komga.png new file mode 100644 index 0000000..d853224 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/komga.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kopia.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kopia.png new file mode 100644 index 0000000..fc430ca Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kopia.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kotlin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kotlin.png new file mode 100644 index 0000000..29c1208 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kotlin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/krusader.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/krusader.png new file mode 100644 index 0000000..48fd236 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/krusader.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kubernetes-dashboard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kubernetes-dashboard.png new file mode 100644 index 0000000..bf48887 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kubernetes-dashboard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kubernetes.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kubernetes.png new file mode 100644 index 0000000..bf48887 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kubernetes.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kutt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kutt.png new file mode 100644 index 0000000..740b331 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/kutt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lancache.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lancache.png new file mode 100644 index 0000000..8d8b6fa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lancache.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lanraragi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lanraragi.png new file mode 100644 index 0000000..cc6d883 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lanraragi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lark.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lark.png new file mode 100644 index 0000000..8c7865e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lark.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lazylibrarian.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lazylibrarian.png new file mode 100644 index 0000000..e504fa1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lazylibrarian.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/leanote.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/leanote.png new file mode 100644 index 0000000..d1b3837 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/leanote.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/leantime.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/leantime.png new file mode 100644 index 0000000..9673b4f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/leantime.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lemonldap-ng.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lemonldap-ng.png new file mode 100644 index 0000000..dbf2718 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lemonldap-ng.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lemonldapng.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lemonldapng.png new file mode 100644 index 0000000..4beec3f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lemonldapng.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lets-encrypt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lets-encrypt.png new file mode 100644 index 0000000..43c9a78 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lets-encrypt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/letsencrypt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/letsencrypt.png new file mode 100644 index 0000000..ba3a757 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/letsencrypt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libreddit.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libreddit.png new file mode 100644 index 0000000..e42ed44 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libreddit.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libremdb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libremdb.png new file mode 100644 index 0000000..831ecd6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libremdb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librenms-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librenms-light.png new file mode 100644 index 0000000..c2a1bb1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librenms-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librenms.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librenms.png new file mode 100644 index 0000000..6c72502 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librenms.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libreoffice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libreoffice.png new file mode 100644 index 0000000..551676a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/libreoffice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librephotos-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librephotos-light.png new file mode 100644 index 0000000..d81407f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librephotos-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librephotos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librephotos.png new file mode 100644 index 0000000..3b837c1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librephotos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librespeed.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librespeed.png new file mode 100644 index 0000000..ea06dfb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librespeed.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librex.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librex.png new file mode 100644 index 0000000..88a1cab Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/librex.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lidarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lidarr.png new file mode 100644 index 0000000..3ec663b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lidarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lidl.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lidl.png new file mode 100644 index 0000000..96d73fd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lidl.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lightning-terminal.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lightning-terminal.png new file mode 100644 index 0000000..e89dc8d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lightning-terminal.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lighttpd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lighttpd.png new file mode 100644 index 0000000..605ed0b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lighttpd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkace.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkace.png new file mode 100644 index 0000000..f2d96c7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkace.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkding.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkding.png new file mode 100644 index 0000000..2614c02 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkding.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkedin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkedin.png new file mode 100644 index 0000000..1d2bdfc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linkedin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linksys.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linksys.png new file mode 100644 index 0000000..048fea3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linksys.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linode.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linode.png new file mode 100644 index 0000000..5a8dd83 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linode.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linux-mint.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linux-mint.png new file mode 100644 index 0000000..2164faf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linux-mint.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linuxserver-io.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linuxserver-io.png new file mode 100644 index 0000000..fae551e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/linuxserver-io.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/listmonk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/listmonk.png new file mode 100644 index 0000000..4ad0c31 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/listmonk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/littlelink-custom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/littlelink-custom.png new file mode 100644 index 0000000..0c4632e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/littlelink-custom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lnbits.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lnbits.png new file mode 100644 index 0000000..a17bb24 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lnbits.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-gaming.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-gaming.png new file mode 100644 index 0000000..836fed6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-gaming.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-legacy-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-legacy-light.png new file mode 100644 index 0000000..2455e21 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-legacy-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-legacy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-legacy.png new file mode 100644 index 0000000..9847cff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-legacy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-light.png new file mode 100644 index 0000000..77ff2e3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech.png new file mode 100644 index 0000000..5528b32 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logitech.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logstash.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logstash.png new file mode 100644 index 0000000..c0285cc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/logstash.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/loki.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/loki.png new file mode 100644 index 0000000..9ebe134 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/loki.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/longhorn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/longhorn.png new file mode 100644 index 0000000..43fc534 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/longhorn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lsio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lsio.png new file mode 100644 index 0000000..fae551e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lsio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lua.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lua.png new file mode 100644 index 0000000..b69f73b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lua.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lychee.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lychee.png new file mode 100644 index 0000000..aab2206 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/lychee.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailcow.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailcow.png new file mode 100644 index 0000000..289901d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailcow.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailcowsogo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailcowsogo.png new file mode 100644 index 0000000..0109678 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailcowsogo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailhog.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailhog.png new file mode 100644 index 0000000..4b703f1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailhog.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailinabox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailinabox.png new file mode 100644 index 0000000..f127eac Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailinabox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailu.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailu.png new file mode 100644 index 0000000..2f667ef Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mailu.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mainsail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mainsail.png new file mode 100644 index 0000000..1d1d6b5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mainsail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mak.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mak.png new file mode 100644 index 0000000..fd43faf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mak.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/makemkv.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/makemkv.png new file mode 100644 index 0000000..47e3f46 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/makemkv.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/manjaro-linux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/manjaro-linux.png new file mode 100644 index 0000000..5051a77 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/manjaro-linux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/manjaro.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/manjaro.png new file mode 100644 index 0000000..a66fc68 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/manjaro.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mantisbt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mantisbt.png new file mode 100644 index 0000000..f5f6ac2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mantisbt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/maptiler.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/maptiler.png new file mode 100644 index 0000000..e6f1086 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/maptiler.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/marginalia.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/marginalia.png new file mode 100644 index 0000000..adffebc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/marginalia.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mariadb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mariadb.png new file mode 100644 index 0000000..d76fcee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mariadb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mastodon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mastodon.png new file mode 100644 index 0000000..748c853 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mastodon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matomo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matomo.png new file mode 100644 index 0000000..b80d74a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matomo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-light.png new file mode 100644 index 0000000..1c889ae Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-synapse-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-synapse-light.png new file mode 100644 index 0000000..dc355e6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-synapse-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-synapse.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-synapse.png new file mode 100644 index 0000000..f6aea99 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix-synapse.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix.png new file mode 100644 index 0000000..ad1bd95 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/matrix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mattermost.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mattermost.png new file mode 100644 index 0000000..8d0dac4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mattermost.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mautic-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mautic-light.png new file mode 100644 index 0000000..ad4ad56 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mautic-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mautic.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mautic.png new file mode 100644 index 0000000..2d39605 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mautic.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayan-edms.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayan-edms.png new file mode 100644 index 0000000..efd6298 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayan-edms.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayan-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayan-light.png new file mode 100644 index 0000000..71c9eea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayan-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayanedms.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayanedms.png new file mode 100644 index 0000000..6e5d4b5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mayanedms.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mcmyadmin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mcmyadmin.png new file mode 100644 index 0000000..01f45fa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mcmyadmin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mealie.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mealie.png new file mode 100644 index 0000000..6a67beb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mealie.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mediathekview.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mediathekview.png new file mode 100644 index 0000000..47db9aa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mediathekview.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mediawiki.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mediawiki.png new file mode 100644 index 0000000..df3d96e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mediawiki.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/medusa.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/medusa.png new file mode 100644 index 0000000..563ee61 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/medusa.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mega-nz.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mega-nz.png new file mode 100644 index 0000000..e977c45 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mega-nz.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/memcached.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/memcached.png new file mode 100644 index 0000000..1fdeafe Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/memcached.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/memos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/memos.png new file mode 100644 index 0000000..c36ff83 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/memos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mempool.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mempool.png new file mode 100644 index 0000000..8006602 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mempool.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meraki.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meraki.png new file mode 100644 index 0000000..a62baa1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meraki.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mercusys.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mercusys.png new file mode 100644 index 0000000..1069872 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mercusys.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meshcentral.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meshcentral.png new file mode 100644 index 0000000..0c3a7a3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meshcentral.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meta.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meta.png new file mode 100644 index 0000000..7219e5c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/meta.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/metabase.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/metabase.png new file mode 100644 index 0000000..8249656 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/metabase.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/metube.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/metube.png new file mode 100644 index 0000000..af28c27 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/metube.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microbin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microbin.png new file mode 100644 index 0000000..8385203 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microbin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-365.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-365.png new file mode 100644 index 0000000..e1818e7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-365.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-office.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-office.png new file mode 100644 index 0000000..33516d9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-office.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-todo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-todo.png new file mode 100644 index 0000000..3455bf2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft-todo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft.png new file mode 100644 index 0000000..80074d9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft365-admin-center.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft365-admin-center.png new file mode 100644 index 0000000..7a3c44f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/microsoft365-admin-center.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/midjourney-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/midjourney-light.png new file mode 100644 index 0000000..94159e8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/midjourney-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/midjourney.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/midjourney.png new file mode 100644 index 0000000..ca6c7cd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/midjourney.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mikrotik.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mikrotik.png new file mode 100644 index 0000000..e550ade Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mikrotik.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mimir.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mimir.png new file mode 100644 index 0000000..67ddc9b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mimir.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minecraft.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minecraft.png new file mode 100644 index 0000000..196cf16 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minecraft.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mineos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mineos.png new file mode 100644 index 0000000..e6d343d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mineos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/miniflux-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/miniflux-light.png new file mode 100644 index 0000000..a19be00 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/miniflux-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/miniflux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/miniflux.png new file mode 100644 index 0000000..3cfa9fd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/miniflux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minimserver.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minimserver.png new file mode 100644 index 0000000..c9b72c1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minimserver.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minio-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minio-light.png new file mode 100644 index 0000000..10bcb35 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minio-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minio.png new file mode 100644 index 0000000..902099f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/minio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mkvtoolnix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mkvtoolnix.png new file mode 100644 index 0000000..e74cce7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mkvtoolnix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mobaxterm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mobaxterm.png new file mode 100644 index 0000000..9da4040 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mobaxterm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mobotix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mobotix.png new file mode 100644 index 0000000..eb57bd5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mobotix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/modrinth.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/modrinth.png new file mode 100644 index 0000000..b9064ea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/modrinth.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mojeek.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mojeek.png new file mode 100644 index 0000000..71be251 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mojeek.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/molecule.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/molecule.png new file mode 100644 index 0000000..3957848 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/molecule.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monero.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monero.png new file mode 100644 index 0000000..1b9d76a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monero.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mongodb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mongodb.png new file mode 100644 index 0000000..ad58001 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mongodb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monica.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monica.png new file mode 100644 index 0000000..7b69f60 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monica.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monit.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monit.png new file mode 100644 index 0000000..1aa7658 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/monit.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/moodle.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/moodle.png new file mode 100644 index 0000000..b747f28 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/moodle.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/motioneye.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/motioneye.png new file mode 100644 index 0000000..c80c85f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/motioneye.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mpm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mpm.png new file mode 100644 index 0000000..e56bd83 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mpm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mqtt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mqtt.png new file mode 100644 index 0000000..ac703e9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mqtt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mstream.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mstream.png new file mode 100644 index 0000000..27e46f1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mstream.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mullvad.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mullvad.png new file mode 100644 index 0000000..ea3a0b0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mullvad.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mumble.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mumble.png new file mode 100644 index 0000000..7aa08da Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mumble.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/musicbrainz.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/musicbrainz.png new file mode 100644 index 0000000..91f3eed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/musicbrainz.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mylar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mylar.png new file mode 100644 index 0000000..b0a391e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mylar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mysql.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mysql.png new file mode 100644 index 0000000..9b6b3e4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/mysql.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/n8n.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/n8n.png new file mode 100644 index 0000000..afa09f6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/n8n.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nagios.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nagios.png new file mode 100644 index 0000000..f599bdd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nagios.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/navidrome.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/navidrome.png new file mode 100644 index 0000000..72b40bb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/navidrome.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ncore.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ncore.png new file mode 100644 index 0000000..010b1c5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ncore.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neko-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neko-light.png new file mode 100644 index 0000000..16605e7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neko-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neko.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neko.png new file mode 100644 index 0000000..0cad7e9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neko.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neocities.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neocities.png new file mode 100644 index 0000000..8023dca Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/neocities.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nessus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nessus.png new file mode 100644 index 0000000..9a48986 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nessus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netapp.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netapp.png new file mode 100644 index 0000000..c2e1b22 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netapp.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netatmo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netatmo.png new file mode 100644 index 0000000..d5a3fc5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netatmo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netboot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netboot.png new file mode 100644 index 0000000..0c33437 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netboot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netbootxyz.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netbootxyz.png new file mode 100644 index 0000000..498c6fb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netbootxyz.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netbox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netbox.png new file mode 100644 index 0000000..f395fe2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netbox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netcam-studio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netcam-studio.png new file mode 100644 index 0000000..83f15e1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netcam-studio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netdata.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netdata.png new file mode 100644 index 0000000..80078ce Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netdata.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netflix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netflix.png new file mode 100644 index 0000000..304a833 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netflix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netgear.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netgear.png new file mode 100644 index 0000000..d42d2fd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netgear.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netlify.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netlify.png new file mode 100644 index 0000000..abed395 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netlify.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netmaker-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netmaker-light.png new file mode 100644 index 0000000..7b8439d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netmaker-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netmaker.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netmaker.png new file mode 100644 index 0000000..06dfb97 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netmaker.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netsurf.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netsurf.png new file mode 100644 index 0000000..1c438e8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/netsurf.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/network-weathermap.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/network-weathermap.png new file mode 100644 index 0000000..401b873 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/network-weathermap.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/newsblur.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/newsblur.png new file mode 100644 index 0000000..49234c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/newsblur.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-calendar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-calendar.png new file mode 100644 index 0000000..400a8b9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-calendar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-cookbook.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-cookbook.png new file mode 100644 index 0000000..cd320f3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-cookbook.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-deck.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-deck.png new file mode 100644 index 0000000..301912b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-deck.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-news.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-news.png new file mode 100644 index 0000000..bc3d688 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-news.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-notes.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-notes.png new file mode 100644 index 0000000..2fccfd7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-notes.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-photos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-photos.png new file mode 100644 index 0000000..183d245 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-photos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-talk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-talk.png new file mode 100644 index 0000000..8456e27 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-talk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-timemanager.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-timemanager.png new file mode 100644 index 0000000..92d943a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud-timemanager.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud.png new file mode 100644 index 0000000..7adc9c8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextcloud.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextdns.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextdns.png new file mode 100644 index 0000000..a3db99c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextdns.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextjs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextjs.png new file mode 100644 index 0000000..fdc2675 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextjs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextpvr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextpvr.png new file mode 100644 index 0000000..7afc497 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nextpvr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginx-proxy-manager.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginx-proxy-manager.png new file mode 100644 index 0000000..95dad95 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginx-proxy-manager.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginx.png new file mode 100644 index 0000000..639fe19 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginxproxymanager.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginxproxymanager.png new file mode 100644 index 0000000..7373317 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nginxproxymanager.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nitter.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nitter.png new file mode 100644 index 0000000..c04a90e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nitter.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nocodb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nocodb.png new file mode 100644 index 0000000..3a007de Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nocodb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/node-red.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/node-red.png new file mode 100644 index 0000000..3b77a8a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/node-red.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/node.js.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/node.js.png new file mode 100644 index 0000000..20284a7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/node.js.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodejs-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodejs-alt.png new file mode 100644 index 0000000..2462d31 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodejs-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodejs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodejs.png new file mode 100644 index 0000000..e8a2c34 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodejs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodered.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodered.png new file mode 100644 index 0000000..45f2ff4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nodered.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nomad.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nomad.png new file mode 100644 index 0000000..37b289d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nomad.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nomie.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nomie.png new file mode 100644 index 0000000..0c7abf6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nomie.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nordvpn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nordvpn.png new file mode 100644 index 0000000..245a96b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nordvpn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/notifiarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/notifiarr.png new file mode 100644 index 0000000..ffdccd3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/notifiarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nowshowing.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nowshowing.png new file mode 100644 index 0000000..4a75e2d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nowshowing.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntfy-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntfy-light.png new file mode 100644 index 0000000..ee2136b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntfy-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntfy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntfy.png new file mode 100644 index 0000000..802ef61 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntfy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntop.png new file mode 100644 index 0000000..bd4c64d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ntop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nxfilter.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nxfilter.png new file mode 100644 index 0000000..457ed9d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nxfilter.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nxlog.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nxlog.png new file mode 100644 index 0000000..f689441 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nxlog.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbget.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbget.png new file mode 100644 index 0000000..faedd80 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbget.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra.png new file mode 100644 index 0000000..3ae78c6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra2-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra2-light.png new file mode 100644 index 0000000..b9a7c5a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra2-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra2.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra2.png new file mode 100644 index 0000000..6dcb263 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/nzbhydra2.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obico.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obico.png new file mode 100644 index 0000000..2064a46 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obico.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obitalk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obitalk.png new file mode 100644 index 0000000..787061e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obitalk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/observium.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/observium.png new file mode 100644 index 0000000..cb426d9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/observium.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian-dark.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian-dark.png new file mode 100644 index 0000000..bcae141 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian-dark.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian-light.png new file mode 100644 index 0000000..54b55c9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian.png new file mode 100644 index 0000000..6ac8fac Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/obsidian.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/octoeverywhere.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/octoeverywhere.png new file mode 100644 index 0000000..717cdec Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/octoeverywhere.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/octoprint.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/octoprint.png new file mode 100644 index 0000000..623365f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/octoprint.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oculus-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oculus-light.png new file mode 100644 index 0000000..13ec079 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oculus-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oculus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oculus.png new file mode 100644 index 0000000..d9ce3a0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oculus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/office-365.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/office-365.png new file mode 100644 index 0000000..b719ed3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/office-365.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/olivetin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/olivetin.png new file mode 100644 index 0000000..4ef3991 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/olivetin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/omada.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/omada.png new file mode 100644 index 0000000..93ed26a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/omada.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ombi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ombi.png new file mode 100644 index 0000000..f4c611b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ombi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/omnidb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/omnidb.png new file mode 100644 index 0000000..afa4d12 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/omnidb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onedev-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onedev-light.png new file mode 100644 index 0000000..5b79523 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onedev-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onedev.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onedev.png new file mode 100644 index 0000000..ea6fb04 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onedev.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onlyoffice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onlyoffice.png new file mode 100644 index 0000000..eba4f00 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/onlyoffice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openai-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openai-light.png new file mode 100644 index 0000000..65e7a58 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openai-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openai.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openai.png new file mode 100644 index 0000000..bbff309 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openai.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openeats.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openeats.png new file mode 100644 index 0000000..30fb186 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openeats.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opengarage.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opengarage.png new file mode 100644 index 0000000..9f87cc3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opengarage.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opengist.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opengist.png new file mode 100644 index 0000000..a32810e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opengist.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openhab.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openhab.png new file mode 100644 index 0000000..35b278a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openhab.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmaptiler.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmaptiler.png new file mode 100644 index 0000000..15e99d8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmaptiler.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmaptiles.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmaptiles.png new file mode 100644 index 0000000..8756f5d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmaptiles.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmediavault.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmediavault.png new file mode 100644 index 0000000..707d417 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openmediavault.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openoffice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openoffice.png new file mode 100644 index 0000000..f1b680e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openoffice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openproject.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openproject.png new file mode 100644 index 0000000..ad8bcb0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openproject.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensearch.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensearch.png new file mode 100644 index 0000000..dc3d0a2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensearch.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openspeedtest.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openspeedtest.png new file mode 100644 index 0000000..8880004 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openspeedtest.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensprinkler.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensprinkler.png new file mode 100644 index 0000000..551ab22 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensprinkler.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openstack.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openstack.png new file mode 100644 index 0000000..cd463d6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openstack.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openstreetmap.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openstreetmap.png new file mode 100644 index 0000000..dd46f68 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openstreetmap.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensuse.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensuse.png new file mode 100644 index 0000000..74a8148 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opensuse.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openvas.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openvas.png new file mode 100644 index 0000000..a3705fa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openvas.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openvpn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openvpn.png new file mode 100644 index 0000000..f4efac5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openvpn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openwrt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openwrt.png new file mode 100644 index 0000000..247ecc4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/openwrt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-beta.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-beta.png new file mode 100644 index 0000000..cf87168 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-beta.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-developer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-developer.png new file mode 100644 index 0000000..8d5eda5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-developer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-gx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-gx.png new file mode 100644 index 0000000..8d99164 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-gx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-mini-beta.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-mini-beta.png new file mode 100644 index 0000000..c3fc28f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-mini-beta.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-mini.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-mini.png new file mode 100644 index 0000000..b59f877 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-mini.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-neon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-neon.png new file mode 100644 index 0000000..c53dff6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-neon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-touch.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-touch.png new file mode 100644 index 0000000..75a0693 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera-touch.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera.png new file mode 100644 index 0000000..01c03bb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opera.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opnsense.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opnsense.png new file mode 100644 index 0000000..a0b8ffa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/opnsense.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oracle-cloud.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oracle-cloud.png new file mode 100644 index 0000000..c1d84a2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oracle-cloud.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oracle.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oracle.png new file mode 100644 index 0000000..c1d84a2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oracle.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/orange.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/orange.png new file mode 100644 index 0000000..066dfa6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/orange.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/organizr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/organizr.png new file mode 100644 index 0000000..a757ccd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/organizr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oscarr-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oscarr-light.png new file mode 100644 index 0000000..5f4d8be Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oscarr-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oscarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oscarr.png new file mode 100644 index 0000000..8d1aa03 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/oscarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/osticket.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/osticket.png new file mode 100644 index 0000000..6a8499b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/osticket.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/outline.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/outline.png new file mode 100644 index 0000000..9800808 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/outline.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/overclockers.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/overclockers.png new file mode 100644 index 0000000..c7c8471 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/overclockers.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/overseerr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/overseerr.png new file mode 100644 index 0000000..a847d27 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/overseerr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ovh.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ovh.png new file mode 100644 index 0000000..40db686 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ovh.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ovirt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ovirt.png new file mode 100644 index 0000000..8a231ea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ovirt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/owncloud.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/owncloud.png new file mode 100644 index 0000000..2696558 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/owncloud.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ownphotos-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ownphotos-light.png new file mode 100644 index 0000000..033dd1a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ownphotos-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ownphotos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ownphotos.png new file mode 100644 index 0000000..988d594 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ownphotos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pagerduty.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pagerduty.png new file mode 100644 index 0000000..fd7b44c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pagerduty.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pale-moon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pale-moon.png new file mode 100644 index 0000000..4b101ac Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pale-moon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/palemoon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/palemoon.png new file mode 100644 index 0000000..dc8828a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/palemoon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paloaltonetworks.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paloaltonetworks.png new file mode 100644 index 0000000..6146326 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paloaltonetworks.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless-ng.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless-ng.png new file mode 100644 index 0000000..ecb9283 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless-ng.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless-ngx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless-ngx.png new file mode 100644 index 0000000..ecb9283 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless-ngx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless.png new file mode 100644 index 0000000..5705d3c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paperless.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/papermerge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/papermerge.png new file mode 100644 index 0000000..1933a35 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/papermerge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/partkeepr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/partkeepr.png new file mode 100644 index 0000000..655b172 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/partkeepr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/passwordpusher-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/passwordpusher-light.png new file mode 100644 index 0000000..79c6d29 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/passwordpusher-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/passwordpusher.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/passwordpusher.png new file mode 100644 index 0000000..89b8bc3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/passwordpusher.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastatool-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastatool-light.png new file mode 100644 index 0000000..49b16c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastatool-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastatool.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastatool.png new file mode 100644 index 0000000..ccc1db2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastatool.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastebin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastebin.png new file mode 100644 index 0000000..7d494d8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastebin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastey.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastey.png new file mode 100644 index 0000000..db4ab97 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pastey.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paypal.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paypal.png new file mode 100644 index 0000000..a64e8ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/paypal.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/peertube.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/peertube.png new file mode 100644 index 0000000..df69929 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/peertube.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/petio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/petio.png new file mode 100644 index 0000000..50fca22 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/petio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pfsense.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pfsense.png new file mode 100644 index 0000000..819a284 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pfsense.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pgadmin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pgadmin.png new file mode 100644 index 0000000..a42f574 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pgadmin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phantombot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phantombot.png new file mode 100644 index 0000000..9c35938 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phantombot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phoneinfoga-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phoneinfoga-light.png new file mode 100644 index 0000000..f7981d0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phoneinfoga-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phoneinfoga.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phoneinfoga.png new file mode 100644 index 0000000..7d983f2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phoneinfoga.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photonix-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photonix-light.png new file mode 100644 index 0000000..c37eaaf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photonix-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photonix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photonix.png new file mode 100644 index 0000000..0b15b94 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photonix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photoprism.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photoprism.png new file mode 100644 index 0000000..b354589 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photoprism.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photostructure.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photostructure.png new file mode 100644 index 0000000..8dedee9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photostructure.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photoview.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photoview.png new file mode 100644 index 0000000..5b20fb1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/photoview.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/php.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/php.png new file mode 100644 index 0000000..7810395 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/php.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpipam.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpipam.png new file mode 100644 index 0000000..38bf098 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpipam.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpldapadmin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpldapadmin.png new file mode 100644 index 0000000..22b7f51 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpldapadmin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpmyadmin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpmyadmin.png new file mode 100644 index 0000000..6cef98e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/phpmyadmin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-alert-dark.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-alert-dark.png new file mode 100644 index 0000000..397ca56 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-alert-dark.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-alert.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-alert.png new file mode 100644 index 0000000..b98a0f0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-alert.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-hole-unbound.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-hole-unbound.png new file mode 100644 index 0000000..7c79324 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-hole-unbound.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-hole.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-hole.png new file mode 100644 index 0000000..de1dd7d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pi-hole.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pia.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pia.png new file mode 100644 index 0000000..0636bd2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pia.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piaware.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piaware.png new file mode 100644 index 0000000..f1e87c2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piaware.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/picsur.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/picsur.png new file mode 100644 index 0000000..530bd0c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/picsur.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pigallery2-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pigallery2-light.png new file mode 100644 index 0000000..a39b7b0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pigallery2-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pigallery2.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pigallery2.png new file mode 100644 index 0000000..3e1abb7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pigallery2.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pihole.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pihole.png new file mode 100644 index 0000000..bb32a7a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pihole.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pikvm-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pikvm-light.png new file mode 100644 index 0000000..0ec04fb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pikvm-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pikvm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pikvm.png new file mode 100644 index 0000000..19053da Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pikvm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingdom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingdom.png new file mode 100644 index 0000000..b132267 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingdom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingvin-share.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingvin-share.png new file mode 100644 index 0000000..ef497fc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingvin-share.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingvin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingvin.png new file mode 100644 index 0000000..ef497fc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pingvin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pinry.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pinry.png new file mode 100644 index 0000000..adbcc28 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pinry.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pinterest.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pinterest.png new file mode 100644 index 0000000..5d2e9b1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pinterest.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pioneer-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pioneer-light.png new file mode 100644 index 0000000..deac7d3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pioneer-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pioneer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pioneer.png new file mode 100644 index 0000000..4fba6f9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pioneer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piped.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piped.png new file mode 100644 index 0000000..964def0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piped.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pirate-proxy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pirate-proxy.png new file mode 100644 index 0000000..bd74a9e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pirate-proxy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pivpn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pivpn.png new file mode 100644 index 0000000..b52d602 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pivpn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piwigo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piwigo.png new file mode 100644 index 0000000..fcfebad Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/piwigo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pixelfed.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pixelfed.png new file mode 100644 index 0000000..5e3d224 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pixelfed.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/planka.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/planka.png new file mode 100644 index 0000000..8d85238 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/planka.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plausible.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plausible.png new file mode 100644 index 0000000..ea79012 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plausible.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pleroma.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pleroma.png new file mode 100644 index 0000000..4fee27b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pleroma.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plesk-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plesk-light.png new file mode 100644 index 0000000..e616d8f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plesk-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plesk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plesk.png new file mode 100644 index 0000000..ecf3448 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plesk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-alt-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-alt-light.png new file mode 100644 index 0000000..6a25bc0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-alt-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-alt.png new file mode 100644 index 0000000..73a14a6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-new-transparent.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-new-transparent.png new file mode 100644 index 0000000..afeb543 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-new-transparent.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-new.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-new.png new file mode 100644 index 0000000..83b6b0a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-new.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-square.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-square.png new file mode 100644 index 0000000..d32c296 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex-square.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex.png new file mode 100644 index 0000000..e7af890 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plex.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plexdrive.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plexdrive.png new file mode 100644 index 0000000..cada67a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plexdrive.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plexrequests.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plexrequests.png new file mode 100644 index 0000000..5d0061c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plexrequests.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plume.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plume.png new file mode 100644 index 0000000..415ce04 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/plume.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/podify.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/podify.png new file mode 100644 index 0000000..84494e5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/podify.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/podnapisi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/podnapisi.png new file mode 100644 index 0000000..0c6afee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/podnapisi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/poly.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/poly.png new file mode 100644 index 0000000..e2db72b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/poly.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polycom-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polycom-alt.png new file mode 100644 index 0000000..6a20708 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polycom-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polycom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polycom.png new file mode 100644 index 0000000..6cf3f0a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polycom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polywork.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polywork.png new file mode 100644 index 0000000..aee0b49 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/polywork.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portainer-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portainer-alt.png new file mode 100644 index 0000000..e336a78 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portainer-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portainer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portainer.png new file mode 100644 index 0000000..a3a7e09 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portainer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portus.png new file mode 100644 index 0000000..afb3a5a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/portus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/poste.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/poste.png new file mode 100644 index 0000000..9d6e13b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/poste.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/postgres.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/postgres.png new file mode 100644 index 0000000..a42f574 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/postgres.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/powerdns.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/powerdns.png new file mode 100644 index 0000000..9303f60 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/powerdns.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/powerpanel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/powerpanel.png new file mode 100644 index 0000000..dfe193a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/powerpanel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile-v1.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile-v1.png new file mode 100644 index 0000000..d94aa1d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile-v1.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile-v2.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile-v2.png new file mode 100644 index 0000000..baadc22 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile-v2.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile.png new file mode 100644 index 0000000..a7e650f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/premium-mobile.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/printer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/printer.png new file mode 100644 index 0000000..65e67a6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/printer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pritunl.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pritunl.png new file mode 100644 index 0000000..451793b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pritunl.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/privacyidea.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/privacyidea.png new file mode 100644 index 0000000..2da5987 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/privacyidea.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/private-internet-access.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/private-internet-access.png new file mode 100644 index 0000000..0636bd2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/private-internet-access.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/privatebin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/privatebin.png new file mode 100644 index 0000000..fe7c6e6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/privatebin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/projectsend.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/projectsend.png new file mode 100644 index 0000000..115085a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/projectsend.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prometheus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prometheus.png new file mode 100644 index 0000000..c83eebd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prometheus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-calendar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-calendar.png new file mode 100644 index 0000000..7878c1c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-calendar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-drive.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-drive.png new file mode 100644 index 0000000..75c4cb3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-drive.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-mail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-mail.png new file mode 100644 index 0000000..773e79e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-mail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-vpn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-vpn.png new file mode 100644 index 0000000..3b22b1e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proton-vpn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prowlarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prowlarr.png new file mode 100644 index 0000000..0b84dea Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prowlarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proxmox-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proxmox-light.png new file mode 100644 index 0000000..db79bbb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proxmox-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proxmox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proxmox.png new file mode 100644 index 0000000..9f2c9a7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/proxmox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prtg.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prtg.png new file mode 100644 index 0000000..41cb5bd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/prtg.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/psitransfer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/psitransfer.png new file mode 100644 index 0000000..a765f6f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/psitransfer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pterodactyl.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pterodactyl.png new file mode 100644 index 0000000..a5addb8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pterodactyl.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pufferpanel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pufferpanel.png new file mode 100644 index 0000000..6df0f11 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pufferpanel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pushfish.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pushfish.png new file mode 100644 index 0000000..243d3a6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pushfish.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pushover.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pushover.png new file mode 100644 index 0000000..2383f6c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pushover.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/putty.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/putty.png new file mode 100644 index 0000000..70dc9a9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/putty.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwndrop-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwndrop-light.png new file mode 100644 index 0000000..da62dc6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwndrop-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwndrop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwndrop.png new file mode 100644 index 0000000..dc72623 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwndrop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwpush-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwpush-light.png new file mode 100644 index 0000000..79c6d29 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwpush-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwpush.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwpush.png new file mode 100644 index 0000000..89b8bc3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pwpush.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pydio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pydio.png new file mode 100644 index 0000000..0b13cf5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pydio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pyload.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pyload.png new file mode 100644 index 0000000..e960033 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/pyload.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/python.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/python.png new file mode 100644 index 0000000..a20dc86 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/python.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qbittorrent.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qbittorrent.png new file mode 100644 index 0000000..da45342 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qbittorrent.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qdirstat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qdirstat.png new file mode 100644 index 0000000..176cfc7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qdirstat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qinglong.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qinglong.png new file mode 100644 index 0000000..2455dd3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qinglong.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qnap-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qnap-alt.png new file mode 100644 index 0000000..499aed9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qnap-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qnap.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qnap.png new file mode 100644 index 0000000..d4a1391 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qnap.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/quant-ux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/quant-ux.png new file mode 100644 index 0000000..8c34999 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/quant-ux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/questdb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/questdb.png new file mode 100644 index 0000000..727a0fd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/questdb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/quetre.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/quetre.png new file mode 100644 index 0000000..62d491c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/quetre.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qutebrowser.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qutebrowser.png new file mode 100644 index 0000000..c049d72 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/qutebrowser.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/r.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/r.png new file mode 100644 index 0000000..e378973 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/r.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rabbitmq.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rabbitmq.png new file mode 100644 index 0000000..2f6bfba Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rabbitmq.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radarr-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radarr-light.png new file mode 100644 index 0000000..3a584c6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radarr-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radarr.png new file mode 100644 index 0000000..604d8ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radicale.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radicale.png new file mode 100644 index 0000000..a034152 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/radicale.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rainloop-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rainloop-light.png new file mode 100644 index 0000000..73d62d6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rainloop-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rainloop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rainloop.png new file mode 100644 index 0000000..215a273 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rainloop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rancher.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rancher.png new file mode 100644 index 0000000..4515d6c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rancher.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raneto.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raneto.png new file mode 100644 index 0000000..0758f36 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raneto.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raritan-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raritan-light.png new file mode 100644 index 0000000..f4c2950 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raritan-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raritan.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raritan.png new file mode 100644 index 0000000..683ab42 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raritan.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raspberrymatic.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raspberrymatic.png new file mode 100644 index 0000000..c9e367d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raspberrymatic.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raspberrypi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raspberrypi.png new file mode 100644 index 0000000..7996cc4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/raspberrypi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rathole.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rathole.png new file mode 100644 index 0000000..25744ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rathole.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rclone.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rclone.png new file mode 100644 index 0000000..90df575 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rclone.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rdt-client.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rdt-client.png new file mode 100644 index 0000000..b164a37 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rdt-client.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readarr.png new file mode 100644 index 0000000..9bccfee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readthedocs-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readthedocs-light.png new file mode 100644 index 0000000..5a95038 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readthedocs-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readthedocs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readthedocs.png new file mode 100644 index 0000000..b2ce363 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/readthedocs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/real-debrid.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/real-debrid.png new file mode 100644 index 0000000..b164a37 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/real-debrid.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/realhosting.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/realhosting.png new file mode 100644 index 0000000..6f2d9eb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/realhosting.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/recalbox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/recalbox.png new file mode 100644 index 0000000..5d1703f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/recalbox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/recipesage.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/recipesage.png new file mode 100644 index 0000000..4d7e186 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/recipesage.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/reddit.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/reddit.png new file mode 100644 index 0000000..455876d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/reddit.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/redis.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/redis.png new file mode 100644 index 0000000..cdf3273 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/redis.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/remotely.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/remotely.png new file mode 100644 index 0000000..4c5a4e9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/remotely.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/requestrr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/requestrr.png new file mode 100644 index 0000000..caf255e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/requestrr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/resiliosync.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/resiliosync.png new file mode 100644 index 0000000..9e7b28f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/resiliosync.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhasspy-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhasspy-light.png new file mode 100644 index 0000000..bd3cbef Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhasspy-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhasspy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhasspy.png new file mode 100644 index 0000000..af00f6d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhasspy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhodecode.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhodecode.png new file mode 100644 index 0000000..5a95270 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rhodecode.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rimgo-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rimgo-light.png new file mode 100644 index 0000000..3daac3e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rimgo-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rimgo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rimgo.png new file mode 100644 index 0000000..ed4b0e9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rimgo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/riot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/riot.png new file mode 100644 index 0000000..eb28d2b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/riot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rocketchat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rocketchat.png new file mode 100644 index 0000000..af17c38 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rocketchat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rocky-linux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rocky-linux.png new file mode 100644 index 0000000..531547d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rocky-linux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/romm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/romm.png new file mode 100644 index 0000000..c1a7512 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/romm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rompya.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rompya.png new file mode 100644 index 0000000..3b2af49 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rompya.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rook.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rook.png new file mode 100644 index 0000000..168d6d0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rook.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/roundcube.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/roundcube.png new file mode 100644 index 0000000..0a2f3cd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/roundcube.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/router.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/router.png new file mode 100644 index 0000000..1ea6ec9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/router.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rpi-monitor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rpi-monitor.png new file mode 100644 index 0000000..1e9c9c1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rpi-monitor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rpimonitor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rpimonitor.png new file mode 100644 index 0000000..97942d2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rpimonitor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rport.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rport.png new file mode 100644 index 0000000..480467b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rport.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rspamd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rspamd.png new file mode 100644 index 0000000..eab4c37 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rspamd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rss-bridge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rss-bridge.png new file mode 100644 index 0000000..b02760a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rss-bridge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rsshub.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rsshub.png new file mode 100644 index 0000000..15ba763 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rsshub.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rstudio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rstudio.png new file mode 100644 index 0000000..6df8133 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rstudio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rstudioserver.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rstudioserver.png new file mode 100644 index 0000000..6df8133 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rstudioserver.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ruby.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ruby.png new file mode 100644 index 0000000..ecf48b2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ruby.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rundeck.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rundeck.png new file mode 100644 index 0000000..c94c9ae Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rundeck.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runeaudio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runeaudio.png new file mode 100644 index 0000000..4d69f3e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runeaudio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runonflux-mark-blue.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runonflux-mark-blue.png new file mode 100644 index 0000000..8e1064a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runonflux-mark-blue.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runonflux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runonflux.png new file mode 100644 index 0000000..66d3ff7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/runonflux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rust.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rust.png new file mode 100644 index 0000000..be85d15 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rust.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rustdesk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rustdesk.png new file mode 100644 index 0000000..805a022 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rustdesk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rutorrent.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rutorrent.png new file mode 100644 index 0000000..40d4a4e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/rutorrent.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd-alt.png new file mode 100644 index 0000000..b262869 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd-text.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd-text.png new file mode 100644 index 0000000..476b097 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd-text.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd.png new file mode 100644 index 0000000..c77a304 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sabnzbd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/safari-ios.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/safari-ios.png new file mode 100644 index 0000000..9701da6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/safari-ios.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/safari.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/safari.png new file mode 100644 index 0000000..0a049e2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/safari.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sagemcom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sagemcom.png new file mode 100644 index 0000000..cc33686 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sagemcom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/salad.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/salad.png new file mode 100644 index 0000000..6316a70 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/salad.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/samsung-internet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/samsung-internet.png new file mode 100644 index 0000000..0c77c7a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/samsung-internet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sandstorm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sandstorm.png new file mode 100644 index 0000000..8337659 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sandstorm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrutiny-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrutiny-light.png new file mode 100644 index 0000000..8d0f485 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrutiny-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrutiny.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrutiny.png new file mode 100644 index 0000000..9b8f5e5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrutiny.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrypted.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrypted.png new file mode 100644 index 0000000..45e4659 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/scrypted.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/seafile.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/seafile.png new file mode 100644 index 0000000..d444519 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/seafile.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searx-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searx-light.png new file mode 100644 index 0000000..ee51e19 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searx-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searx.png new file mode 100644 index 0000000..b59eb72 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searxmetasearchengine.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searxmetasearchengine.png new file mode 100644 index 0000000..deb7c40 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searxmetasearchengine.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searxng.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searxng.png new file mode 100644 index 0000000..b7d6004 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/searxng.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/security-onion.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/security-onion.png new file mode 100644 index 0000000..1229a08 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/security-onion.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/selfhosted-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/selfhosted-light.png new file mode 100644 index 0000000..682ff3e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/selfhosted-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/selfhosted.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/selfhosted.png new file mode 100644 index 0000000..e64a977 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/selfhosted.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/semaphore.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/semaphore.png new file mode 100644 index 0000000..13f87cc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/semaphore.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sendinblue.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sendinblue.png new file mode 100644 index 0000000..cc98b78 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sendinblue.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu-green.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu-green.png new file mode 100644 index 0000000..692ba34 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu-green.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu-logo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu-logo.png new file mode 100644 index 0000000..d7f877f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu-logo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu.png new file mode 100644 index 0000000..ff46b02 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sensu.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sentry.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sentry.png new file mode 100644 index 0000000..2a44ab3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sentry.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/seq.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/seq.png new file mode 100644 index 0000000..fdc058d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/seq.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/servarr-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/servarr-light.png new file mode 100644 index 0000000..1be6069 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/servarr-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/servarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/servarr.png new file mode 100644 index 0000000..be28993 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/servarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/serviio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/serviio.png new file mode 100644 index 0000000..e45bfa6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/serviio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sftpgo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sftpgo.png new file mode 100644 index 0000000..e1537af Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sftpgo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shaarli.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shaarli.png new file mode 100644 index 0000000..979f5f6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shaarli.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-light.png new file mode 100644 index 0000000..03ec018 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-tips-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-tips-light.png new file mode 100644 index 0000000..f5c8d81 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-tips-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-tips.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-tips.png new file mode 100644 index 0000000..5f932f5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell-tips.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell.png new file mode 100644 index 0000000..3a535a1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shell.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shellhub.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shellhub.png new file mode 100644 index 0000000..3868a77 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shellhub.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shellngn.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shellngn.png new file mode 100644 index 0000000..43bc55a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shellngn.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shelly.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shelly.png new file mode 100644 index 0000000..36fac68 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shelly.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shinobi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shinobi.png new file mode 100644 index 0000000..4ad5519 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shinobi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shiori.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shiori.png new file mode 100644 index 0000000..4431f60 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shiori.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shlink.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shlink.png new file mode 100644 index 0000000..743efa0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shlink.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shoko.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shoko.png new file mode 100644 index 0000000..136f09b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/shoko.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickbeard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickbeard.png new file mode 100644 index 0000000..c213b55 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickbeard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickchill.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickchill.png new file mode 100644 index 0000000..ce4f796 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickchill.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickgear.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickgear.png new file mode 100644 index 0000000..ab405b1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sickgear.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/silverbullet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/silverbullet.png new file mode 100644 index 0000000..866f4c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/silverbullet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/simplelogin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/simplelogin.png new file mode 100644 index 0000000..a9dd0ee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/simplelogin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sinusbot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sinusbot.png new file mode 100644 index 0000000..af29752 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sinusbot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/siyuan.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/siyuan.png new file mode 100644 index 0000000..90e1d3f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/siyuan.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/skylink-fibernet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/skylink-fibernet.png new file mode 100644 index 0000000..fee5a9e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/skylink-fibernet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/skype.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/skype.png new file mode 100644 index 0000000..a2a92e5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/skype.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/slack.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/slack.png new file mode 100644 index 0000000..4e00728 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/slack.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/slice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/slice.png new file mode 100644 index 0000000..8ab1d55 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/slice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/smokeping.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/smokeping.png new file mode 100644 index 0000000..b28cc4c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/smokeping.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snapchat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snapchat.png new file mode 100644 index 0000000..6eeaca1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snapchat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snapdrop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snapdrop.png new file mode 100644 index 0000000..640ed1e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snapdrop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snibox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snibox.png new file mode 100644 index 0000000..33f4f4c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snibox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snipe-it-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snipe-it-alt.png new file mode 100644 index 0000000..810de13 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snipe-it-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snipe-it.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snipe-it.png new file mode 100644 index 0000000..9b457d6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snipe-it.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snippetbox.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snippetbox.png new file mode 100644 index 0000000..2b26601 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/snippetbox.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sogo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sogo.png new file mode 100644 index 0000000..e0f41e4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sogo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/solid-invoice.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/solid-invoice.png new file mode 100644 index 0000000..1e06348 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/solid-invoice.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sonarqube.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sonarqube.png new file mode 100644 index 0000000..3157dc0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sonarqube.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sonarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sonarr.png new file mode 100644 index 0000000..245d551 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sonarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/soulseek.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/soulseek.png new file mode 100644 index 0000000..a82410e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/soulseek.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sourcegraph.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sourcegraph.png new file mode 100644 index 0000000..07b8dc7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sourcegraph.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spamassassin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spamassassin.png new file mode 100644 index 0000000..fa2d762 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spamassassin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sparkleshare.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sparkleshare.png new file mode 100644 index 0000000..c57257a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sparkleshare.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/specter-desktop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/specter-desktop.png new file mode 100644 index 0000000..5ed217f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/specter-desktop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/speedtest-tracker.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/speedtest-tracker.png new file mode 100644 index 0000000..15c6ca5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/speedtest-tracker.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx-doc.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx-doc.png new file mode 100644 index 0000000..a44bec3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx-doc.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx-relay.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx-relay.png new file mode 100644 index 0000000..dcd4a89 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx-relay.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx.png new file mode 100644 index 0000000..a44bec3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sphinx.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/splunk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/splunk.png new file mode 100644 index 0000000..a39ab0d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/splunk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotify.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotify.png new file mode 100644 index 0000000..0c843ee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotify.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotnet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotnet.png new file mode 100644 index 0000000..a68bde8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotnet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotweb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotweb.png new file mode 100644 index 0000000..8a09eb6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/spotweb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sqlitebrowser.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sqlitebrowser.png new file mode 100644 index 0000000..9ea9a46 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sqlitebrowser.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/squeezebox-server.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/squeezebox-server.png new file mode 100644 index 0000000..d91de0c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/squeezebox-server.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/squidex.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/squidex.png new file mode 100644 index 0000000..02dcb62 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/squidex.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sschwifty.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sschwifty.png new file mode 100644 index 0000000..2e308f3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sschwifty.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sshswifty.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sshswifty.png new file mode 100644 index 0000000..2e308f3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sshswifty.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sshwifty.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sshwifty.png new file mode 100644 index 0000000..ff34b45 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sshwifty.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/startpage.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/startpage.png new file mode 100644 index 0000000..782a2eb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/startpage.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/stash.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/stash.png new file mode 100644 index 0000000..17b6d2c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/stash.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/statping-ng.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/statping-ng.png new file mode 100644 index 0000000..a886a1c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/statping-ng.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/statping.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/statping.png new file mode 100644 index 0000000..a886a1c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/statping.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/stirling-pdf.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/stirling-pdf.png new file mode 100644 index 0000000..e998599 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/stirling-pdf.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/storj.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/storj.png new file mode 100644 index 0000000..74e7ffa Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/storj.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/strapi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/strapi.png new file mode 100644 index 0000000..ccc5c3d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/strapi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/streama.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/streama.png new file mode 100644 index 0000000..63c4426 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/streama.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/substreamer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/substreamer.png new file mode 100644 index 0000000..95b1696 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/substreamer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/supermicro.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/supermicro.png new file mode 100644 index 0000000..529ed66 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/supermicro.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/swift.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/swift.png new file mode 100644 index 0000000..f805626 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/swift.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/swizzin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/swizzin.png new file mode 100644 index 0000000..5ba06bd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/swizzin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/symmetricom-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/symmetricom-light.png new file mode 100644 index 0000000..9ef7d71 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/symmetricom-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/symmetricom.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/symmetricom.png new file mode 100644 index 0000000..bfdabcb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/symmetricom.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sympa.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sympa.png new file mode 100644 index 0000000..58f3fb9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/sympa.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/syncany.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/syncany.png new file mode 100644 index 0000000..9aaadcd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/syncany.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synclounge-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synclounge-light.png new file mode 100644 index 0000000..1b504a3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synclounge-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synclounge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synclounge.png new file mode 100644 index 0000000..b9999c2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synclounge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/syncthing.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/syncthing.png new file mode 100644 index 0000000..e397aef Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/syncthing.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-audio-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-audio-station.png new file mode 100644 index 0000000..3a965af Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-audio-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-calendar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-calendar.png new file mode 100644 index 0000000..5db8499 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-calendar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-chat.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-chat.png new file mode 100644 index 0000000..25c5c61 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-chat.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-cloud-sync.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-cloud-sync.png new file mode 100644 index 0000000..2e58e93 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-cloud-sync.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-contacts.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-contacts.png new file mode 100644 index 0000000..66d2b32 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-contacts.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-document-viewer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-document-viewer.png new file mode 100644 index 0000000..d2e272d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-document-viewer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-download-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-download-station.png new file mode 100644 index 0000000..a4a995f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-download-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-drive-server.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-drive-server.png new file mode 100644 index 0000000..e0304ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-drive-server.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-drive.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-drive.png new file mode 100644 index 0000000..e0304ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-drive.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-dsm.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-dsm.png new file mode 100644 index 0000000..2ffe3b6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-dsm.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-file-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-file-station.png new file mode 100644 index 0000000..32a7bed Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-file-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-filestation.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-filestation.png new file mode 100644 index 0000000..aed2d26 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-filestation.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-mail-plus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-mail-plus.png new file mode 100644 index 0000000..081addd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-mail-plus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-mail-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-mail-station.png new file mode 100644 index 0000000..2c49602 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-mail-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-note-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-note-station.png new file mode 100644 index 0000000..a711137 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-note-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-office.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-office.png new file mode 100644 index 0000000..59955f2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-office.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-pdfviewer.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-pdfviewer.png new file mode 100644 index 0000000..d2e272d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-pdfviewer.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-photo-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-photo-station.png new file mode 100644 index 0000000..9dd5e90 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-photo-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-photos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-photos.png new file mode 100644 index 0000000..a4579d3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-photos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-surveillance-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-surveillance-station.png new file mode 100644 index 0000000..0358966 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-surveillance-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-text-editor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-text-editor.png new file mode 100644 index 0000000..6f87784 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-text-editor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-video-station.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-video-station.png new file mode 100644 index 0000000..dd2f50a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-video-station.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-webstation.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-webstation.png new file mode 100644 index 0000000..186e7c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology-webstation.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology.png new file mode 100644 index 0000000..7619d0f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/synology.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/taiga.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/taiga.png new file mode 100644 index 0000000..9e22ce9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/taiga.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tailscale-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tailscale-light.png new file mode 100644 index 0000000..980ac87 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tailscale-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tailscale.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tailscale.png new file mode 100644 index 0000000..a2353c7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tailscale.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tandoor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tandoor.png new file mode 100644 index 0000000..60bdaad Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tandoor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tandoorrecipes.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tandoorrecipes.png new file mode 100644 index 0000000..60bdaad Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tandoorrecipes.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tanoshi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tanoshi.png new file mode 100644 index 0000000..b0ca574 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tanoshi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tar1090.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tar1090.png new file mode 100644 index 0000000..c21fd82 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tar1090.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/taskcafe.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/taskcafe.png new file mode 100644 index 0000000..fc7762b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/taskcafe.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmoadmin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmoadmin.png new file mode 100644 index 0000000..eed9b64 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmoadmin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmota-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmota-light.png new file mode 100644 index 0000000..6d7c500 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmota-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmota.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmota.png new file mode 100644 index 0000000..0321890 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tasmota.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tautulli.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tautulli.png new file mode 100644 index 0000000..c8a84c1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tautulli.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tdarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tdarr.png new file mode 100644 index 0000000..b507192 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tdarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teamcity.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teamcity.png new file mode 100644 index 0000000..ad59d0d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teamcity.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teamspeak.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teamspeak.png new file mode 100644 index 0000000..c797034 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teamspeak.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/technitium.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/technitium.png new file mode 100644 index 0000000..09d325f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/technitium.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teedy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teedy.png new file mode 100644 index 0000000..9cbc395 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teedy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/telegraf.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/telegraf.png new file mode 100644 index 0000000..c609ca1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/telegraf.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/telegram.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/telegram.png new file mode 100644 index 0000000..c0db511 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/telegram.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teleport.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teleport.png new file mode 100644 index 0000000..b128b6f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teleport.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tenda.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tenda.png new file mode 100644 index 0000000..8628ac5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tenda.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/terminal.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/terminal.png new file mode 100644 index 0000000..f1ffe01 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/terminal.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/terraform.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/terraform.png new file mode 100644 index 0000000..1842872 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/terraform.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teslamate.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teslamate.png new file mode 100644 index 0000000..4871185 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/teslamate.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thanos.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thanos.png new file mode 100644 index 0000000..ad7b2a3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thanos.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/the-pirate-bay.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/the-pirate-bay.png new file mode 100644 index 0000000..bd74a9e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/the-pirate-bay.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/the-proxy-bay.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/the-proxy-bay.png new file mode 100644 index 0000000..bd74a9e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/the-proxy-bay.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theia-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theia-light.png new file mode 100644 index 0000000..b28c0c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theia-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theia.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theia.png new file mode 100644 index 0000000..0fcad4d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theia.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thelounge.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thelounge.png new file mode 100644 index 0000000..fee5edf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thelounge.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/themepark.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/themepark.png new file mode 100644 index 0000000..74d2312 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/themepark.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theodinproject.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theodinproject.png new file mode 100644 index 0000000..4de0012 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/theodinproject.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thingsboard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thingsboard.png new file mode 100644 index 0000000..bc4ba6f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thingsboard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderbird.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderbird.png new file mode 100644 index 0000000..7f2bb30 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderbird.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderhub-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderhub-light.png new file mode 100644 index 0000000..0efd60f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderhub-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderhub.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderhub.png new file mode 100644 index 0000000..cd30b00 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/thunderhub.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tiktok-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tiktok-light.png new file mode 100644 index 0000000..440155f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tiktok-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tiktok.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tiktok.png new file mode 100644 index 0000000..bcd446d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tiktok.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timemachines-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timemachines-light.png new file mode 100644 index 0000000..aab19b3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timemachines-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timemachines.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timemachines.png new file mode 100644 index 0000000..738e3bb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timemachines.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timetagger-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timetagger-light.png new file mode 100644 index 0000000..5d4b3d5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timetagger-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timetagger.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timetagger.png new file mode 100644 index 0000000..c61e4e9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/timetagger.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tinypilot.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tinypilot.png new file mode 100644 index 0000000..87bb253 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tinypilot.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tinytinyrss.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tinytinyrss.png new file mode 100644 index 0000000..1b22e44 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tinytinyrss.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tipi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tipi.png new file mode 100644 index 0000000..3183f82 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tipi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/todoist.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/todoist.png new file mode 100644 index 0000000..3685387 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/todoist.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tooljet.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tooljet.png new file mode 100644 index 0000000..3aa0c5e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tooljet.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tor.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tor.png new file mode 100644 index 0000000..8faa84c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tor.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tp-link.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tp-link.png new file mode 100644 index 0000000..10875f4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tp-link.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tplink.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tplink.png new file mode 100644 index 0000000..425bd5e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tplink.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traccar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traccar.png new file mode 100644 index 0000000..8910a5c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traccar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traefik.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traefik.png new file mode 100644 index 0000000..7e068f2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traefik.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traggo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traggo.png new file mode 100644 index 0000000..2cd8353 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/traggo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trakt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trakt.png new file mode 100644 index 0000000..d2af8b0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trakt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/transmission.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/transmission.png new file mode 100644 index 0000000..3b821ae Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/transmission.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trash-guides.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trash-guides.png new file mode 100644 index 0000000..8b90714 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trash-guides.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trilium.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trilium.png new file mode 100644 index 0000000..13a54c2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trilium.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trudesk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trudesk.png new file mode 100644 index 0000000..1f53098 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/trudesk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-core.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-core.png new file mode 100644 index 0000000..586c67c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-core.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-enterprise.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-enterprise.png new file mode 100644 index 0000000..4764566 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-enterprise.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-scale.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-scale.png new file mode 100644 index 0000000..f38942c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas-scale.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas.png new file mode 100644 index 0000000..586c67c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenas.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenascore.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenascore.png new file mode 100644 index 0000000..cd2fc79 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/truenascore.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tube-archivist-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tube-archivist-light.png new file mode 100644 index 0000000..9008943 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tube-archivist-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tube-archivist.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tube-archivist.png new file mode 100644 index 0000000..9c84ead Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tube-archivist.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tubesync.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tubesync.png new file mode 100644 index 0000000..56a00dd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tubesync.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/turbopack-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/turbopack-light.png new file mode 100644 index 0000000..293ccd1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/turbopack-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/turbopack.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/turbopack.png new file mode 100644 index 0000000..4ab7cf1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/turbopack.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tux.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tux.png new file mode 100644 index 0000000..87c66a0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tux.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tvheadend.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tvheadend.png new file mode 100644 index 0000000..10ed9dc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tvheadend.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tvp-vod.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tvp-vod.png new file mode 100644 index 0000000..ec4f55e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/tvp-vod.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twingate-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twingate-light.png new file mode 100644 index 0000000..372c212 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twingate-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twingate.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twingate.png new file mode 100644 index 0000000..1628f10 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twingate.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twitch.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twitch.png new file mode 100644 index 0000000..fb5503f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twitch.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twitter.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twitter.png new file mode 100644 index 0000000..2be176b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/twitter.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/typescript.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/typescript.png new file mode 100644 index 0000000..6a72efb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/typescript.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/typo3.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/typo3.png new file mode 100644 index 0000000..43b4f09 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/typo3.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubiquiti-networks.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubiquiti-networks.png new file mode 100644 index 0000000..820c55f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubiquiti-networks.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubiquiti.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubiquiti.png new file mode 100644 index 0000000..820c55f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubiquiti.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubooquity.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubooquity.png new file mode 100644 index 0000000..cf37a87 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubooquity.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubuntu-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubuntu-alt.png new file mode 100644 index 0000000..ff16e47 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubuntu-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubuntu.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubuntu.png new file mode 100644 index 0000000..7e4a419 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ubuntu.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uc-browser.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uc-browser.png new file mode 100644 index 0000000..27e6d26 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uc-browser.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uc.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uc.png new file mode 100644 index 0000000..45c3522 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uc.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/udemy-learning.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/udemy-learning.png new file mode 100644 index 0000000..0c24abc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/udemy-learning.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/udemy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/udemy.png new file mode 100644 index 0000000..ee0d30f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/udemy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ultimate-guitar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ultimate-guitar.png new file mode 100644 index 0000000..16fbd4a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ultimate-guitar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ultimateguitar.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ultimateguitar.png new file mode 100644 index 0000000..9e28ffd Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ultimateguitar.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-analytics-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-analytics-light.png new file mode 100644 index 0000000..541211d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-analytics-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-analytics.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-analytics.png new file mode 100644 index 0000000..0ad03e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-analytics.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-light.png new file mode 100644 index 0000000..541211d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami.png new file mode 100644 index 0000000..0ad03e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umami.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umbrel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umbrel.png new file mode 100644 index 0000000..7639066 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/umbrel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unami-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unami-light.png new file mode 100644 index 0000000..60dc41e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unami-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unami.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unami.png new file mode 100644 index 0000000..ca3b34c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unami.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi-controller.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi-controller.png new file mode 100644 index 0000000..35b046a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi-controller.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi-protect.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi-protect.png new file mode 100644 index 0000000..0af359a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi-protect.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi.png new file mode 100644 index 0000000..820c55f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unifi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unificontroller.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unificontroller.png new file mode 100644 index 0000000..339da58 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unificontroller.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uninterruptible-power-supply.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uninterruptible-power-supply.png new file mode 100644 index 0000000..37433c9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uninterruptible-power-supply.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/universal-media-server-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/universal-media-server-light.png new file mode 100644 index 0000000..cc21ee6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/universal-media-server-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/universal-media-server.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/universal-media-server.png new file mode 100644 index 0000000..301d1ff Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/universal-media-server.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unmanic.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unmanic.png new file mode 100644 index 0000000..2288c8b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unmanic.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unraid-alt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unraid-alt.png new file mode 100644 index 0000000..d72a2b0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unraid-alt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unraid.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unraid.png new file mode 100644 index 0000000..44e6d32 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/unraid.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/untangle.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/untangle.png new file mode 100644 index 0000000..e675661 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/untangle.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/updog.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/updog.png new file mode 100644 index 0000000..22fdd21 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/updog.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ups.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ups.png new file mode 100644 index 0000000..3ce7a7e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ups.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/upsnap.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/upsnap.png new file mode 100644 index 0000000..c1746b8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/upsnap.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uptime-kuma.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uptime-kuma.png new file mode 100644 index 0000000..e526620 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/uptime-kuma.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/urbackup-server.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/urbackup-server.png new file mode 100644 index 0000000..40458c8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/urbackup-server.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/urbackup.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/urbackup.png new file mode 100644 index 0000000..40458c8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/urbackup.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/valetudo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/valetudo.png new file mode 100644 index 0000000..1fa0979 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/valetudo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/varnish.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/varnish.png new file mode 100644 index 0000000..5ea22d4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/varnish.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vault-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vault-light.png new file mode 100644 index 0000000..a02c7ef Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vault-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vault.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vault.png new file mode 100644 index 0000000..6d86c3b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vault.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vaultwarden-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vaultwarden-light.png new file mode 100644 index 0000000..a6fe552 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vaultwarden-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vaultwarden.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vaultwarden.png new file mode 100644 index 0000000..5dd0811 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vaultwarden.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/veeam.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/veeam.png new file mode 100644 index 0000000..66dbf67 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/veeam.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vercel-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vercel-light.png new file mode 100644 index 0000000..7e28f7e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vercel-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vercel.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vercel.png new file mode 100644 index 0000000..2092843 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vercel.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/verizon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/verizon.png new file mode 100644 index 0000000..82c120c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/verizon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vi.png new file mode 100644 index 0000000..94f330a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vikunja.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vikunja.png new file mode 100644 index 0000000..10e3321 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vikunja.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virgin-media.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virgin-media.png new file mode 100644 index 0000000..67d6708 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virgin-media.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virtualmin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virtualmin.png new file mode 100644 index 0000000..4b39d84 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virtualmin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virtualradarserver.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virtualradarserver.png new file mode 100644 index 0000000..f73d79c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/virtualradarserver.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/viseron.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/viseron.png new file mode 100644 index 0000000..c940974 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/viseron.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vivaldi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vivaldi.png new file mode 100644 index 0000000..5ea51c9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vivaldi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-esxi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-esxi.png new file mode 100644 index 0000000..3c9052c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-esxi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-horizon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-horizon.png new file mode 100644 index 0000000..3e7b870 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-horizon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-vcenter.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-vcenter.png new file mode 100644 index 0000000..3c9052c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-vcenter.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-workstation.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-workstation.png new file mode 100644 index 0000000..35af6e3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware-workstation.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware.png new file mode 100644 index 0000000..cdd3f59 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmware.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwareesxi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwareesxi.png new file mode 100644 index 0000000..e424995 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwareesxi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwarehorizon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwarehorizon.png new file mode 100644 index 0000000..5f08013 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwarehorizon.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwarevcenter.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwarevcenter.png new file mode 100644 index 0000000..527b5f3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vmwarevcenter.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voip-info.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voip-info.png new file mode 100644 index 0000000..5cba51c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voip-info.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voip-ms.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voip-ms.png new file mode 100644 index 0000000..6b7ff9e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voip-ms.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/volumio.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/volumio.png new file mode 100644 index 0000000..c325ceb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/volumio.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voron.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voron.png new file mode 100644 index 0000000..f415627 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/voron.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vscode.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vscode.png new file mode 100644 index 0000000..af38c2d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vscode.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vultr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vultr.png new file mode 100644 index 0000000..a0e982b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vultr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vuplus.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vuplus.png new file mode 100644 index 0000000..311fbe0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/vuplus.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakapi.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakapi.png new file mode 100644 index 0000000..9688681 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakapi.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakatime-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakatime-light.png new file mode 100644 index 0000000..e532062 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakatime-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakatime.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakatime.png new file mode 100644 index 0000000..9aea1b2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wakatime.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wallabag.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wallabag.png new file mode 100644 index 0000000..4835d02 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wallabag.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wanikani.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wanikani.png new file mode 100644 index 0000000..d0fb828 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wanikani.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ward.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ward.png new file mode 100644 index 0000000..68ecfbb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ward.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watcher.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watcher.png new file mode 100644 index 0000000..9c99c99 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watcher.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watchtower.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watchtower.png new file mode 100644 index 0000000..acc25e7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watchtower.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watchyourlan.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watchyourlan.png new file mode 100644 index 0000000..fd73e8d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/watchyourlan.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/waze.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/waze.png new file mode 100644 index 0000000..cdd4767 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/waze.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wazuh.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wazuh.png new file mode 100644 index 0000000..e595652 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wazuh.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wbo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wbo.png new file mode 100644 index 0000000..2982d14 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wbo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/web-whisper.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/web-whisper.png new file mode 100644 index 0000000..92f271a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/web-whisper.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webdav.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webdav.png new file mode 100644 index 0000000..5a62b09 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webdav.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webhook.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webhook.png new file mode 100644 index 0000000..aaf6efb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webhook.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webhookd.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webhookd.png new file mode 100644 index 0000000..495cc05 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webhookd.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webkit.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webkit.png new file mode 100644 index 0000000..f9939e0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webkit.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webmin.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webmin.png new file mode 100644 index 0000000..956a054 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webmin.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webpdf.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webpdf.png new file mode 100644 index 0000000..c2cd343 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webpdf.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtools.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtools.png new file mode 100644 index 0000000..25f6527 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtools.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtop.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtop.png new file mode 100644 index 0000000..ebb34e6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtop.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtorrent.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtorrent.png new file mode 100644 index 0000000..f8d833a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtorrent.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtrees.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtrees.png new file mode 100644 index 0000000..c7789f7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/webtrees.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wekan.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wekan.png new file mode 100644 index 0000000..9c9cb40 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wekan.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wetty.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wetty.png new file mode 100644 index 0000000..5a04e7b Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wetty.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wg-gen-web-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wg-gen-web-light.png new file mode 100644 index 0000000..f0c17f8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wg-gen-web-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wg-gen-web.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wg-gen-web.png new file mode 100644 index 0000000..e76da21 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wg-gen-web.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wger.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wger.png new file mode 100644 index 0000000..2bc1928 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wger.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wggenweb.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wggenweb.png new file mode 100644 index 0000000..9191b95 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wggenweb.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whats-up-docker-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whats-up-docker-light.png new file mode 100644 index 0000000..1315e23 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whats-up-docker-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whats-up-docker.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whats-up-docker.png new file mode 100644 index 0000000..db538b4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whats-up-docker.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whatsapp.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whatsapp.png new file mode 100644 index 0000000..65e3488 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whatsapp.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whisparr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whisparr.png new file mode 100644 index 0000000..f45bdbb Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whisparr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whooglesearch.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whooglesearch.png new file mode 100644 index 0000000..0a04176 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/whooglesearch.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wikijs.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wikijs.png new file mode 100644 index 0000000..7f41b12 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wikijs.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-10.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-10.png new file mode 100644 index 0000000..3a90a04 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-10.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-11.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-11.png new file mode 100644 index 0000000..e82db29 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-11.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-7.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-7.png new file mode 100644 index 0000000..eb1c98d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-7.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-95.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-95.png new file mode 100644 index 0000000..da20650 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-95.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-98.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-98.png new file mode 100644 index 0000000..f84e066 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-98.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-admin-center.jpg b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-admin-center.jpg new file mode 100644 index 0000000..f80e3c9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-admin-center.jpg differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-vista.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-vista.png new file mode 100644 index 0000000..01cadf7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-vista.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-xp.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-xp.png new file mode 100644 index 0000000..bf2e6f0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/windows-xp.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wings.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wings.png new file mode 100644 index 0000000..04aa3bf Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wings.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wireguard.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wireguard.png new file mode 100644 index 0000000..b8181d6 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wireguard.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wizarr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wizarr.png new file mode 100644 index 0000000..841afd0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wizarr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wled.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wled.png new file mode 100644 index 0000000..79b956f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wled.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/woodpecker-ci-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/woodpecker-ci-light.png new file mode 100644 index 0000000..560ea20 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/woodpecker-ci-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/woodpecker-ci.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/woodpecker-ci.png new file mode 100644 index 0000000..51fcc8e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/woodpecker-ci.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wordpress.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wordpress.png new file mode 100644 index 0000000..4b84ac3 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wordpress.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/workadventure.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/workadventure.png new file mode 100644 index 0000000..97e6176 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/workadventure.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wownero.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wownero.png new file mode 100644 index 0000000..e3ddaf5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wownero.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wud-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wud-light.png new file mode 100644 index 0000000..1315e23 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wud-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wud.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wud.png new file mode 100644 index 0000000..db538b4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/wud.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xbackbone.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xbackbone.png new file mode 100644 index 0000000..9f7fe4d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xbackbone.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xcp-ng.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xcp-ng.png new file mode 100644 index 0000000..1a217ba Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xcp-ng.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xen-orchestra.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xen-orchestra.png new file mode 100644 index 0000000..949d144 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xen-orchestra.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xenorchestra.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xenorchestra.png new file mode 100644 index 0000000..873707c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xenorchestra.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xigmanas.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xigmanas.png new file mode 100644 index 0000000..7874f03 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xigmanas.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xmr.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xmr.png new file mode 100644 index 0000000..1b9d76a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xmr.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xmrig.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xmrig.png new file mode 100644 index 0000000..25bb357 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xmrig.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xteve.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xteve.png new file mode 100644 index 0000000..d8df8ee Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xteve.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xwiki.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xwiki.png new file mode 100644 index 0000000..103ef01 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/xwiki.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yacht-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yacht-light.png new file mode 100644 index 0000000..f5c9353 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yacht-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yacht.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yacht.png new file mode 100644 index 0000000..ad7df05 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yacht.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yahoo-mail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yahoo-mail.png new file mode 100644 index 0000000..bc1588e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yahoo-mail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yahoo.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yahoo.png new file mode 100644 index 0000000..7b2fe7e Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yahoo.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yandex.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yandex.png new file mode 100644 index 0000000..2100d61 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yandex.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yarn-social.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yarn-social.png new file mode 100644 index 0000000..c342a5d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yarn-social.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ycombinator.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ycombinator.png new file mode 100644 index 0000000..a94c91d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ycombinator.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ymarks.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ymarks.png new file mode 100644 index 0000000..8d4d3a2 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ymarks.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ynab.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ynab.png new file mode 100644 index 0000000..f4c0234 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/ynab.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/your-spotify.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/your-spotify.png new file mode 100644 index 0000000..63cefbc Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/your-spotify.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yourls.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yourls.png new file mode 100644 index 0000000..6cbc43a Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yourls.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-kids.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-kids.png new file mode 100644 index 0000000..997157d Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-kids.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-light.png new file mode 100644 index 0000000..4c93310 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-music.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-music.png new file mode 100644 index 0000000..ef5fcd4 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-music.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-play.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-play.png new file mode 100644 index 0000000..92b3329 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube-play.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube.png new file mode 100644 index 0000000..4646860 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtube.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtubedl.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtubedl.png new file mode 100644 index 0000000..8055104 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/youtubedl.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yts.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yts.png new file mode 100644 index 0000000..ade05d1 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yts.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yunohost-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yunohost-light.png new file mode 100644 index 0000000..32caab8 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yunohost-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yunohost.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yunohost.png new file mode 100644 index 0000000..05aad0c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/yunohost.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabbix-v2.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabbix-v2.png new file mode 100644 index 0000000..59f5b7f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabbix-v2.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabbix.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabbix.png new file mode 100644 index 0000000..112bee5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabbix.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabka.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabka.png new file mode 100644 index 0000000..b83ecb7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zabka.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zammad.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zammad.png new file mode 100644 index 0000000..a1268b5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zammad.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zendesk.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zendesk.png new file mode 100644 index 0000000..ae4e4c5 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zendesk.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zerotier.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zerotier.png new file mode 100644 index 0000000..26d79c9 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zerotier.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zigbee2mqtt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zigbee2mqtt.png new file mode 100644 index 0000000..d72d7c0 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zigbee2mqtt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zipline-light.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zipline-light.png new file mode 100644 index 0000000..c7fee2f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zipline-light.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zipline.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zipline.png new file mode 100644 index 0000000..abd8849 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zipline.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/znc.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/znc.png new file mode 100644 index 0000000..53cdb09 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/znc.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zohomail.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zohomail.png new file mode 100644 index 0000000..489664f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zohomail.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zoneminder.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zoneminder.png new file mode 100644 index 0000000..4022e8f Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zoneminder.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zoraxy.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zoraxy.png new file mode 100644 index 0000000..cc2f404 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zoraxy.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zulip.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zulip.png new file mode 100644 index 0000000..60d01b7 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zulip.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zwavejs2mqtt.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zwavejs2mqtt.png new file mode 100644 index 0000000..20f3e39 Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/icons/zwavejs2mqtt.png differ diff --git a/roles/stacks/composes/files/homepage/datas/homepage/datas/images/favicon.png b/roles/stacks/composes/files/homepage/datas/homepage/datas/images/favicon.png new file mode 100644 index 0000000..87adc4c Binary files /dev/null and b/roles/stacks/composes/files/homepage/datas/homepage/datas/images/favicon.png differ diff --git a/roles/stacks/composes/files/itzg/datas/itzg/datas/server-icon.png b/roles/stacks/composes/files/itzg/datas/itzg/datas/server-icon.png new file mode 100644 index 0000000..04aa3bf Binary files /dev/null and b/roles/stacks/composes/files/itzg/datas/itzg/datas/server-icon.png differ diff --git a/roles/stacks/composes/files/itzg/templates/itzg/templates/itzg/server_properties.j2 b/roles/stacks/composes/files/itzg/templates/itzg/templates/itzg/server_properties.j2 new file mode 100644 index 0000000..76290c8 --- /dev/null +++ b/roles/stacks/composes/files/itzg/templates/itzg/templates/itzg/server_properties.j2 @@ -0,0 +1,64 @@ +# {{ ansible_managed }} +# master: {{ stacks_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} +#Minecraft server properties +difficulty={{ itzg_difficulty }} +level-seed={{ itzg_levelseed }} +max-players={{ itzg_maxplayers }} +motd={{ itzg_motd }} +server-port={{ itzg_serverport }} +query.port={{ itzg_queryport }} +rcon.port={{ itzg_rconport }} +gamemode={{ itzg_gamemode }} +rcon.password={{ itzg_rconpassword }} +online-mode={{ itzg_onlinemode }} +sync-chunk-writes={{ itzg_syncchunkwrites }} +max-tick-time={{ itzg_maxticktime }} +simulation-distance={{ itzg_simulationdistance }} +view-distance={{ itzg_viewdistance }} +admin-slot=true +allow-flight=false +allow-nether=true +broadcast-console-to-ops=true +broadcast-rcon-to-ops=true +enable-command-block=true +enable-jmx-monitoring=false +enable-query=true +enable-rcon=true +enable-status=true +enforce-secure-profile=true +enforce-whitelist=false +entity-broadcast-range-percentage=100 +force-gamemode=false +function-permission-level=2 +generate-structures=true +generator-settings={} +hardcore=false +hide-online-players=false +initial-disabled-packs= +initial-enabled-packs=vanilla,fabric +level-name=world +level-type=minecraft:normal +max-chained-neighbor-updates=1000000 +max-world-size=29999984 +network-compression-threshold=256 +op-permission-level=4 +player-idle-timeout=30 +prevent-proxy-connections=false +previews-chat=true +pvp=true +rate-limit=0 +require-resource-pack=false +resource-pack= +resource-pack-prompt= +resource-pack-sha1= +server-ip=0.0.0.0 +spawn-animals=true +spawn-monsters=true +spawn-npcs=true +spawn-protection=16 +text-filtering-config= +use-native-transport=true +verify-names=true +white-list=false diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/404.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/404.html new file mode 100644 index 0000000..2a30dfc --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/404.html @@ -0,0 +1,13 @@ +--- +layout: default +title: 404 - Page non trouvée +permalink: /404.html +--- + +
+

Oops, cette page n'éxiste pas.

+

Allez de l'avant! (erreur 404)

+
+ + Not found +
diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/CHANGELOG.md b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/CHANGELOG.md new file mode 100644 index 0000000..786b776 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/CHANGELOG.md @@ -0,0 +1,229 @@ +## v6.0.1 (2023-06-08) + +This version has been in the works for a few years. It includes several new features that were highly requested, numerous bug fixes, new documentation, and aggresively encourages migrating from the old Google Universal Analytics to the new Analytics 4. + +#### Breaking changes + +- As of July 2023, Google Universal Analytics is going away and being replaced by Google Analytics 4. Beautiful Jekyll sites that still use the old analytics tag will show a warning to encourage them to move to Analytics 4 (#1096). +- More control over RSS feed sharing: previously, an RSS feed was *always* generated, and if the config setting `rss-description` was set then there was an RSS icon in the footer. Now, an RSS feed is only generated when the config setting `rss-description` exists, and an RSS footer icon is only shown if `rss: true` is set in the `social-network-links` config settings. + +#### New parameters and settings + +- Added `navbar-var-length` config setting that allows the navigation menu to be the same length as the longest sub-menu, so that long words in the submenu are not cut off (#765) +- Added `post_search` config setting that creates a Search button in the navbar (#770) +- Added `edit_page_button` config setting that adds a "Edit page" button to the footer (to edit the current page on GitHub) (#1004) +- Added `footer-hover-col` config setting to customize the hover colour of links in the footer (#848) + +#### New features and improvements + +- Made the home page feed more accessible for screen readers (#950) +- Added support for giscus comments (#886) and CommentBox (#960) +- Added support for Cloudflare Analytics (#797) +- Added Reddit in share options of posts (#815) + +#### Bug fixes + +- Fixed page titles, subtitles, and excerpts rendering correctly when there are special characeters in them (#856) +- Fixed bug where navbar secondary level dropdown items didn't inherit the same colour as the primary navbar links +- Fixed bug where the navbar "burger" collapsed button didn't always revert back to a light colour +- Fixed bug where using an image as a navbar title did not render in GitHub Project pages that did not have a custom domain +- Fixed bug where image thumbnails on the feed page were always forced into a square rather than maintaining a proper image aspect ratio +- Fixed bug where special characters in the title led to broken share tags (#744) +- Fixed bug where staticman didn't work jQuery slim version is used (#766) +- Fixed very long strings to wrap around the next line rather than go off-screen (#787) + +#### Small changes + +- Updated staticman from using v2 (public servers) to v3 (private servers) due to the public servers becoming obsolete (#775) +- Added social network links for Patreon, Medium, Itch.io, Discord, Kaggle, Hackerrank (#783, #788, #907, #961, #978) +- Slightly reworked margins and position for avatar image to resolve an alignment issue on Safari +- Changed the width at which the navbar collapses to a higher threshold because most modern non-mobile browsers are >1000px + + +## v5.0.0 (2020-09-15) + +One of the major changes in this version is that a lot of time was spent on rethinking the entire SEO and social media sharing model (how a page looks on eg. Google, Twitter, Facebok). It was redesigned to be more simple and customizable. The new documentation has a section dedicated to SEO and social media sharing of a page. Unfortunately some changes that are not backwards-compatible had to be made. + +#### Breaking changes + +- Renamed `description` YAML parameter to `share-description` to be more clear +- Renamed `description` config setting to `rss-description` since it was only used in RSS (the FAQ explains the difference between YAML parameters and config settings if you're confused) +- Removed YAML parameter `use-site-title` (you can now specify the exact title using `share-title`) +- Removed undocumented YAML parameters `meta-title` and `meta-description` +- Removed `link-tags` config setting because it wasn't necessary. If you use tags, there will now always be a tags page created; if you don't use tags there won't be a tags page. +- The YAML parameter `show-avatar` is now true by default. This has always been the case for GitHub Pages users, but not for `remote_theme` users. For consistency, it's now the default for everyone. (#715) + +#### New parameters and settings + +- Added `full-width` YAML parameter to allow having full-width pages +- Added `feed_show_excerpt` config setting to show/hide the post excerpts on the feed page +- Added `feed_show_tags` config setting to show/hide the list of tags on post previews on the feed page +- Added `share-title` YAML parameter to give control over the search engine/social media title +- Added `last-updated` YAML parameter to show a "Last Updated on" date for blog posts +- Added `before-content` and `after-content` YAML parameters that allow you to add some common HTML before the main content of a page (below the title) or after the main content (above the footer). Works in a similar way to `footer-extra`. +- Added `head-extra` YAML parameter which is similar to `footer-extra` but is used to include custom HTML code in a page's `` tag +- Added `site-js` config setting to provide JavaScript files that are used on all pages in the site + +#### New features and improvements + +- Improved the `footer-extra` YAML parameter to support multiple files instead of only a single file +- Added automatic navbar color detection (#702) +- When `nav-short` is turned on, the avatar will also be shorter +- Changed navbar and footer background colour to be slightly darker, for better contrast with the default white page background for accessibility reasons +- Changed the behaviour of `site-css` to include site-wide CSS file **before** instead of after page-specific files +- Renamed internal css/js files from "main" to "beautifuljekyll" to make it easier for users to troubleshoot +- Added alt text to all images for better accessibility +- Made thumbnail images square instead of circles, as users reported that circles cut off important parts of images + +#### Bug fixes + +- Fixed rendering issues with `nav-short` parameter that caused the body of the page to start too low +- Fixed some CSS styles that broke during the bootstrap 4 migration (#716) + +#### Library upgrades + +- Upgraded kramdown to version 2.3.0 to fix security issues +- Upgraded jQuery to version 3.5.1 to fix a couple security vulnerabilities with the previous version + +## v4.1.0 (2020-08-08) + +- Added Open Graph `site_name` meta field to pages automatically +- Added `text-col` config setting for main text color (#694) +- Added `keywords` config setting to set the meta keywords on all pages (for SEO purposes) (#691) +- Added `mobile-theme-col` config setting to allow a mobile theme colour (#692) +- Added `site-css` config setting in the config file to provide CSS files that are used on all pages in the site (#695) +- Added YAML parameter `description`: creates the meta description on a page, intended to provide a brief description of the page for search engines and when the page is shared (#690) + +## v4.0.1 (2020-07-13) + +- Fixed staticman comments UI that was broken since the migration to bootstrap 4 + +## v4.0.0 (2020-07-12) + +- **BREAKING CHANGE** Replace `image` YAML parameter with `thumbnail-img` to be more clear +- **MAJOR BEHAVIOUR CHANGE** Don't use the thumbnail as the avatar image +- Cover image will automatically be used as thumbnail if none is provided +- Image to share on social media will use the cover image or thumbnail if none is provided +- All images (social media share, thumbnail, cover) can use either relative or absoluate paths. +- Fixed issue where if a dropdown menu was the last item in the menu bar, it did not have a proper margin on the right +- Added social network links: Mastodon (#646), Google Scholar, ORCID (#670) +- Added support for sharing pages on new social network: VK (#657) +- Use Open Graph type 'article' for blog posts (#669) +- Use Twitter's large sumary card (large image) when there is a cover image, thumbnail image, or share image specified (#668) +- Made post images in the feed page smaller on smaller devices +- Fixed jQuery version in staticman (#671) + +## v3.0.0 (2020-05-07) + +- **BREAKING CHANGE** Upgraded from Bootstrap 3.3.2 to 4.4.1. This involved a major rewrite of most components. This shouldn't affect any users unless you have custom HTML/CSS code which the new Bootstrap could have broken. +- **BREAKING CHANGE** Renamed `bigimg` YAML parameter to `cover-img` +- **BREAKING CHANGE** Removed `googlefonts` YAML parameter since googlefonts are just CSS so they can be loaded via `ext-css` +- **BREAKING CHANGE** Upgraded from jQuery 1.11.2 to 3.4.2. This should not affect most people +- Added `navbar-border-col` setting in the config file +- Added accessibility features where possible +- Made the theme completely responsive by rewriting all CSS to use 'rem' instead of 'px' +- Rewrote and simplified some JavaScript code to use CSS or Bootstrap alternatives that weren't available in 2015 +- Removed most of the sample posts so that users only have two sample posts to learn from +- Improvements to the README instructions + +## v2.3.0 (2020-04-29) + +- Added YAML parameter `footer-extra` for including custom content in the footer +- Fixed issue: linking to a specific part of a page resulted in scrolling too far (#69) +- Added YAML parameter `nav-short` to have navbar permanently collapsed +- Added social network link: Calendly +- Fixed bug where RSS link in footer was showing even when turned off + +## v2.2.0 (2020-04-27) + +- Added social network link: Telegram (#625) (thanks @mashed-potatoes) +- Moved the demo site to an independent URL: https://beautifuljekyll.com +- Major documentation overhaul and cleanup of old files +- Fixed a few bugs from the remote_theme migration + +## v2.0.0 (2020-04-26) + +- Beautiful-Jekyll v2.0.0 available as an official Ruby gem +- Beautifull-Jekyll now supports the `remote_theme` config (#339) (thanks @gpotter2 and @skalee) +- Consolidated the demo site, the ruby gem, and the master branch into one +- Added a `home` layout and used it in the index page +- Added readtime support for the post header (#622) (thanks @MutMatt and @rubyreads) +- Removed the dependency on `_data` folder since it doesn't get copied when using `remote_theme` (#614) +- Added support for configuring lang attribute on `html` tag (#608) (thanks @skalee) +- Added ability to disable round logo (thanks @gpotter2) +- Added support for Utterances comments (#596) (thanks @colynn) +- Removed 'just-comments' as it's getting killed at the end of the year +- Upgraded font-awesome to 5.12.1 (#587) (thanks @cketti) + +## Prior to 2020 + +**2018-12-24** Add support for Staticman comments (#440) (thanks @VincentTam) + +**2018-10-19** Move Google Analytics to the head (#419) (thanks @jpvicari) + +**2018-06-08** Add support for Facebook comments (#350) (thanks @npes87184) + +**2018-02-22** Automatically generate sitemap (#323) (thanks @JosemyDuarte) + +**2018-01-18** Add clickable tags to each post and a tags index page, works for GitHub sites (#307) (thanks @OCram85) + +**2018-01-14** Redo Dockerfile (#302) (thanks @jennydaman) + +**2018-01-06** More color personalization options (#297 and #299) (thanks @jennydaman) + +**2018-01-05** Abstract the social networks logic (thanks @OCram85) + +**2018-01-03** Avatar image no longer causes a ghost click (thanks @alefi87) + +**2017-10-16** Add GitHub buttons to posts (#265) (thanks @yonicd) + +**2017-09-04** Ability to change colour/image of navbar/footer/body + +**2017-08-17** Add support for notification, error, and warning boxes in markdown (#227) (thanks @OCram85) + +**2017-08-12** Add social buttons for twitch, yelp, and steam (#234) (thanks @TheRealBenForce) + +**2017-03-30** Make the footer contact links friendly for screen readers (thanks @eugenius1) + +**2017-03-30** Started a CHANGELOG file (thanks @eugenius1) + +**2017-01-28** Add Subresource Integrity (SRI) support (#164) (thanks @tony-ho) + +**2017-01-09** Add Google Tag Manager Integration (#157) (thanks @csarigoz) + +**2017-01-06** Add options to configure HTML document title (#154) (thanks @tony-ho) + +**2016-12-25** Allow dynamic images on each blog post (#143) (thanks @bbritten) + +**2016-12-15** Support `title-img` config param to have image in the navbar instead of text + +**2016-12-08** Add support for phone numbers in footer; fix #136 + +**2016-12-06** Update gemfile (#134) (thanks @stephentuso) + +**2016-10-09** Add Docker deployment (#114) (thanks @mangar) + +**2016-08-06** Add social share buttons for posts (thanks @rtlee9) + +**2016-07-29** Add CSS styling to code chunks + +**2016-07-27** Add clickable tags that lead to a tag page (doesn't work for GitHub hosted sites) (thanks @epwalsh) + +**2016-07-21** Add support for twitter cards (sharing on Twitter will be better); fixes #70 + +**2016-03-18** Support full-width images in page headers; fixes #37 + +**2016-03-18** Support menus in navigation bar + +**2016-02-07** Avatar is now conditional (thanks @hristoyankov) + +**2016-02-02** Migrate (forced to...) to jekyll 3 + +**2016-01-22** Make sure not to include JQuery twice, fixes #29 + +**2015-11-19** Support external links in navigation bar; fixes #3 + +... Many small changes because the site was in its infancy + +**2015-03-12** Beautiful Jekyll version 0.0000001 is released! + diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/Gemfile b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/Gemfile new file mode 100644 index 0000000..1780a0c --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/Gemfile @@ -0,0 +1,32 @@ +# 2023-09-25 + +source "https://rubygems.org" + +gem 'mercenary', '~> 0.4.0' +gem 'kramdown' +gem 'kramdown-parser-gfm' +gem "webrick" +gem 'jemoji' +gem 'rouge' +gem "jekyll-watch" +gem 'jekyll-seo-tag' +gem 'jekyll-sitemap' +gem 'jekyll-spaceship' +gem 'jekyll-paginate' +gem 'jekyll-archives' +gem 'jekyll-gzip' +gem 'jekyll-minifier' +gem 'jekyll-admin' +gem 'jekyll-responsive-magick' +gem 'jekyll-include-cache' +gem "docker-template" +gem 'jekyll_picture_tag' +gem 'jekyll-loading-lazy' + +#group :development do +# gem 'envygeeks-rubocop' +# unless ENV["CI"] == "true" +# gem "travis" +# gem "pry" +# end +#end diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/Gemfile.lock b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/Gemfile.lock new file mode 100644 index 0000000..00ed394 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/Gemfile.lock @@ -0,0 +1,196 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (5.1.7) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.8.4) + public_suffix (>= 2.0.2, < 6.0) + colorator (1.1.0) + concurrent-ruby (1.2.2) + cssminify2 (2.0.1) + docker-api (1.34.2) + excon (>= 0.47.0) + multi_json + docker-template (0.22.0) + activesupport (>= 4.2, < 5.2) + docker-api (~> 1.28) + extras (~> 0.1) + json (>= 1.8) + pathutil (~> 0.7) + simple-ansi (~> 1.0) + thor (~> 0.19) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + excon (0.102.0) + execjs (2.8.1) + extras (0.3.0) + forwardable-extended (~> 2.5) + ffi (1.15.5) + forwardable-extended (2.6.0) + gemoji (3.0.1) + google-protobuf (3.23.2-x86_64-linux) + html-pipeline (2.14.3) + activesupport (>= 2) + nokogiri (>= 1.4) + htmlcompressor (0.4.0) + http_parser.rb (0.8.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + jekyll (4.3.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-admin (0.11.1) + jekyll (>= 3.7, < 5.0) + sinatra (>= 1.4) + sinatra-contrib (>= 1.4) + jekyll-archives (2.2.1) + jekyll (>= 3.6, < 5.0) + jekyll-gzip (2.5.1) + jekyll (>= 3.0, < 5.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-loading-lazy (0.1.1) + jekyll (>= 3.0, < 5.0) + nokogiri (>= 1.10, < 2.0) + jekyll-minifier (0.1.10) + cssminify2 (~> 2.0) + htmlcompressor (~> 0.4) + jekyll (>= 3.5) + json-minify (~> 0.0.3) + uglifier (~> 4.1) + jekyll-paginate (1.1.0) + jekyll-responsive-magick (1.2.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-spaceship (0.10.2) + gemoji (~> 3.0) + jekyll (>= 3.6, < 5.0) + nokogiri (~> 1.6) + rainbow (~> 3.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jekyll_picture_tag (2.0.4) + addressable (~> 2.6) + jekyll (~> 4.0) + mime-types (~> 3.0) + objective_elements (~> 1.1) + rainbow (~> 3.0) + ruby-vips (~> 2.0.17) + jemoji (0.13.0) + gemoji (>= 3, < 5) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + json (2.6.3) + json-minify (0.0.3) + json (> 0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + mime-types (3.5.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2023.0808) + minitest (5.18.0) + multi_json (1.15.0) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + nokogiri (1.15.2-x86_64-linux) + racc (~> 1.4) + objective_elements (1.1.2) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (5.0.1) + racc (1.7.0) + rack (2.2.7) + rack-protection (3.0.6) + rack + rainbow (3.1.1) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (3.30.0) + ruby-vips (2.0.17) + ffi (~> 1.9) + ruby2_keywords (0.0.5) + safe_yaml (1.0.5) + sass-embedded (1.63.3-x86_64-linux-musl) + google-protobuf (~> 3.23) + simple-ansi (1.0.2) + sinatra (3.0.6) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.0.6) + tilt (~> 2.0) + sinatra-contrib (3.0.6) + multi_json + mustermann (~> 3.0) + rack-protection (= 3.0.6) + sinatra (= 3.0.6) + tilt (~> 2.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + thor (0.20.3) + thread_safe (0.3.6) + tilt (2.2.0) + tzinfo (1.2.11) + thread_safe (~> 0.1) + uglifier (4.2.0) + execjs (>= 0.3.0, < 3) + unicode-display_width (1.8.0) + webrick (1.8.1) + +PLATFORMS + x86_64-linux-musl + +DEPENDENCIES + docker-template + jekyll-admin + jekyll-archives + jekyll-gzip + jekyll-include-cache + jekyll-loading-lazy + jekyll-minifier + jekyll-paginate + jekyll-responsive-magick + jekyll-seo-tag + jekyll-sitemap + jekyll-spaceship + jekyll-watch + jekyll_picture_tag + jemoji + kramdown + kramdown-parser-gfm + mercenary (~> 0.4.0) + rouge + webrick + +BUNDLED WITH + 2.3.25 diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/LICENSE b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/LICENSE new file mode 100644 index 0000000..0b6ae57 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Dean Attali + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/README.md b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/README.md new file mode 100644 index 0000000..e231eff --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/README.md @@ -0,0 +1,233 @@ +# Beautiful Jekyll + +[![Gem Version](https://badge.fury.io/rb/beautiful-jekyll-theme.svg)](https://badge.fury.io/rb/beautiful-jekyll-theme) + +> By [Dean Attali](https://deanattali.com) · [Demo](https://beautifuljekyll.com/) + +**Beautiful Jekyll** is a ready-to-use template to help you create a beautiful website quickly. Perfect for personal sites, blogs, or simple project websites. [Check out a demo](https://beautifuljekyll.com) of what you'll get after just two minutes. You can also look at [my personal website](https://deanattali.com) or [my consulting website](https://attalitech.com) to see it in use, or see [examples of websites](http://beautifuljekyll.com/examples) other people created using this theme. + +**If you enjoy Beautiful Jekyll, please consider [supporting me](https://github.com/sponsors/daattali). You'll also gain access to office hours and more features! ❤** + +## Table of contents + +- [Features](#features) +- [Sponsors 🏆](#sponsors) +- [**Build your website in 3 steps**](#build-your-website-in-3-steps) +- [Plans](#plans) +- [Add your own content](#add-your-own-content) +- [Customizing parameters for each page](#customizing-parameters-for-each-page) +- [Supported parameters](#supported-parameters) +- [Featured users (success stories!)](#featured-users-success-stories) +- [Next steps](#next-steps) +- [Getting help](#getting-help) +- [Credits and contributions](#contributions) + +# Features + +__Check out [*What's New?*](https://beautifuljekyll.com/updates/) to see the latest features!__ + +- **SIMPLE**: The primary goal of Beautiful Jekyll is to allow literally *anyone* to create a website in a few minutes. +- **Modern**: Uses the latest best practices and technologies to achieve nearly perfect scores on Google Chrome's Audit. +- **Mobile-first**: Designed to look great on both large-screen and small-screen (mobile) devices. +- **Highly customizable**: Many personalization settings such as changing the background colour/image, adding a logo. +- **Flexible usage**: Use Beautiful Jekyll directly on GitHub or via a Ruby gem - choose the best [development method](#build-your-website-in-3-steps) for you. +- **Battle-tested**: By using Beautiful Jekyll, you'll be joining 50,000+ users enjoying this theme since 2015. +- **SEO and social media support**: Customize how your site looks on Google and when shared on social media. +- **Comments support**: Add comments to any page using either [Disqus](https://disqus.com/), [Facebook comments](https://developers.facebook.com/docs/plugins/comments), [Utterances](https://utteranc.es/), [Staticman](https://staticman.net), [giscus](https://giscus.app), or [CommentBox](https://commentbox.io/). +- **Tags**: Any blog post can be tagged with keywords, and an index page is automatically generated. +- **Analytics**: Easily integrate Google Analytics, or other analytics platforms, to track visits to your website. +- **Search**: Let users easily find any page using a Search button in the navigation bar. +- **Photos support**: Any page can have a full-width cover photo and thumbnail. +- **RSS**: An RSS feed is automatically created, so you can even host a podcast easily with Beautiful Jekyll. + +

Sponsors 🏆

+ +Developing and maintaining Beautiful Jekyll takes a lot of time and effort - thank you to anyone who helps fund this effort! + +- [DoFollow](https://dofollow.co.uk/) +- [\_hyp3ri0n](https://hyperiongray.com) + +**[Become a sponsor for Beautiful Jekyll and unlock new features\!](https://github.com/sponsors/daattali/sponsorships?tier_id=39856)** + +# Build your website in 3 steps + +There are a few different ways to build a website using Beautiful Jekyll, and this document will go through the simplest one: using a fork on GitHub. For most people (including myself!), this easy method is the recommended one. + +Even if you choose to use one of the [advanced installation methods](https://beautifuljekyll.com/getstarted/#install-steps-hard), I still suggest you read through the easy method first. + +## The easy way (recommended!) + +Getting started is *literally* as easy as 1-2-3 :smile: + +Scroll down to see the steps involved, but here is a 30-second video just as a reference as you work through the steps. If you don't already have a [GitHub account](https://github.com), you'll need to sign up. + +![Installation steps](assets/img/install-steps.gif) + +### 1. Fork this project + +Click on the __*Fork*__ button at the top right corner of this page. Forking means that you're copying this entire project and all its files into your account. Do not click on the __*Create fork*__ button on the next page yet. + +### 2. Rename the repository to `YOURUSERNAME.github.io` + +You'll see the word "repository" used a lot in GitHub - it simply means "project". Under __*Repository name*__ you should see the name `beautiful-jekyll`, this is where you need to rename your project to `YOURUSERNAME.github.io` (replace `YOURUSERNAME` with your GitHub user name). It's important to use this exact name so that GitHub will recognize it and automatically create a website for this project. + +> Tip: If you want to use a different URL for your website, check out the [FAQ](https://beautifuljekyll.com/faq/#custom-domain) + +### 3. Customize your website settings + +Edit the `_config.yml` file to change any settings you want. To edit the file, first click on it to view the file, and on the next page click on the pencil icon to edit it (watch the video tutorial above if you're confused). The settings in the file are self-explanatory and there are comments inside the file to help you understand what each setting does. Any line that begins with a hashtag (`#`) is a comment, and the other lines are actual settings. After changing the settings, click the green __*Commit changes*__ button to save these edits. + +> Note: In the video above, only one setting in the `_config.yml` file is edited, but you should go through the rest of the settings as well. + +### 4. Congratulations! You have a website! + +If you named your project correctly and made an edit to the config file, your website should be ready in a minute or two at `https://YOURUSERNAME.github.io`. Every time you make a change to any file, your website will get rebuilt and should be updated in about a minute or so. Your website will be initialized with several sample blog posts and a couple other pages. + +## The harder way (for advanced users) + +The instructions above explain how to use Beautiful Jekyll in the easiest way: by forking on GitHub. There are more [advanced installation methods](https://beautifuljekyll.com/getstarted/#install-steps-hard) that include either using GitHub Pages with remote themes, or using Ruby gems. They provide you with more control, but are only intended for advanced users. + +> Note: Beautiful Jekyll was primarily designed to be used as a GitHub theme, so you will not get any support if you use this theme via Ruby gems. + +# Plans + +Beautiful Jekyll is, and always will be, free. But if you want to remove the Beautiful Jekyll ad from your website, use a Dark Mode skin, access office hours, or simply support the development efforts, [check out the different plans](https://beautifuljekyll.com/plans). + +# Add your own content + +To add pages to your site, you can either write a markdown file (`.md`) or you can write an HTML file. It's much easier to write markdown than HTML, so that's the recommended approach ([here's a great tutorial](https://markdowntutorial.com/) if you need to learn markdown in 5 minutes). + +To see an example of a markdown file, click on any file that ends in `.md`, for example [`aboutme.md`](./aboutme.md). On that page you can see some nicely formatted text (there's a word in bold, a link, a few bullet points), and if you click on the pencil icon to edit the file, you'll see the markdown code that generated the pretty text. Very easy! + +In contrast, look at [`tags.html`](./tags.html). That's how your write HTML - not as pretty. So stick with markdown if you don't know HTML. + +Any markdown or HTML file that you create will be available on your website under `https://.github.io/`. For example, if you create a file `about.md` (or `about.html`) then it'll exist at `https://.github.io/about`. + +Files you create inside the [`_posts`](./_posts) directory will be treated as blog entries. You can look at the existing files there to get an idea of how to write blog posts. Note the format of the blog post files - they must follow the naming convention of `YEAR-MONTH-DAY-title.md`. After you successfully add your own post, you can delete the existing files inside [`_posts`](./_posts) to remove the sample posts, as those are just demo posts to help you learn. + +# Customizing parameters for each page + +**One last important thing**: In order to have your new pages use this template and not just be plain HTML pages, **you must add [YAML front matter](https://jekyllrb.com/docs/front-matter/) to the top of each page**: + + +``` +--- +--- +``` + +This is where you'll be able to give each page some extra parameters (such as a title, a subtitle, an image, etc - [below is a list of all parameters](#supported-parameters)). Add any parameters you want between these two dashed lines, for example: + +``` +--- +title: Contact me +subtitle: Here you'll find all the ways to get in touch with me +--- +``` + +If you don't want to use any parameters on a page, you still need to use the two dashed lines. If you don't, then your file will be shown as-is without the Beautiful Jekyll template. + +You can look at the top of [`aboutme.md`](https://raw.githubusercontent.com/daattali/beautiful-jekyll/master/aboutme.md) as an example. + +**Important takeaway: ALWAYS add the YAML front matter, which is two lines of three dashes, to EVERY page. If you have any parameters, they go between the two lines.** + +# Supported parameters + +Below is a list of the parameters that Beautiful Jekyll supports (any of these can be added to the YAML front matter of any page). Remember to also look in the `_config.yml` file to see additional site-wide settings. + +## Main parameters + +These are the basic YAML parameters that you are most likely to use on most pages. + +Parameter | Description +----------- | ----------- +title | Page or blog post title +subtitle | Short description of page or blog post that goes under the title +tags | List of tags to categorize the post. Separate the tags with commas and place them inside square brackets. Example: `[personal, analysis, finance]` +cover-img | Include a large full-width image at the top of the page. You can either provide the path to a single image (eg. `"/path/to/img"`) , or a list of images to cycle through (eg. `["/path/img1", "/path/img2"]`). If you want to add a caption to an image, then you must use the list notation (use `[]` even if you have only one image), and each image should be provided as `"/path/to/img" : "Caption of image"`. +thumbnail-img | For blog posts, if you want to add a thumbnail that will show up in the feed, use `thumbnail-img: /path/to/image`. If no thumbnail is provided, then `cover-img` will be used as the thumbnail. You can use `thumbnail-img: ""` to disable a thumbnail. +comments | If you want do add comments to a specific page, use `comments: true`. Comments only work if you enable one of the comments providers (Facebook, disqus, staticman, utterances, giscus, CommentBox) in `_config.yml` file. Comments are automatically enabled on blog posts but not on other pages; to turn comments off for a specific post, use `comments: false`. + +## Parameters for SEO and social media sharing + +These parameters let you control what information shows up when a page is shown in a search engine (such as Google) or gets shared on social media (such as Twitter/Facebook). + +Parameter | Description +----------- | ----------- +share-title | A title for the page. If not provided, then `title` will be used, and if that's missing then the site title (from `_config.yml`) is used. +share-description | A brief description of the page. If not provided, then `subtitle` will be used, and if that's missing then an excerpt from the page content is used. +share-img | The image to show. If not provided, then `cover-img` or `thumbnail-img` will be used if one of them is provided. + +## Less commonly used parameters + +These are parameters that you may not use often, but can come in handy sometimes. + +Parameter | Description +----------- | ----------- +readtime | If you want a post to show how many minutes it will take to read it, use `readtime: true`. +show-avatar | If you have an avatar configured in the `_config.yml` but you want to turn it off on a specific page, use `show-avatar: false`. +social-share | By default, every blog post has buttons to share the page on social media. If you want to turn this feature off, use `social-share: false`. +nav-short | By default, the navigation bar gets shorter after scrolling down the page. If you want the navigation bar to always be short on a certain page, use `nav-short: true` +gh-repo | If you want to show GitHub buttons at the top of a post, this sets the GitHub repo name (eg. `daattali/beautiful-jekyll`). You must also use the `gh-badge` parameter to specify what buttons to show. +gh-badge | Select which GitHub buttons to display. Available options are: [star, watch, fork, follow]. You must also use the `gh-repo` parameter to specify the GitHub repo. +last-updated | If you want to show that a blog post was updated after it was originally released, you can specify an "Updated on" date. +layout | What type of page this is (default is `post` for blog posts and `page` for other pages). See _Page types_ section below for more information. + +## Advanced parameters + +These are advanced parameters that are only useful for people who need very fine control over their website. + +Parameter | Description +----------- | ----------- +footer-extra | If you want to include extra content below the social media icons in the footer, create an HTML file in the `_includes/` folder (for example `_includes/myinfo.html`) and set `footer-extra` to the name of the file (for example `footer-extra: myinfo.html`). Accepts a single file or a list of files. +before-content | Similar to `footer-extra`, but used for including HTML before the main content of the page (below the title). +after-content | Similar to `footer-extra`, but used for including HTML after the main content of the page (above the footer). +head-extra | Similar to `footer-extra`, but used if you have any HTML code that needs to be included in the `` tag of the page. +language | HTML language code to be set on the page's <html> element. +full-width | By default, page content is constrained to a standard width. Use `full-width: true` to allow the content to span the entire width of the window. +js | List of local JavaScript files to include in the page (eg. `/assets/js/mypage.js`) +ext-js | List of external JavaScript files to include in the page (eg. `//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js`). External JavaScript files that support [Subresource Integrity (SRI)](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) can be specified using the `href` and `sri` parameters eg.
`href: "//code.jquery.com/jquery-3.1.1.min.js"`
`sri: "sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="` +css | List of local CSS files to include in the page +ext-css | List of external CSS files to include in the page. External CSS files using SRI (see `ext-js` parameter) are also supported. + +## Page types + +- **post** - To write a blog post, add a markdown or HTML file in the `_posts` folder. As long as you give it YAML front matter (the two lines of three dashes), it will automatically be rendered like a blog post. Look at the existing blog post files to see examples of how to use YAML parameters in blog posts. +- **page** - Any page outside the `_posts` folder that uses YAML front matter will have a very similar style to blog posts. +- **home** - The home layout is meant to act as the homepage of your blog posts - it will display all your blog posts, sorted from newest to oldest. A file using the `home` layout must be named `index.html` (not `index.md` or anything else!). +- **minimal** - If you want to create a page with minimal styling (ie. without the bulky navigation bar and footer), assign `layout: minimal` to the YAML front matter. +- If you want to completely bypass the template engine and just write your own HTML page, simply omit the YAML front matter. Only do this if you know how to write HTML! + +# Featured users (success stories!) + +Visit the [Official website](http://beautifuljekyll.com/examples) to see sample websites using Beautiful Jekyll. + +If you'd like to showcase yourself and join this list, [upgrading to the Individual plan](https://github.com/sponsors/daattali/sponsorships?&tier_id=7362) will give you that publicity plus some other rewards! + +# Next steps + +Congratulations on making it this far! You now have all the tools to easily build a beautiful website for free. + +I highly recommend going over the [*Frequently Asked Questions*](https://beautifuljekyll.com/faq/) to find out answers to questions you may not even know you have. Every few months I suggest checking the [*What's New?*](https://beautifuljekyll.com/updates/) page to see if there are new features, and learn [how to update your site to the newest version](https://beautifuljekyll.com/faq/#updating) when it's time. + +You can also check out the [advanced installation methods](https://beautifuljekyll.com/getstarted/#install-steps-hard) that give you a little more control but are harder to use. Keep in mind that Beautiful Jekyll was primarily designed to be used as a GitHub theme, so you will not get any support if you choose one of the Ruby installation methods. + +# Getting help + +Visit the [FAQ page](https://beautifuljekyll.com/faq) for answers to commonly asked questions. + +**If you choose to [become a sponsor](https://beautifuljekyll.com/plans/), you'll have access to my [office hours](https://beautifuljekyll.com/officehours/) where you can ask for help.** You can also use the [Discussions](https://github.com/daattali/beautiful-jekyll/discussions) area to try and get help from the community. + +Beautiful Jekyll is used by 50,000+ people with wildly varying degrees of web skills, so it's impossible to answer all the questions that may arise. For any question that's not specifically related to Beautiful Jekyll and is more about Jekyll or web development in general, the answer can often be found on Google, in the [Jekyll documentation](https://jekyllrb.com/), or on the [Jekyll support forum](https://talk.jekyllrb.com/). + +# Contributions + +Thank you to [all past contributors](https://github.com/daattali/beautiful-jekyll/graphs/contributors). If you find any problems or would like to contribute in any way, feel free to create a pull request/open an issue/send me a message. + +You can also contribute by becoming an [official sponsor](https://github.com/sponsors/daattali/sponsorships?tier_id=39856) to help keep Beautiful Jekyll well-maintained! + +# Credits + +This template was not made *entirely* from scratch. I'd like to give special thanks to [Jekyll Now](https://github.com/barryclark/jekyll-now) and [Bootstrap Clean Blog](https://github.com/IronSummitMedia/startbootstrap-clean-blog), from whom I've taken several ideas initially. + +I'd also like to thank [Dr. Jekyll's Themes](https://drjekyllthemes.github.io/), [Jekyll Themes](http://jekyllthemes.org/), and another [Jekyll Themes](http://jekyllrc.github.io/jekyllthemes/) for featuring Beautiful Jekyll in their Jekyll theme directories. + diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_config.yml b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_config.yml new file mode 100644 index 0000000..941b59d --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_config.yml @@ -0,0 +1,464 @@ +# 2023-09-25 + +########################################################### +### Welcome to Beautiful Jekyll! +### This config file is meant for settings that affect your entire website. When you first +### set up your website you should go through all these settings and edit them, but after +### the initial set up you won't need to come back to this file often. +########################################################### + +# Beautiful Jekyll / Dean Attali +# 2fc73a3a967e97599c9763d05e564189 + +############################ +# --- Required options --- # +############################ + +# Name of website +title: Zogg + +# Your name to show in the footer +author: Olivier + +# Default language +locale: "fr" + +# Incremental regeneration +incremental: false + +############################################### +# --- List of links in the navigation bar --- # +############################################### + +navbar-links: + Intro: "intro" + A propos: "apropos" + Tags: "tags" + Inside: "inside" + Cookies: "privacy" + Kamis: "kamis" + Hub: "https://zogg.fr" + +################ +# --- Logo --- # +################ + +# Image to show in the navigation bar - works best with a square image +# Remove this parameter if you don't want an image in the navbar +avatar: "/assets/img/avatar.webp" + +# By default, the image is cut into a circle. You can disable this behaviour by setting 'round-avatar: false' +round-avatar: true + +# If you want to have an image logo in the top-left corner instead of having the title of the website, +# then specify the following parameter +#title-img: /path/to/image + +##################################### +# --- Footer social media links --- # +##################################### + +# Select the social network links that you want to show in the footer. +# Uncomment the links you want to show and add your information to each one. +social-network-links: + #email: "tech@zogg.fr" + #rss: true # remove this line if you don't want to show an RSS link at the bottom + github: kraoc + facebook: LB.Olivier + twitter: OlivLiliv + instagram: olivierlebris + linkedin: lebrisolivier + # patreon: + # youtube: @olivierlebris1609 + # medium: yourname + # reddit: yourname + # xing: yourname + # stackoverflow: "3943160/daattali" + # snapchat: deanat78 + # spotify: yourname + # telephone: +14159998888 + # steam: deanat78 + # twitch: yourname + # yelp: yourname + # telegram: yourname + # calendly: yourname + # mastodon: instance.url/@username + # ORCID: your ORCID ID + # google-scholar: your google scholar + # discord: "invite_code" or "users/userid" or "invite/invite_code" + # kaggle: yourname + # hackerrank: yourname + +# If you want your website to generate an RSS feed, provide a description +# The URL for the feed will be https:///feed.xml +rss-description: "Tutos 'rapides' & mood :p" + +########################### +# --- General options --- # +########################### + +page.date: "Europe/Paris" + +# Select which social network share links to show in posts +share-links-active: + twitter: true + facebook: true + linkedin: true + vk: false + +# How to display the link to your website in the footer +# Remove this if you don't want a link in the footer +url-pretty: "Zogg" + +# Excerpt word length - Truncate the excerpt of each post on the feed page to the specified number of words +excerpt_length: 50 + +# Whether or not to show an excerpt for every blog post in the feed page +feed_show_excerpt: true + +# Whether or not to show a list of tags below each post preview in the feed page +feed_show_tags: true + +# Add a search button to the navbar +post_search: true + +# Add a button in the footer to edit the current page. Only works if your website is hosted on GitHub +edit_page_button: false + +# Allow sub-menu items (second-level navigation menu items) to be longer than the top-level menu +# If this setting is off, then long sub-menu words might get cut off +# See https://github.com/daattali/beautiful-jekyll/issues/765 to understand the issue this setting can solve +navbar-var-length: false + +# The keywords to associate with your website, for SEO purposes +#keywords: "my,list,of,keywords" +keywords: "zogg,tutos,mood,linux,docker,portainer,container,stacks,ansible" + +###################################### +# --- Colours / background image --- # +###################################### + +# Personalize the colours in your website. Colour values can be any valid CSS colour + +page-col: "#adb6b8" +text-col: "#404040" +link-col: "#ff4d4d" +hover-col: "#cc0000" +navbar-col: "#1a5fb4" +navbar-text-col: "#fff" +navbar-border-col: "#DDDDDD" +footer-col: "#1a5fb4" +footer-text-col: "#fff" +footer-link-col: "#fff" +footer-hover-col: "#cc0000" + +# Alternatively, the navbar, footer, and page background can be set to an image +# instead of colour + +#navbar-img: "/assets/img/bgimage.webp" +#footer-img: "/assets/img/bgimage.webp" +#page-img: "/assets/img/bgimage.webp" + +# Suggest a colour for mobile browsers to use as the browser's theme. This is only supported by a few mobile browsers. +#mobile-theme-col: "#0085A1" + +# For any extra visual customization, you can include additional CSS files in every page on your site. List any custom CSS files here +#site-css: +# - "/assets/css/custom-styles.css" +site-css: + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/monokai-sublime.min.css" + - "/assets/css/zogg.css" + +# If you have common JavaScript files that should be included in every page, list them here +#site-js: +# - "/assets/js/custom-script.js" +site-js: + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/bash.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/css.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/dns.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/dockerfile.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/json.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/markdown.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/nginx.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/plaintext.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/properties.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/shell.min.js" + - "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/yaml.min.js" + - "/assets/js/zogg.js" + +################################# +# --- Web Analytics Section --- # +################################# + +# Fill in your Google Analytics tag ID (or "Measurement ID") to track your website usage +#gtag: "G-XXXXXXXXXX" + +# Fill in your Cloudflare Analytics beacon token to track your website using Cloudflare Analytics +#cloudflare_analytics: "" + +# Google Tag Manager ID +#gtm: "" + +# Matomo (aka Piwik) Web statistics +# Uncomment the following section to enable Matomo. The opt-out parameter controls +# whether or not you want to allow users to opt out of tracking. +#matomo: +# site_id: "9" +# uri: "demo.wiki.pro" +# opt-out: true +matomo: + site_id: "1" + uri: "matomo.zogg.fr" + opt-out: true + +# Google Universal Analytics ID -- deprecated +# As of July 2023 this is no longer supported by Google! If you are still using `google_analytics`, +# you should switch to using the `gtag` field above instead. +#google_analytics: "UA-XXXXXXXX-X" + +#################### +# --- Comments --- # +#################### + +# To use Disqus comments, sign up to https://disqus.com and fill in your Disqus shortname (NOT the userid) +#disqus: "" + +# To use Facebook Comments, create a Facebook app and fill in the Facebook App ID +#fb_comment_id: "" + +# To use CommentBox, sign up for a Project ID on https://commentbox.io +#commentbox: "" # Project ID, e.g. "5694267682979840-proj" + +# To use Utterances comments: (0) uncomment the following section, (1) fill in +# "repository" (make sure the repository is public), (2) Enable Issues in your repository, +# (3) Install the Utterances app in your repository https://github.com/apps/utterances +# See more details about the parameters below at https://utteranc.es/ +#utterances: +# repository: # GitHub username/repository eg. "daattali/beautiful-jekyll" +# issue-term: title # Mapping between blog posts and GitHub issues +# theme: github-light # Utterances theme +# label: blog-comments # Label that will be assigned to GitHub Issues created by Utterances + +# To use Staticman comments, uncomment the following section. You may leave the reCaptcha +# section commented if you aren't using reCaptcha for spam protection. +# Using Staticman requires advanced knowledge, please consult +# https://github.com/eduardoboucas/staticman/ and https://staticman.net/ for further +# instructions. For any support with staticman please direct questions to staticman and +# not to BeautifulJekyll. +#staticman: +# repository : # GitHub username/repository eg. "daattali/beautiful-jekyll" +# branch : master # If you're not using `master` branch, then you also need to update the `branch` parameter in `staticman.yml` +# endpoint : # URL of your deployment, with a trailing slash eg. "https:///v3/entry/github/" +# reCaptcha: # (optional, set these parameters in `staticman.yml` as well) +# siteKey : # You need to apply for a site key on Google +# secret : # Encrypt your password by going to https:///v3/encrypt/ + +# To use giscus comments: +# (0) Uncomment the following giscus section, (1) Enable Discussions in your GitHub repository, +# (2) Install the giscus app in your repository (details at https://giscus.app), +# (3) Fill in *all* the parameters below +# See more details about giscus and each of the following parameters at https://giscus.app +#giscus: +# hostname: giscus.app # Replace with your giscus instance's hostname if self-hosting +# repository: # GitHub username/repository eg. "daattali/beautiful-jekyll" +# repository-id: # ID of your repository, retrieve this info from https://giscus.app +# category: Announcements # Category name of your GitHub Discussion posts +# category-id: # ID of your category, retrieve this info from https://giscus.app +# mapping: pathname +# reactions-enabled: 1 +# emit-metadata: 0 +# theme: light + +################ +# --- Misc --- # +################ + +# Ruby Date Format to show dates of posts +#date_format: "%B %-d, %Y" +date_format: "%d/%m/%Y" + +# Facebook App ID +#fb_app_id: "" + +################################################################################# +# --- You don't need to touch anything below here (but you can if you want) --- # +################################################################################# + +# Output options (more information on Jekyll's site) +timezone: "Europe/Paris" +markdown: kramdown +highlighter: rouge +permalink: /:title +paginate: 5 + +kramdown: + input: GFM + syntax_highlighter_opts: + default_lang: html + css_class: 'syntax' + #hard_wrap: true + +defaults: + - scope: + path: "" + type: "posts" + values: + layout: "post" + comments: true + social-share: true + - scope: + path: "" + values: + layout: "page" + - scope: + path: "" + type: posts + values: + read_time: true + +exclude: + - CHANGELOG.md + - CNAME + - Gemfile + - Gemfile.lock + - LICENSE + - README.md + - screenshot.webp + - docs/ + - beautiful-jekyll-theme.gemspec + - /opt/docker/jekyll/data + - __images + - execjs* + +plugins: + - jekyll-archives + - jekyll-sitemap + - jekyll-paginate + - jekyll-seo-tag + - jekyll-spaceship + - jekyll-responsive-magick + - jemoji + - jekyll-admin + - jekyll-minifier + - jekyll-include-cache + - jekyll-gzip + - jekyll-loading-lazy + +url: "https://infos.zogg.fr" + +jekyll-spaceship: + processors: + - table-processor + - media-processor + - emoji-processor + #- mathjax-processor + #- plantuml-processor + #- mermaid-processor + #- polyfill-processor + #- element-processor + #mathjax-processor: + # src: + # - https://polyfill.io/v3/polyfill.min.js?features=es6 + # - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js + # config: + # tex: + # inlineMath: + # - ["$", "$"] + # - ['\(', '\)'] + # displayMath: + # - ["$$", "$$"] + # - ['\[', '\]'] + # svg: + # fontCache: "global" + # optimize: + # enabled: true + # include: [] + # exclude: [] + #plantuml-processor: + # mode: default + # css: + # class: plantuml + # syntax: + # code: "plantuml!" + # custom: ["@startuml", "@enduml"] + # src: http://www.plantuml.com/plantuml/svg/ + #mermaid-processor: + # mode: default + # css: + # class: mermaid + # syntax: + # code: "mermaid!" + # custom: ["@startmermaid", "@endmermaid"] + # config: + # theme: default + # src: https://mermaid.ink/svg/ + media-processor: + default: + id: "media-{id}" + class: "media" + width: "100%" + height: 350 + frameborder: 0 + style: "max-width: 600px; outline: none;" + allow: "encrypted-media; picture-in-picture" + emoji-processor: + css: + class: emoji + src: https://github.githubassets.com/images/icons/emoji/ + +category_archive: + type: jekyll-archives + path: /categories/ + +tag_archive: + type: jekyll-archives + path: /tags/ + +jekyll-archives: + enabled: all + layout: archive + permalinks: + year: '/:year/' + month: '/:year/:month/' + day: '/:year/:month/:day/' + tag: '/tag/:name/' + category: '/category/:name/' + +compress_html: + clippings: all + endings: all + +twitter: + username: OlivLiliv + card: summary + +jekyll-minifier: + simple_doctype: false + simple_boolean_attributes: false + remove_comments: true + remove_multi_spaces: true + remove_spaces_inside_tags: true + remove_intertag_spaces: true + remove_quotes: false + remove_script_attributes: false + remove_style_attributes: false + remove_link_attributes: false + remove_form_attributes: false + remove_input_attributes: false + remove_javascript_protocol: false + remove_http_protocol: false + remove_https_protocol: false + preserve_php: false + preserve_line_breaks: false + compress_css: true + compress_javascript: true + compress_json: true + compress_js_templates: false + uglifier_args: + harmony: true + +responsive: + widths: [400,500,700,900] + quality: 100 diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_data/picture.yml b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_data/picture.yml new file mode 100644 index 0000000..b2d05fb --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_data/picture.yml @@ -0,0 +1,23 @@ +media_queries: + mobile: "max-width: 600px" + laptop: "max-width: 800px" + wide: "min-width: 801px" + +presets: + default: + formats: [avif, webp, original] + format_quality: + jpg: 80 + png: 85 + webp: 75 + avif: 70 + widths: [200, 400, 800, 1200, 1600] + +image_options: + avif: + compression: av1 + effort: 7 + png: + compression: 9 + webp: + effort: 5 diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_data/ui-text.yml b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_data/ui-text.yml new file mode 100644 index 0000000..551f995 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_data/ui-text.yml @@ -0,0 +1,494 @@ +# User interface text and labels + +# English (default) +# ----------------- +en: &DEFAULT_EN + comments_label : "Leave a comment" + comments_title : "Comments" + comment_form_info : "Your email address will not be published. Required fields are marked" + comment_form_comment_label : "Comment" + comment_form_md_info : "Markdown is supported." + comment_form_name_label : "Name" + comment_form_email_label : "Email address" + comment_form_website_label : "Website (optional)" + comment_btn_submit : "Submit comment" + comment_btn_submitted : "Submitted" + comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved." + comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." +en-US: + <<: *DEFAULT_EN +en-CA: + <<: *DEFAULT_EN +en-GB: + <<: *DEFAULT_EN +en-AU: + <<: *DEFAULT_EN + +# Spanish +# ------- +es: &DEFAULT_ES + comments_label : "Dejar un commentario" + comments_title : "Comentar" + comment_form_info : "Su dirección de correo no será publicada. Se han resaltado los campos requeridos" + comment_form_comment_label : "Comentario" + comment_form_md_info : "Markdown está soportado." + comment_form_name_label : "Nombre" + comment_form_email_label : "Dirección de E-mail" + comment_form_website_label : "Sitio web (opcional)" + comment_btn_submit : "Enviar Commentario" + comment_btn_submitted : "Enviado" + comment_success_msg : "Gracias por su comentario!, Este se visualizará en el sitio una vez haya sido aprobado" + comment_error_msg : "Lo sentimos, ha ocurrido un error al enviar su comentario. Por favor asegurese que todos los campos han sido diligenciados e intente de nuevo" +es-ES: + <<: *DEFAULT_ES +es-CO: + <<: *DEFAULT_ES + +# French +# ------ +fr: &DEFAULT_FR + comments_label : "Laisser un commentaire" + comments_title : "Commentaires" + comment_form_info : "Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués" + comment_form_comment_label : "Commentaire" + comment_form_md_info : "Markdown est supporté." + comment_form_name_label : "Nom" + comment_form_email_label : "Adresse mail" + comment_form_website_label : "Site web (optionnel)" + comment_btn_submit : "Envoyer" + comment_btn_submitted : "Envoyé" + comment_success_msg : "Merci pour votre commentaire, il sera visible sur le site une fois approuvé." + comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez." +fr-FR: + <<: *DEFAULT_FR +fr-BE: + <<: *DEFAULT_FR +fr-CH: + <<: *DEFAULT_FR + +# Turkish +# ------- +tr: &DEFAULT_TR + comments_label : "Yorum yapın" + comments_title : "Yorumlar" + comment_form_info : "Email adresiniz gösterilmeyecektir. Zorunlu alanlar işaretlenmiştir" + comment_form_comment_label : "Yorumunuz" + comment_form_md_info : "Markdown desteklenmektedir." + comment_form_name_label : "Adınız" + comment_form_email_label : "Email adresiniz" + comment_form_website_label : "Websiteniz (opsiyonel)" + comment_btn_submit : "Yorum Yap" + comment_btn_submitted : "Gönderildi" + comment_success_msg : "Yorumunuz için teşekkürler! Yorumunuz onaylandıktan sonra sitede gösterilecektir." + comment_error_msg : "Maalesef bir hata oluştu. Lütfen zorunlu olan tüm alanları doldurduğunuzdan emin olun ve sonrasında tekrar deneyin." +tr-TR: + <<: *DEFAULT_TR + +# Portuguese +# ---------- +pt: &DEFAULT_PT + comments_label : "Deixe um Comentário" + comments_title : "Comentários" + comment_form_info : "O seu endereço email não será publicado. Os campos obrigatórios estão assinalados" + comment_form_comment_label : "Comentário" + comment_form_md_info : "Markdown é suportado." + comment_form_name_label : "Nome" + comment_form_email_label : "Endereço Email" + comment_form_website_label : "Site (opcional)" + comment_btn_submit : "Sumbeter Comentário" + comment_btn_submitted : "Submetido" + comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado." + comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente." +pt-PT: + <<: *DEFAULT_PT +# Brazilian Portuguese +pt-BR: + comments_label : "Deixe um comentário" + comments_title : + comment_form_info : "Seu email não será publicado. Os campos obrigatórios estão marcados" + comment_form_comment_label : "Comentário" + comment_form_md_info : "Markdown é suportado." + comment_form_name_label : "Nome" + comment_form_email_label : "Email" + comment_form_website_label : "Site (opcional)" + comment_btn_submit : "Enviar Comentário" + comment_btn_submitted : "Enviado" + comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado." + comment_error_msg : "Desculpe, ocorreu um erro no envio. Por favor verifique se todos os campos obrigatórios foram preenchidos e tente novamente." + +# Italian +# ------- +it: &DEFAULT_IT + comments_label : "Scrivi un commento" + comments_title : + comment_form_info : "Il tuo indirizzo email non sarà pubblicato. Sono segnati i campi obbligatori" + comment_form_comment_label : "Commenta" + comment_form_md_info : "Il linguaggio Markdown è supportato" + comment_form_name_label : "Nome" + comment_form_email_label : "Indirizzo email" + comment_form_website_label : "Sito Web (opzionale)" + comment_btn_submit : "Invia commento" + comment_btn_submitted : "Inviato" + comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato." + comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova." +it-IT: + <<: *DEFAULT_IT + +# Chinese (zh-CN Chinese - China) +# -------------------------------- +zh: &DEFAULT_ZH_HANS + comments_label : "留下评论" + comments_title : "评论" + comment_form_info : "您的电子邮箱地址并不会被展示。请填写标记为必须的字段。" + comment_form_comment_label : "评论" + comment_form_md_info : "Markdown语法已支持。" + comment_form_name_label : "姓名" + comment_form_email_label : "电子邮箱" + comment_form_website_label : "网站(可选)" + comment_btn_submit : "提交评论" + comment_btn_submitted : "已提交" + comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。" + comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。" +zh-CN: + <<: *DEFAULT_ZH_HANS +zh-SG: + <<: *DEFAULT_ZH_HANS +# Taiwan (Traditional Chinese) +zh-TW: &DEFAULT_ZH_HANT + comments_label : "留言" + comments_title : "留言內容" + comment_form_comment_label : "留言內容" + comment_form_md_info : "支援Markdown語法。" + comment_form_name_label : "名字" + comment_form_email_label : "電子信箱帳號" + comment_form_website_label : "網頁 (可選填)" + comment_btn_submit : "送出留言" + comment_btn_submitted : "已送出" + comment_success_msg : "感謝您的留言! 審核後將會顯示在站上。" + comment_error_msg : "抱歉,部份資料輸入有問題。請確認資料填寫正確後再試一次。" +zh-HK: + <<: *DEFAULT_ZH_HANT + +# German / Deutsch +# ---------------- +de: &DEFAULT_DE + comments_label : "Hinterlasse einen Kommentar" + comments_title : "Kommentare" + comment_form_info : "Die E-Mail Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert" + comment_form_comment_label : "Kommentar" + comment_form_md_info : "Markdown wird unterstützt." + comment_form_name_label : "Name" + comment_form_email_label : "E-Mail-Adresse" + comment_form_website_label : "Webseite (optional)" + comment_btn_submit : "Kommentar absenden" + comment_btn_submitted : "Versendet" + comment_success_msg : "Danke für den Kommentar! Er wird nach Prüfung auf der Seite angezeigt." + comment_error_msg : "Entschuldigung, es gab einen Fehler. Bitte fülle alle benötigten Felder aus und versuche es erneut." +de-DE: + <<: *DEFAULT_DE +de-AT: + <<: *DEFAULT_DE +de-CH: + <<: *DEFAULT_DE +de-BE: + <<: *DEFAULT_DE +de-LI: + <<: *DEFAULT_DE +de-LU: + <<: *DEFAULT_DE + +# Nepali (Nepal) +# -------------- +ne: &DEFAULT_NE + comments_label : "टिप्पणी दिनुहोस्" + comments_title : "टिप्पणीहरू" + comment_form_info : "तपाइँको इमेल ठेगाना प्रकाशित गरिने छैन।आवश्यक जानकारीहरुमा चिन्ह लगाइको छ" + comment_form_comment_label : "टिप्पणी" + comment_form_md_info : "मार्कडाउन समर्थित छ।" + comment_form_name_label : "नाम" + comment_form_email_label : "इमेल ठेगाना" + comment_form_website_label : "वेबसाइट (वैकल्पिक)" + comment_btn_submit : "टिप्पणी दिनुहोस् " + comment_btn_submitted : "टिप्पणी भयो" + comment_success_msg : "तपाईंको टिप्पणीको लागि धन्यवाद! एक पटक यो अनुमोदन गरेपछी यो साइटमा देखाउनेछ।" + comment_error_msg : "माफ गर्नुहोस्, तपाईंको टिप्पणी त्रुटि थियो।सबै आवश्यक जानकारीहरु पूरा गरिएको छ भने निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।" +ne-NP: + <<: *DEFAULT_NE + +# Korean +# ------ +ko: &DEFAULT_KO + comments_label : "댓글남기기" + comments_title : "댓글" + comment_form_info : "이메일은 공개되지 않습니다. 작성 필요 필드:" + comment_form_comment_label : "댓글" + comment_form_md_info : "마크다운을 지원합니다." + comment_form_name_label : "이름" + comment_form_email_label : "이메일" + comment_form_website_label : "웹사이트(선택사항)" + comment_btn_submit : "댓글 등록" + comment_btn_submitted : "등록됨" + comment_success_msg : "감사합니다! 댓글이 머지된 후 확인하실 수 있습니다." + comment_error_msg : "댓글 등록에 문제가 있습니다. 필요 필드를 작성했는지 확인하고 다시 시도하세요." +ko-KR: + <<: *DEFAULT_KO + +# Russian / Русский +# ----------------- +ru: &DEFAULT_RU + comments_label : "Оставить комментарий" + comments_title : "Комментарии" + comment_form_info : "Ваш адрес электронной почты не будет опубликован. Обязательные поля помечены" + comment_form_comment_label : "Комментарий" + comment_form_md_info : "Поддерживается синтаксис Markdown." + comment_form_name_label : "Имя" + comment_form_email_label : "Электронная почта" + comment_form_website_label : "Ссылка на сайт (необязательно)" + comment_btn_submit : "Оставить комментарий" + comment_btn_submitted : "Отправлено" + comment_success_msg : "Спасибо за Ваш комментарий! Он будет опубликован на сайте после проверки." + comment_error_msg : "К сожалению, произошла ошибка с отправкой комментария. Пожалуйста, убедитесь, что все обязательные поля заполнены и попытайтесь снова." +ru-RU: + <<: *DEFAULT_RU + +# Lithuanian / Lietuviškai +# ------------------------ +lt: &DEFAULT_LT + comments_label : "Palikti komentarą" + comments_title : "Komentaras" + comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti" + comment_form_comment_label : "Komentaras" + comment_form_md_info : "Markdown palaikomas." + comment_form_name_label : "Vardas" + comment_form_email_label : "El. paštas" + comment_form_website_label : "Tinklapis (nebūtina)" + comment_btn_submit : "Komentuoti" + comment_btn_submitted : "Įrašytas" + comment_success_msg : "Ačiū už komentarą! Jis bus parodytas kai bus patvirtintas." + comment_error_msg : "Atleiskite, įvyko netikėta klaida įrašant komentarą. Pasitikrinkite ar užpildėte visus būtinus laukus ir pamėginkite dar kartą." +lt-LT: + <<: *DEFAULT_LT + +# Greek +# ----- +gr: &DEFAULT_GR + comments_label : "Αφήστε ένα σχόλιο" + comments_title : "Σχόλια" + comment_form_info : "Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα απαιτούμενα πεδία εμφανίζονται με αστερίσκο" + comment_form_comment_label : "Σχόλιο" + comment_form_md_info : "Το πεδίο υποστηρίζει Markdown." + comment_form_name_label : "Όνομα" + comment_form_email_label : "Διεύθυνση email" + comment_form_website_label : "Ιστοσελίδα (προαιρετικό)" + comment_btn_submit : "Υπόβαλε ένα σχόλιο" + comment_btn_submitted : "Έχει υποβληθεί" + comment_success_msg : "Ευχαριστούμε για το σχόλιό σας! Θα εμφανιστεί στην ιστοσελίδα αφού εγκριθεί." + comment_error_msg : "Λυπούμαστε, παρουσιάστηκε σφάλμα με την υποβολή σας. Παρακαλούμε βεβαιωθείτε ότι έχετε όλα τα απαιτούμενα πεδία συμπληρωμένα και δοκιμάστε ξανά." +gr-GR: + <<: *DEFAULT_GR + +# Swedish +# ------- +sv: &DEFAULT_SV + comments_label : "Lämna en kommentar" + comments_title : "Kommentarer" + comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade" + comment_form_comment_label : "Kommentar" + comment_form_md_info : "Använd Markdown för text-formateringen." + comment_form_name_label : "Namn" + comment_form_email_label : "E-post adress" + comment_form_website_label : "Webdsida (valfritt)" + comment_btn_submit : "Skicka en kommentar" + comment_btn_submitted : "Kommentaren har tagits emot" + comment_success_msg : "Tack för din kommentar! Den kommer att visas på sidan så fort den har godkännts." + comment_error_msg : "Tyvärr det har blivit något fel i en av fälten, se till att du fyller i alla rutor och försök igen." +sv-SE: + <<: *DEFAULT_SV +sv-FI: + <<: *DEFAULT_SV + +# Dutch +# ----- +nl: &DEFAULT_NL + comments_label : "Laat een reactie achter" + comments_title : "Commentaren" + comment_form_info : "Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd" + comment_form_comment_label : "Commentaar" + comment_form_md_info : "Markdown wordt ondersteund." + comment_form_name_label : "Naam" + comment_form_email_label : "E-mailadres" + comment_form_website_label : "Website (optioneel)" + comment_btn_submit : "Commentaar toevoegen" + comment_btn_submitted : "Toegevoegd" + comment_success_msg : "Bedankt voor uw reactie! Het zal op de site worden weergegeven zodra het is goedgekeurd." + comment_error_msg : "Sorry, er is een fout opgetreden bij uw inzending. Zorg ervoor dat alle vereiste velden zijn voltooid en probeer het opnieuw." +nl-BE: + <<: *DEFAULT_NL +nl-NL: + <<: *DEFAULT_NL + +# Indonesian +# ---------- +id: &DEFAULT_ID + comments_label : "Tinggalkan komentar" + comments_title : "Komentar" + comment_form_info : "Email Anda tidak akan dipublish. Kolom yang diperlukan ditandai" + comment_form_comment_label : "Komentar" + comment_form_md_info : "Markdown disupport." + comment_form_name_label : "Nama" + comment_form_email_label : "Alamat email" + comment_form_website_label : "Website (opsional)" + comment_btn_submit : "Submit Komentar" + comment_btn_submitted : "Telah disubmit" + comment_success_msg : "Terimakasih atas komentar Anda! Komentar ini akan tampil setelah disetujui." + comment_error_msg : "Maaf, ada kesalahan pada submisi Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali." +id-ID: + <<: *DEFAULT_ID + +# Vietnamese +# ---------- +vi: &DEFAULT_VI + comments_label : "Để lại bình luận" + comments_title : "Bình luận" + comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu" + comment_form_comment_label : "Bình luận" + comment_form_md_info : "Hỗ trợ Markdown." + comment_form_name_label : "Tên" + comment_form_email_label : "Địa chỉ email" + comment_form_website_label : "Website (không bắt buộc)" + comment_btn_submit : "Gửi bình luận" + comment_btn_submitted : "Đã được gửi" + comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt." + comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại." +vi-VN: + <<: *DEFAULT_VI + +# Danish +# ------ +da: &DEFAULT_DA + comments_label : "Skriv en kommentar" + comments_title : "Kommentarer" + comment_form_info : "Din e-mail bliver ikke offentliggjort. Obligatoriske felter er markeret" + comment_form_comment_label : "Kommentar" + comment_form_md_info : "Markdown er understøttet." + comment_form_name_label : "Navn" + comment_form_email_label : "E-mail" + comment_form_website_label : "Website (frivillig)" + comment_btn_submit : "Send kommentar" + comment_btn_submitted : "Sendt" + comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt." + comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt." +da-DK: + <<: *DEFAULT_DA + +# Polish +# ------ +pl: &DEFAULT_PL + comments_label : "Zostaw komentarz" + comments_title : "Komentarze" + comment_form_info : "Twój adres email nie będzie udostępiony. Wymagane pola są oznaczone" + comment_form_comment_label : "Skomentuj" + comment_form_md_info : "Markdown jest wspierany" + comment_form_name_label : "Imię" + comment_form_email_label : "Adres email" + comment_form_website_label : "Strona www (opcjonalna)" + comment_btn_submit : "Skomentuj" + comment_btn_submitted : "Komentarz dodany" + comment_success_msg : "Dziękuję za Twój komentarz! Zostanie dodany po akceptacji." + comment_error_msg : "Niestety wystąpił błąd. Proszę upewnij się, że wszystkie wymagane pola zostały wypełnione i spróbuj ponownie." +pl-PL: + <<: *DEFAULT_PL + +# Japanese +# -------- +ja: &DEFAULT_JA + comments_label : "コメントする" + comments_title : "コメント" + comment_form_info : "メールアドレスが公開されることはありません。次の印のある項目は必ず入力してください:" + comment_form_comment_label : "コメント" + comment_form_md_info : "Markdown を使用できます" + comment_form_name_label : "名前" + comment_form_email_label : "メールアドレス" + comment_form_website_label : "URL (任意)" + comment_btn_submit : "コメントを送信する" + comment_btn_submitted : "送信しました" + comment_success_msg : "コメントありがとうございます! コメントは承認されるとページに表示されます。" + comment_error_msg : "送信エラーです。必須項目がすべて入力されていることを確認して再送信してください。" +ja-JP: + <<: *DEFAULT_JA + +# Slovak +# ----------------- +sk: &DEFAULT_SK + comments_label : "Zanechaj odkaz" + comments_title : "Komentáre" + comment_form_info : "Tvoja emailová adresa nebude publikovaná. Požadované polia sú označené" + comment_form_comment_label : "Komentár" + comment_form_md_info : "Markdown je podporovaný." + comment_form_name_label : "Meno" + comment_form_email_label : "Emailová adresa" + comment_form_website_label : "Webstránka (voliteľné)" + comment_btn_submit : "Vlož komentár" + comment_btn_submitted : "Vložený" + comment_success_msg : "Ďakujem za tvoj komentár! Po schválení bude zobrazený na stránke." + comment_error_msg : "Prepáč, pri ukladaní nastala chyba. Ubezpeč sa prosím, že si vyplnil všetky požadované polia a skús znova." +sk-SK: + <<: *DEFAULT_SK + +# Hungarian +# ----------------- +hu: &DEFAULT_HU + comments_label : "Szólj hozzá!" + comments_title : "Hozzászólások" + comment_form_info : "Az e-mail címed nem lesz publikus. A csillagozott mezők kitöltése kötelező" + comment_form_comment_label : "Hozzászólás" + comment_form_md_info : "Támogatott formázási mód: Markdown" + comment_form_name_label : "Név" + comment_form_email_label : "Email cím" + comment_form_website_label : "Honlap (nem kötelező):" + comment_btn_submit : "Hozzászólás elküldése" + comment_btn_submitted : "Hozzászólás elküldve" + comment_success_msg : "Köszönjük a Hozzászólást! A Hozzászólások csak előzetes moderáció után lesznek publikusak." + comment_error_msg : "Hoppá, hiba történt a beküldés közben. Kérlek ellenőrizd hogy minden kötelező mező ki van-e töltve." +hu-HU: + <<: *DEFAULT_HU + +# Romanian +# ----------------- +ro: &DEFAULT_RO + comments_label : "Lasă un comentariu" + comments_title : "Comentarii" + comment_form_info : "Adresa ta de email nu va fi făcută publică. Câmpurile marcate sunt obligatorii" + comment_form_comment_label : "Comentariu" + comment_form_md_info : "Markdown este suportat." + comment_form_name_label : "Nume" + comment_form_email_label : "Adresă de email" + comment_form_website_label : "Site (opțional)" + comment_btn_submit : "Trimite comentariul" + comment_btn_submitted : "Trimis" + comment_success_msg : "Mulțumesc pentru comentariu! Va apărea pe site în momentul în care va fi aprobat." + comment_error_msg : "Scuze, este o problemă cu comentariul tău. Asigură-te că toate câmpurile obligatorii au fost completate și încearcă din nou." +ro-RO: + <<: *DEFAULT_RO + +# Punjabi +# ----------------- +pa: &DEFAULT_PA + comments_label : "ਇੱਕ ਟਿੱਪਣੀ ਛੱਡੋ" + comments_title : "ਟਿੱਪਣੀਆਂ" + comment_form_info : "ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਪ੍ਰਕਾਸ਼ਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। ਅਨੁਮਾਨਿਤ ਸਥਾਨਾਂ ਨੂੰ ਅੰਡਰਲਾਈਨ ਕੀਤਾ ਗਿਆ ਹੈ" + comment_form_comment_label : "ਟਿੱਪਣੀ" + comment_form_md_info : "ਮਾਰਕਡਾਊਨ ਵਰਤ ਸਕਦੇ ਹੋ।" + comment_form_name_label : "ਨਾਮ" + comment_form_email_label : "ਈਮੇਲ ਪਤਾ" + comment_form_website_label : "ਵੈਬਸਾਈਟ (ਵਿਕਲਪਿਕ)" + comment_btn_submit : "ਕੋਈ ਟਿੱਪਣੀ ਭੇਜੋ" + comment_btn_submitted : "ਪੇਸ਼ ਕੀਤਾ" + comment_success_msg : "ਤੁਹਾਡੀਆਂ ਟਿੱਪਣੀਆਂ ਲਈ ਧੰਨਵਾਦ! ਇਹ ਮਨਜ਼ੂਰੀ ਮਿਲਣ ਦੇ ਬਾਅਦ ਸਾਈਟ 'ਤੇ ਦਿਖਾਇਆ ਜਾਵੇਗਾ।" + comment_error_msg : "ਮੁਆਫ ਕਰਨਾ, ਤੁਹਾਡੀ ਅਧੀਨਗੀ ਵਿੱਚ ਕੋਈ ਗਲਤੀ ਹੋਈ ਸੀ ਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੇ ਲੋੜੀਂਦੇ ਖੇਤਰ ਪੂਰੇ ਹੋ ਗਏ ਹਨ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" +pa-IN: + <<: *DEFAULT_PA + +# Another locale +# -------------- +# diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/breadcrumbs.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/breadcrumbs.html new file mode 100644 index 0000000..2158e84 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/breadcrumbs.html @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/cloudflare_analytics.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/cloudflare_analytics.html new file mode 100644 index 0000000..23e9307 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/cloudflare_analytics.html @@ -0,0 +1,6 @@ +{% if site.cloudflare_analytics %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/commentbox.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/commentbox.html new file mode 100644 index 0000000..1f5d470 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/commentbox.html @@ -0,0 +1,5 @@ +{% if site.commentbox %} +
+ + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/comments.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/comments.html new file mode 100644 index 0000000..6624233 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/comments.html @@ -0,0 +1,8 @@ +{% if page.comments %} + {% include disqus.html %} + {% include fb-comment.html %} + {% include staticman-comments.html %} + {% include utterances-comment.html %} + {% include giscus-comment.html %} + {% include commentbox.html %} +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/cookie-consent.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/cookie-consent.html new file mode 100644 index 0000000..3bd3473 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/cookie-consent.html @@ -0,0 +1,52 @@ + + + \ No newline at end of file diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/disqus.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/disqus.html new file mode 100644 index 0000000..501d09c --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/disqus.html @@ -0,0 +1,18 @@ +{%- if site.disqus -%} +
+
+
+ + +
+
+{%- endif -%} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/ext-css.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/ext-css.html new file mode 100644 index 0000000..c177a7c --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/ext-css.html @@ -0,0 +1,7 @@ +{% if include.css.sri %} + +{% elsif include.css.href %} + +{% else %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/ext-js.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/ext-js.html new file mode 100644 index 0000000..3738ef2 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/ext-js.html @@ -0,0 +1,7 @@ +{% if include.js.sri %} + +{% elsif include.js.href %} + +{% else %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/fb-comment.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/fb-comment.html new file mode 100644 index 0000000..d29682c --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/fb-comment.html @@ -0,0 +1,16 @@ +{%- if site.fb_comment_id -%} +
+
+ +
+ +
+{%- endif -%} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer-minimal.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer-minimal.html new file mode 100644 index 0000000..c6a5af5 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer-minimal.html @@ -0,0 +1,18 @@ +
+
+ {% if site.author %} + {{ site.author }} +   •   + {% endif %} + {% if page.date %} + {{ page.date }} + {% else %} + {{ site.time | date: '%Y' }} + {% endif %} + + {% if site.url-pretty %} +   •   + {{ site.url-pretty }} + {% endif %} +
+
diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer-scripts.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer-scripts.html new file mode 100644 index 0000000..868ad03 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer-scripts.html @@ -0,0 +1,33 @@ +{% if layout.common-ext-js %} + {% for js in layout.common-ext-js %} + {% include ext-js.html js=js %} + {% endfor %} +{% endif %} +{% if layout.common-js %} + {% for js in layout.common-js %} + {% if js contains 'jquery' %} + + {% else %} + + {% endif %} + {% endfor %} +{% endif %} +{% if site.site-js %} + {% for js in site.site-js %} + + {% endfor %} +{% endif %} +{% if page.ext-js %} + {% for js in page.ext-js %} + {% include ext-js.html js=js %} + {% endfor %} +{% endif %} +{% if page.js %} + {% for js in page.js %} + + {% endfor %} +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer.html new file mode 100644 index 0000000..df74b1a --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/footer.html @@ -0,0 +1,44 @@ +
+ +
diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/giscus-comment.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/giscus-comment.html new file mode 100644 index 0000000..9fc44a4 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/giscus-comment.html @@ -0,0 +1,14 @@ +{% if site.giscus.repository and site.giscus.hostname %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/google_analytics.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/google_analytics.html new file mode 100644 index 0000000..77d1a76 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/google_analytics.html @@ -0,0 +1,24 @@ +{% if site.google_analytics %} +{% unless site.gtag %} +
+
×
+
+ This website is using outdated Google Analytics +
+ More info + As of July 2023, Google's Universal Analytics is going away and being replaced by Google Analytics 4. This website is still using the old Universal Analytics. In order to remove this message, the website owner must remove the google_analytics property in the website's config file, and optionally replace it with the new gtag property. +
+
+
+{% endunless %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtag.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtag.html new file mode 100644 index 0000000..2d1e5cb --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtag.html @@ -0,0 +1,9 @@ +{% if site.gtag %} + + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtm_body.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtm_body.html new file mode 100644 index 0000000..921ef98 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtm_body.html @@ -0,0 +1,3 @@ +{% if site.gtm %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtm_head.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtm_head.html new file mode 100644 index 0000000..6e5bf90 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/gtm_head.html @@ -0,0 +1,9 @@ +{% if site.gtm %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/head.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/head.html new file mode 100644 index 0000000..34fac44 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/head.html @@ -0,0 +1,133 @@ + + + + + + + + + + + {% capture title %} + {%- if page.share-title -%} + {{ page.share-title | strip_html | xml_escape }} + {%- elsif page.title -%} + {{ page.title | strip_html | xml_escape }} + {%- else -%} + {{ site.title | strip_html | xml_escape }} + {%- endif -%} + {% endcapture %} + {% capture description %} + {%- if page.share-description -%} + {{ page.share-description | strip_html | xml_escape }} + {%- elsif page.subtitle -%} + {{ page.subtitle | strip_html | xml_escape }} + {%- else -%} + {%- assign excerpt_length = site.excerpt_length | default: 50 -%} + {{ page.content | strip_html | xml_escape | truncatewords: excerpt_length | strip }} + {%- endif -%} + {% endcapture %} + {{ title }} + {% if site.author %} + + {% endif %} + + {% if site.mobile-theme-col %} + + {% endif %} + {% if site.keywords %} + + {% endif %} + {% if site.rss-description %} + + {% endif %} + {% include gtag.html %} + {% include gtm_head.html %} + {% include google_analytics.html %} + {% include cloudflare_analytics.html %} + {% if layout.common-ext-css %} + {% for css in layout.common-ext-css %} + {% include ext-css.html css=css %} + {% endfor %} + {% endif %} + {% if layout.common-css %} + {% for css in layout.common-css %} + + {% endfor %} + {% endif %} + {% if site.site-css %} + {% for css in site.site-css %} + + {% endfor %} + {% endif %} + {% if page.ext-css %} + {% for css in page.ext-css %} + {% include ext-css.html css=css %} + {% endfor %} + {% endif %} + {% if page.css %} + {% for css in page.css %} + + {% endfor %} + {% endif %} + {% if site.fb_app_id %} + + {% endif %} + {% if site.title %} + + {% endif %} + {%- capture img -%} + {%- if page.share-img -%} + {{ page.share-img }} + {%- elsif page.cover-img -%} + {%- if page.cover-img.first -%} + {{ page.cover-img[0].first.first }} + {%- else -%} + {{ page.cover-img }} + {%- endif -%} + {%- elsif page.thumbnail-img -%} + {{ page.thumbnail-img }} + {%- elsif site.avatar -%} + {{ site.avatar }} + {% endif %} + {%- endcapture -%} + {%- assign img=img | strip -%} + + + {% if img != "" %} + + {% endif %} + {% if page.id %} + + + + + + {% else %} + + + + {% endif %} + {% if img != "" and img != site.avatar %} + + {% else %} + + {% endif %} + + + + + {% if img != "" %} + + {% endif %} + {% if page.comments and site.staticman.repository and site.staticman.branch %} + + {% endif %} + {% if page.head-extra %} + {% for file in page.head-extra %} + {% include {{ file }} %} + {% endfor %} + {% endif %} + + {% include lightmode.html %} + diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/header.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/header.html new file mode 100644 index 0000000..5660618 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/header.html @@ -0,0 +1,87 @@ +{% assign date_format = site.date_format | default: "%B %-d, %Y" %} +{% if page.cover-img or page.title %} +{% if page.cover-img %} +
+{% endif %} +
+{% if page.cover-img %} +
+
+
+
+
+

{% if page.title %}{{ page.title | strip_html }}{% else %}
{% endif %}

+ {% if page.subtitle %} + {% if include.type == "page" %} +
+ {{ page.subtitle | strip_html }} + {% else %} +

{{ page.subtitle | strip_html }}

+ {% endif %} + {% endif %} + {% if include.type == "post" %} + + {% if page.last-updated %} + + {% endif %} + {% if page.readtime %} + {% include readtime.html %} + {% endif %} + {% endif %} +
+
+
+
+ +
+{% endif %} +
+
+
+
+
+

{% if page.title %}{{ page.title | strip_html }}{% else %}
{% endif %}

+ {% if page.subtitle %} + {% if include.type == "page" %} +
+ {{ page.subtitle | strip_html }} + {% else %} +

{{ page.subtitle | strip_html }}

+ {% endif %} + {% endif %} + {% if include.type == "post" %} + + {% if page.last-updated %} + + {% endif %} + {% if page.readtime %} + {% include readtime.html %} + {% endif %} + {% endif %} +
+
+
+
+
+
+{% else %} +
+{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/lightmode.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/lightmode.html new file mode 100644 index 0000000..bd7b5c1 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/lightmode.html @@ -0,0 +1,17 @@ + diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/matomo.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/matomo.html new file mode 100644 index 0000000..ba7b065 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/matomo.html @@ -0,0 +1,14 @@ +{% if site.matomo %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/matomo.js b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/matomo.js new file mode 100644 index 0000000..ae97cdd --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/matomo.js @@ -0,0 +1,10 @@ +var _paq = _paq || []; +_paq.push(['trackPageView']); +_paq.push(['enableLinkTracking']); +(function() { + var u="//{{- site.matomo.uri -}}/"; + _paq.push(['setTrackerUrl', u+'matomo.php']); + _paq.push(['setSiteId', '{{- site.matomo.site_id -}}']); + var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; + g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); +})(); diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/nav.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/nav.html new file mode 100644 index 0000000..728f8f4 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/nav.html @@ -0,0 +1,55 @@ + +{% include search.html %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/readtime.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/readtime.html new file mode 100644 index 0000000..57688d4 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/readtime.html @@ -0,0 +1,14 @@ +{% assign ReadTime = page.content | strip_html | number_of_words %} +{% assign calcReadTime = ReadTime | float %} +{% assign finalReadTime = calcReadTime | divided_by:200 | round: 2 %} +{% assign number = finalReadTime | round %} +{% if number >= 1 %} + {% assign yesReadTime = number | append: " minute" %} + +{% elsif number < 1 %} + {% assign minReadTime = '< 1 minute' %} + +{% else %} + {% assign nilReadTime = number | replace:'0',' ' %} + {{ nilReadTime }} +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/search.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/search.html new file mode 100644 index 0000000..86097e3 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/search.html @@ -0,0 +1,34 @@ +{% if site.post_search %} +
+ + +
    + + +
    +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/social-networks-links.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/social-networks-links.html new file mode 100644 index 0000000..37dff43 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/social-networks-links.html @@ -0,0 +1,314 @@ + diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/social-share.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/social-share.html new file mode 100644 index 0000000..91c4a18 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/social-share.html @@ -0,0 +1,46 @@ +{% assign any-share-links = false %} +{% for links in site.share-links-active %} + {% if links[1] == true %} + {% assign any-share-links = true %} + {% endif %} +{% endfor %} +{% if any-share-links %} +
    + Share: + {% if site.share-links-active.twitter %} + + + Twitter + + {% endif %} + {% if site.share-links-active.facebook %} + + + Facebook + + {% endif %} + {% if site.share-links-active.linkedin %} + + + LinkedIn + + {% endif %} + {% if site.share-links-active.vk %} + + + VK + + {% endif %} + {% if site.share-links-active.reddit %} + + + Reddit + + {% endif %} +
    +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/staticman-comment.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/staticman-comment.html new file mode 100644 index 0000000..0e7728f --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/staticman-comment.html @@ -0,0 +1,22 @@ + diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/staticman-comments.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/staticman-comments.html new file mode 100644 index 0000000..1f81c77 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/staticman-comments.html @@ -0,0 +1,73 @@ +{% if site.staticman.repository and site.staticman.branch %} +
    +
    +
    + {% if site.data.comments[page.slug] %} +

    {{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}

    + {% assign comments = site.data.comments[page.slug] | sort %} + {% for comment in comments %} + {% assign email = comment[1].email %} + {% assign name = comment[1].name %} + {% assign url = comment[1].url %} + {% assign date = comment[1].date %} + {% assign message = comment[1].message %} + {% include staticman-comment.html index=forloop.index email=email name=name url=url date=date message=message %} + {% endfor %} + {% endif %} +
    +
    +

    {{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}

    +

    {{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} *

    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + +

    + {{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }} + {{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }} +

    + {% if site.staticman.reCaptcha.siteKey %} +
    +
    +
    + {% endif %} +
    + + +
    +
    +
    + {% if site.staticman.reCaptcha.siteKey %} + + {% endif %} +
    + + +
    +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip.html new file mode 100644 index 0000000..68e5047 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip.html @@ -0,0 +1,15 @@ +
    +

    {{ include.icon | default: '' }}

    +

    {{ include.content }}

    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_blue.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_blue.html new file mode 100644 index 0000000..cc48519 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_blue.html @@ -0,0 +1,15 @@ +
    +

    {{ include.icon | default: '' }}

    +

    {{ include.content }}

    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_green.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_green.html new file mode 100644 index 0000000..ee8ea75 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_green.html @@ -0,0 +1,15 @@ +
    +

    {{ include.icon | default: '' }}

    +

    {{ include.content }}

    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_red.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_red.html new file mode 100644 index 0000000..a9a3a33 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_red.html @@ -0,0 +1,15 @@ +
    +

    {{ include.icon | default: '' }}

    +

    {{ include.content }}

    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_yellow.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_yellow.html new file mode 100644 index 0000000..265a5f9 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/tip_yellow.html @@ -0,0 +1,15 @@ +
    +

    {{ include.icon | default: '' }}

    +

    {{ include.content }}

    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/utterances-comment.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/utterances-comment.html new file mode 100644 index 0000000..884874e --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_includes/utterances-comment.html @@ -0,0 +1,10 @@ +{% if site.utterances.repository and site.utterances.issue-term %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/archive.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/archive.html new file mode 100644 index 0000000..25daba3 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/archive.html @@ -0,0 +1,17 @@ +--- +layout: base +--- + +{% include header.html type="page" %} +{% assign date_format = site.date_format | default: "%B %-d, %Y" %} +
    +

    Archive des articles pour {{ page.date | date: "%m/%Y" }}

    +
      + {% for post in page.posts %} +
    • + + {{ post.title }} +
    • + {% endfor %} +
    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/base.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/base.html new file mode 100644 index 0000000..efb0419 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/base.html @@ -0,0 +1,36 @@ +--- +layout: compress +common-css: + - "/assets/css/bootstrap-social.css" + - "/assets/css/pygment_highlights.css" + - "/assets/css/beautifuljekyll.css" +common-ext-css: + - href: "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/4.6.2/css/bootstrap.min.css" + sri: "sha512-rt/SrQ4UNIaGfDyEXZtNcyWvQeOq0QLygHluFQcSjaGB04IxWhal71tKuzP6K8eYXYB6vJV4pHkXcmFGGQ1/0w==" + - href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" + sri: "sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" + - "https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" + - "https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" +common-ext-js: + - href: "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js" + sri: "sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==" + - href: "https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.11.8/umd/popper.min.js" + sri: "sha512-TPh2Oxlg1zp+kz3nFA0C5vVC6leG/6mm1z9+mA81MI5eaUVqasPLO8Cuk4gMF4gUfP5etR73rgU/8PNMsSesoQ==" + - href: "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/4.6.2/js/bootstrap.min.js" + sri: "sha512-7rusk8kGPFynZWu26OKbTeI+QPoYchtxsmPeBqkHIEXJxeun4yJ4ISYe7C6sz9wdxeE1Gk3VxsIWgCZTc+vX3g==" +common-js: + - "/assets/js/beautifuljekyll.js" +--- + + +{% include head.html %} + + {% include gtm_body.html %} + {% include nav.html %} + {{ content }} +
    + {% include footer.html %} + {% include footer-scripts.html %} + {% include cookie-consent.html %} + + \ No newline at end of file diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/compress.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/compress.html new file mode 100644 index 0000000..bb34487 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/compress.html @@ -0,0 +1,10 @@ +--- +# Jekyll layout that compresses HTML +# v3.1.0 +# http://jch.penibelst.de/ +# © 2014–2015 Anatol Broder +# MIT License +--- + +{% capture _LINE_FEED %} +{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
    Step Bytes
    raw {{ content | size }}{% if _profile_endings %}
    endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
    startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
    comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
    collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
    clippings {{ _profile_clippings }}{% endif %}
    {% endif %}{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/default.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/default.html new file mode 100644 index 0000000..7d29f32 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/default.html @@ -0,0 +1,22 @@ +--- +layout: base +--- + +
    +
    + {% if page.before-content %} +
    + {% for file in page.before-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} + {{ content }} + {% if page.after-content %} +
    + {% for file in page.after-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/home.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/home.html new file mode 100644 index 0000000..13e9cc0 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/home.html @@ -0,0 +1,99 @@ +--- +layout: page +--- + +{{ content }} +{% assign posts = paginator.posts | default: site.posts %} +
      + {% for post in posts %} +
    • +
      + {%- capture thumbnail -%} + {% if post.thumbnail-img %} + {{ post.thumbnail-img }} + {% elsif post.cover-img %} + {% if post.cover-img.first %} + {{ post.cover-img[0].first.first }} + {% else %} + {{ post.cover-img }} + {% endif %} + {% else %} + {% endif %} + {% endcapture %} + {% assign thumbnail=thumbnail | strip %} + {% if site.feed_show_excerpt == false %} + {% if thumbnail != "" %} +
      + + Miniature de l'article + +
      + {% endif %} + {% endif %} + +

      {{ post.title | strip_html }}

      + {% if post.subtitle %} +

      + {{ post.subtitle | strip_html }} +

      + {% endif %} +
      + + {% if thumbnail != "" %} +
      + + Miniature de l'article + +
      + {% endif %} + {% unless site.feed_show_excerpt == false %} + {% if thumbnail != "" %} +
      + + Miniature de l'article + +
      + {% endif %} +
      + {% assign excerpt_length = site.excerpt_length | default: 50 %} + {{ post.excerpt | strip_html | truncatewords: excerpt_length }} + {% assign excerpt_word_count = post.excerpt | number_of_words %} + {% if post.content != post.excerpt or excerpt_word_count > excerpt_length %} + [Lire plus] + {% endif %} +
      + {% endunless %} + {% if site.feed_show_tags != false and post.tags.size > 0 %} +
      + Tags: +
        + {% for tag in post.tags %} +
      • + {{- tag -}} +
      • + {% endfor %} +
      +
      + {% endif %} + +
      +
    • + {% endfor %} +
    +{% if paginator.total_pages > 1 %} + +{% endif %} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/minimal.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/minimal.html new file mode 100644 index 0000000..e80f4d9 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/minimal.html @@ -0,0 +1,41 @@ +--- +layout: compress +common-css: + - "/assets/css/beautifuljekyll-minimal.css" +common-ext-css: + - href: "https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" + sri: "sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" +common-ext-js: + - href: "https://code.jquery.com/jquery-3.5.1.slim.min.js" + sri: "sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" + - href: "https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" + sri: "sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" + - href: "https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" + sri: "sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" +--- + + + + {% include head.html %} + +
    + {% if page.before-content %} +
    + {% for file in page.before-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} + {{ content }} + {% if page.after-content %} +
    + {% for file in page.after-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} +
    + {% include footer-minimal.html %} + {% include footer-scripts.html %} + + \ No newline at end of file diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/page.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/page.html new file mode 100644 index 0000000..8f7c736 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/page.html @@ -0,0 +1,27 @@ +--- +layout: base +--- + +{% include header.html type="page" %} +
    +
    +
    + {% if page.before-content %} +
    + {% for file in page.before-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} + {{ content }} + {% if page.after-content %} +
    + {% for file in page.after-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} + {% include comments.html %} +
    +
    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/post.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/post.html new file mode 100644 index 0000000..eff2106 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/_layouts/post.html @@ -0,0 +1,74 @@ +--- +layout: base +--- + +{% include header.html type="post" %} +
    +
    +
    + {% if page.gh-repo %} + {% assign gh_split = page.gh-repo | split:'/' %} + {% assign gh_user = gh_split[0] %} + {% assign gh_repo = gh_split[1] %} +
    + {% if page.gh-badge.size > 0 %} + {% for badge in page.gh-badge %} + {% case badge %} + {% when 'star'%} + + {% when 'watch'%} + + {% when 'fork'%} + + {% when 'follow'%} + + {% endcase %} + {% endfor %} + {% endif %} +
    + {% endif %} + {% if page.before-content %} +
    + {% for file in page.before-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} + {% include breadcrumbs.html %} +
    + {{ content }} +
    + {% if page.tags.size > 0 %} +
    + Tags: + {% for tag in page.tags %} + {{- tag -}} + {% endfor %} +
    + {% endif %} + {% if page.after-content %} +
    + {% for file in page.after-content %} + {% include {{ file }} %} + {% endfor %} +
    + {% endif %} + {% if page.social-share %} + {% include social-share.html %} + {% endif %} + + {% include comments.html %} +
    +
    +
    diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/apropos.md b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/apropos.md new file mode 100644 index 0000000..29e8cf5 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/apropos.md @@ -0,0 +1,76 @@ +--- +layout: page +title: A propos +tags: [about] +--- + +Zogg est une publication indépendante lancée en novembre 2022. + +# Du contenu frais, fourni + +Restez à jour en revenant lire régulièrement les articles; qui peuvent être mis à jour (_de temps en temps_) :p + +# Quelques mots sur moi + +Pour faire simple... bientôt le demi-siècle :innocent: + +## Parcours personnel + +Je suis tombé dans l'informatique vers l'âge de neuf ans au club d'informatique de mon village, sur des **MO/5**. + +Et je n'ai cessé depuis de boire la potion magique ! + +Je suis passé par **CP/M**, puis **DOS** 3.3 jusqu'à la dernière version et ensuite, j'ai quasiment fait tous les **Windows** de 3 à 11 actuellement :yum: + +Du côté du pingouin, c'est un peu le même parcours. +De ma première **distribution** dont je ne me souviens plus du nom, mais avec WindowMaker pour l'interface. En passant par Debian, **FreeBSD** (ok, ce n'est pas du *nux), Suse, Ubuntu et dérivés. + +J'ai une très nette préférence pour **Archlinux** qui n'est clairement pas une distribution pour débutant, mais qui permet lorsqu'on met les mains dans le cambouis correctement d'avoir un système stable, fiable et avec une empreinte minimaliste. Mais j'ai toujours fini par installer un bureau + +Avec des études d'électronique, forcément, je suis passé par l' **Assembleur** ! Programmer des PIC en réseau demande de savoir correctement contraindre son code pour respecter les spécifications et les ressources disponibles. Même si je doute d'être capable de pondre un code assembleur maintenant... +Hormis un petit _MOV AX, 1_ + +J'ai commencé le **C**/**C++** sous Turbo C++ 1.0. Et oui... C'était à peine avant-hier :stuck_out_tongue: +J'ai aussi fait 'mumuse avec Turbo **Pascal** (1.0 aussi...) + +## Parcours professionnel + +J'ai fait une petite passe de trois ans en tant que **Webmaster** PHP/Javascript/MySQL/CSS (la stack LAMP en somme). + +Puis, je suis revenu à mes premiers amours de jeunesse : le **développement** (C++ / .Net) chez un éditeur de logiciels pour le BTP. + +J'ai eu ensuite l'opportunité de basculer du monde du développement au monde de la **MOE assurance**. +Et j'ai découvert **Graphtalk/AIA** (un progiciel d'assurance) sur lequel j'ai réalisé du suivi de production, de la maintenance évolutive et quelques projets intéressants (refonte d'état comptable pour passer son temps de traitement de plus de 48h à 6h par exemple). +La phase MOE/MOA assurantielle a durée un petit moment et m'a permis de faire de belles rencontres. + +Plus récemment, je suis intervenu en tant que **concepteur** leader sur une mise en place d'un nouveau programme, toujours dans l'assurance. J'ai donc eu la joie (réelle) de participer aux comitologies des architectes, des business analyste et des métiers. Interagir avec les différentes parties de la même structure m'a permis de me rendre compte d'une aisance relationnelle. J'ai aussi acquis des certitudes sur mes capacités d'adaptation et d'interprète. + +Pour la suite, j'interviens sur de la **gouvernance** d'API et de droits, toujours pour une société d'assurance. +Sur la partie **API** les règles de la gouvernance étaient déjà écrites et partagées. En revanche, pour les droits, il a fallu les penser, les mettre en place, les faire accepter et... expliquer aux récalcitrants la pertinence de ces règles dans un contexte d'entreprise ! + +_A oui j'au aussi une formation d'adminitrateur réseau... mais c'était il y moultes saisons._ + +## Sur mon temps personnel + +J'ai eu plusieurs centres d'intérêts au fil des années. + +Certains ont été mis de côté, mais ce n'est que partie remise :sleeping: + +* Roller (_le roller-foot ou le roller-basket, c'est super fun... sauf à la fin lorsqu'on compte les bleus_) +* L'aquariophilie +* Le **modélisme** voiture, drone et hélicoptère (_j'ai toujours en tête un projet d'hovercraft_) +* Le sport (_ 'partie remise' _) + +## L'informatique + +Mes **Raspberry PI** que j'ai pressé jusqu'à la moelle pour les remplacer par une bonne tour classique ne semblent pas m'en vouloir. + +Enfin sauf pour **Recalbox** (Shinobi !!!) et Kodi... Qui, eux, sont toujours en service. + +Le **homelab** que j'ai assez récemment mis en fonction a pour but de me permettre de tester "toutes sortes de trucs". + +Mais bon j'avoue aussi qu'il sert de base stable et fiable pour mon serveur Minecraft sous Pterodactyl Docker :sunglasses: + +## Le CV + +Il est consultable sur mon **hub** : ! diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/beautifuljekyll-minimal.css b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/beautifuljekyll-minimal.css new file mode 100644 index 0000000..17589f5 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/beautifuljekyll-minimal.css @@ -0,0 +1,13 @@ +.main-content { + padding-bottom: 3.125rem; +} + +footer.footer-min { + position: fixed; + bottom: 0; + width: 100%; + padding: 0.1875rem; + background-color: #f5f5f5; + border-top: 1px solid #eeeeee; + text-align: center; +} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/beautifuljekyll.css b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/beautifuljekyll.css new file mode 100644 index 0000000..70b196d --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/beautifuljekyll.css @@ -0,0 +1,1120 @@ +--- +layout: null +--- + +/* @import url("pygment_highlights.css"); */ + +/* --- General --- */ + +html { + font-size: 100% +} + +body { + font-family: 'Lora', 'Times New Roman', serif; + font-size: 1.125rem; + color: {{ site.text-col | default: "#404040" }}; + position: relative; + background-color: {{ site.page-col | default: "#FFFFFF" }}; + {% if site.page-img %} + background-image: url({{ site.page-img | relative_url }}); + background-attachment: fixed; + {% endif %} + overflow-wrap: break-word; +} +p { + line-height: 1.5; + margin: 1.875rem 0; +} +h1,h2,h3,h4,h5,h6 { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 800; + line-height: 1.1; +} +h1 { + font-size: 2.25rem; +} +h2 { + font-size: 1.875rem; +} +h3 { + font-size: 1.5rem; +} +h4 { + font-size: 1.125rem; +} +h1, h2, h3, h4 { + margin-top: 1.25rem; +} +a { + color: {{ site.link-col | default: "#008AFF" }}; +} +a:hover, +a:focus { + color: {{ site.hover-col | default: "#0085A1" }}; +} +blockquote { + color: #808080; + font-style: italic; +} +blockquote p:first-child { + margin-top: 0; +} +hr.small { + max-width: 6.25rem; + margin: 1rem auto; + border-width: 0.25rem; + border-color: inherit; + border-radius: 0.1875rem; +} + +/* fix in-page anchors to not be behind fixed header */ +:target:before { + content: ""; + display: block; + height: 3.125rem; /* navbar height */ + margin: -3.125rem 0 0; +} + +.hideme { + display: none; +} + +::-moz-selection { + color: #fff; + text-shadow: none; + background-color: {{ site.hover-col | default: "#0085A1" }}; +} +::selection { + color: #fff; + text-shadow: none; + background-color: {{ site.hover-col | default: "#0085A1" }}; +} +img::selection { + color: #fff; + background: transparent; +} +img::-moz-selection { + color: #fff; + background: transparent; +} + +img { + max-width: 100%; +} + +.linked-section { + padding-top: 3.75rem; + margin-top: -1.5625rem; +} + +/* Comments */ + +.disqus-comments { + margin-top: 1.875rem; +} + +@media (min-width: 768px) { + .disqus-comments { + margin-top: 2.5rem; + } +} + +/* --- Navbar --- */ + +.navbar-custom { + background-color: {{ site.navbar-col | default: "#EAEAEA" }}; + border-bottom: 1px solid {{ site.navbar-border-col | default: "#DDDDDD" }}; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + {% if site.navbar-img %} + background-image: url({{ site.navbar-img | relative_url }}); + background-attachment: fixed; + {% endif %} + -webkit-transition: padding .5s ease-in-out; + -moz-transition: padding .5s ease-in-out; + transition: padding .5s ease-in-out; +} + +.navbar-custom, +.navbar-custom.top-nav-short, +.navbar-custom.top-nav-short-permanent { + padding-top: 0; + padding-bottom: 0; +} + +.navbar-custom .navbar-brand { + line-height: 1.5; + padding-top: 0.625rem; + padding-bottom: 0.625rem; + font-size: 1.125rem; +} + +.navbar-custom .navbar-brand-logo { + -webkit-transition: padding .5s ease-in-out; + -moz-transition: padding .5s ease-in-out; + transition: padding .5s ease-in-out; +} + +.navbar-custom .navbar-brand-logo, +.navbar-custom.top-nav-short .navbar-brand-logo, +.navbar-custom.top-nav-short-permanent .navbar-brand-logo { + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; +} + +.navbar-custom .navbar-brand-logo img { + -webkit-transition: height .5s ease-in-out; + -moz-transition: height .5s ease-in-out; + transition: height .5s ease-in-out; +} + +.navbar-custom .navbar-brand-logo img, +.navbar-custom.top-nav-short .navbar-brand-logo img, +.navbar-custom.top-nav-short-permanent .navbar-brand-logo img { + height: 2.5rem; +} + +.navbar-custom .navbar-nav .nav-item { + text-transform: uppercase; + font-size: 0.8125rem; + letter-spacing: 0.0625rem; +} + +.navbar-custom .navbar-nav .nav-link { + padding-top: 0; + padding-bottom: 0; + line-height: 1.25rem; + padding-top: 0.9375rem; + padding-bottom: 0.9375rem; +} + +.navbar-custom .navbar-brand, +.navbar-custom .navbar-nav .nav-link { + font-weight: 800; + color: {{ site.navbar-text-col | default: "#404040" }}; +} + +.navbar-toggler { + font-size: 1rem; + margin: 0.5rem 0; +} +.navbar-custom .navbar-toggler:focus, +.navbar-custom .navbar-toggler:hover { + background-color: initial; +} + +.navbar-custom .navbar-toggler[aria-expanded="true"] { + background-color: rgba(0, 0, 0, 0.2); +} + +.dropdown-toggle::after { + border-width: 0.4em; +} + +@media (min-width: 1200px) { + .navbar-custom { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + + .navbar-custom .navbar-brand-logo { + padding-top: 0; + padding-bottom: 0; + } + + .navbar-custom .navbar-brand-logo img { + height: 3.125rem; + } + + .navbar-expand-xl .navbar-nav .nav-link { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + } + + .navbar-expand-xl .navbar-nav .nav-item:not(.dropdown):last-child .nav-link { + padding-right: 0; + } +} + +@media (min-width: 1200px) { + .navbar-custom .nav-item.dropdown:hover { + background: rgba(0, 0, 0, 0.1); + } +} + +.navbar-custom .nav-item.dropdown.show { + background: rgba(0, 0, 0, 0.2); +} + +.navbar-custom .nav-item.dropdown .dropdown-menu { + margin-top: 0; + font-size: 1em; + border: 0; + padding: 0; + {% if site.navbar-var-length %} + min-width: 100%; + {% else %} + min-width: 0; + width: 100%; + word-break: break-word; + {% endif %} +} + +.navbar-custom .nav-item.dropdown .dropdown-menu .dropdown-item { + padding: 0.625rem; + background-color: {{ site.navbar-col | default: "#EAEAEA" }}; + text-decoration: none !important; + font-weight: normal; + color: {{ site.navbar-text-col | default: "#404040" }}; + {% unless site.navbar-var-length %} + white-space: normal; + {% endunless %} +} + +@media (min-width: 1200px) { + .navbar-custom .nav-item.dropdown .dropdown-menu { + text-align: center; + } + + .navbar-custom .nav-item.dropdown .dropdown-menu .dropdown-item { + padding-left: 0.625rem; + border: 1px solid {{ site.navbar-border-col | default: "#DDDDDD" }}; + border-width: 0 1px 1px; + } + + .navbar-custom .nav-item.dropdown .dropdown-menu .dropdown-item:first-child { + border-top-width: 1px; + } +} + +@media (max-width: 1199px) { + .navbar-custom .navbar-collapse { + border-top: 1px solid {{ site.navbar-border-col | default: "#DDDDDD" }}; + margin: 0 -1rem; + } + + .navbar-custom .navbar-nav { + padding: 0.5rem 0; + } + + .navbar-custom .navbar-nav .nav-link { + padding: 0.675rem 0 0.675rem 1rem; + } + + .navbar-custom .nav-item.dropdown.show { + background: rgba(0, 0, 0, 0.2); + } + + .navbar-custom .nav-item.dropdown .dropdown-menu .dropdown-item { + padding-left: 2rem; + } +} +.navbar-custom .navbar-brand:hover, +.navbar-custom .navbar-brand:focus , +.navbar-custom .navbar-nav .nav-link:hover, +.navbar-custom .navbar-nav .nav-link:focus, +.navbar-custom .navbar-nav .dropdown-menu .dropdown-item:hover, +.navbar-custom .navbar-nav .dropdown-menu .dropdown-item:focus { + color: {{ site.hover-col | default: "#0085A1" }}; +} + +.navbar-custom .avatar-container { + position: absolute; + left: 50%; + width: 3.125rem; + bottom: -1.5rem; + transition: opacity 0.5s ease-in-out; + -webkit-transition: opacity 0.5s ease-in-out; + -moz-transition: opacity 0.5s ease-in-out; +} +.navbar-custom.top-nav-short .avatar-container { + opacity: 0; + visibility: hidden; + transition: visibility linear 0.5s, opacity 0.5s ease-in-out; + -webkit-transition: visibility linear 0.5s, opacity 0.5s ease-in-out; + -moz-transition: visibility linear 0.5s, opacity 0.5s ease-in-out; +} + +.navbar-custom .avatar-container .avatar-img-border { + width: 100%; + margin-left: -50%; + {% unless site.round-avatar == false %} + border-radius: 50%; + box-shadow: 0 0 0.5rem rgba(0, 0, 0, .8); + -webkit-box-shadow: 0 0 0.3125rem rgba(0, 0, 0, .8); + -moz-box-shadow: 0 0 0.5rem rgba(0, 0, 0, .8); + {% endunless %} +} +.navbar-custom .avatar-container .avatar-img { + width: 100%; + {% unless site.round-avatar == false %} + border-radius: 50%; + {% endunless %} + display: block; +} + +.navbar-custom.top-nav-expanded .avatar-container { + display: none; +} + +@media (min-width: 1200px) { + .navbar-custom.top-nav-regular .avatar-container { + width: 6.25rem; + bottom: -1.9375rem; + } + + .navbar-custom.top-nav-regular .avatar-container .avatar-img-border { + width: 100%; + {% unless site.round-avatar == false %} + box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); + -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); + -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, .8); + {% endunless %} + } + + .navbar-custom.top-nav-regular .avatar-container .avatar-img { + width: 100%; + } +} + +/* --- Footer --- */ + +footer { + padding: 1.875rem 0; + border-top: 1px #EAEAEA solid; + margin-top: 3.125rem; + font-size: 0.875rem; + background-color: {{ site.footer-col | default: "#EAEAEA" }}; + {% if site.footer-img %} + background-image: url({{ site.footer-img | relative_url }}); + background-attachment: fixed; + {% endif %} +} + +footer p.text-muted { + color: {{ site.footer-text-col | default: "#777777" }} !important; +} + +footer a { + color: {{ site.footer-link-col | default: "#404040" }}; +} + +footer a:hover, +footer a:focus { + color: {{ site.footer-hover-col | default: "#0085A1" }}; +} + +footer .list-inline { + margin: 0; + padding: 0; + margin-bottom: 1.875rem; +} +footer .copyright { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-align: center; + margin-bottom: 0; + margin-top: 0; +} +footer .theme-by { + text-align: center; + margin: 0.625rem 0 0; +} +footer .footer-custom-content { + text-align: center; + margin-bottom: 0.9375rem; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +@media (min-width: 768px) { + footer { + padding: 3.125rem 0; + } + footer .footer-links { + font-size: 1.125rem; + } + footer .copyright { + font-size: 1rem; + } + footer .footer-custom-content { + font-size: 1rem; + } +} + +/* --- Post preview (feed) --- */ + +.posts-list { + margin: 0; +} + +.post-preview { + padding: 1.25rem 0; + border-bottom: 1px solid #eee; + overflow: hidden; +} + +@media (min-width: 768px) { + .post-preview { + padding: 2.1875rem 0; + } +} + +.post-preview:last-child { + border-bottom: 0; +} + +.post-preview a { + text-decoration: none; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: {{ site.text-col | default: "#404040" }}; +} + +.post-preview a:focus, +.post-preview a:hover { + text-decoration: none; + color: {{ site.hover-col | default: "#0085A1" }}; +} + +.post-preview .post-title { + font-size: 1.875rem; + margin-top: 0; +} +.post-preview .post-subtitle { + margin: 0; + font-weight: 300; + margin-bottom: 0.625rem; +} +.post-preview .post-meta, +.post-heading .post-meta { + color: #808080; + font-size: 1.125rem; + font-style: italic; + margin: 0 0 0.625rem; + font-family: 'Lora', 'Times New Roman', serif; +} +.post-heading .post-meta { + display: inline-block; +} +@media (max-width: 767px) { + .post-heading .post-meta { + display: block; + margin-bottom: 0; + } +} +.post-heading .post-meta .middot { + margin: 0 0.625rem; +} +.post-preview .post-entry { + width: 100%; +} +.post-preview .post-image { + float: right; + margin-left: 0.625rem; + height: 12rem; + width: 12rem; +} +.post-preview .post-image { + filter: grayscale(40%); +} +.post-preview .post-image:hover { + filter: grayscale(0%); +} +.post-preview .post-image img { + max-height: 100%; + max-width: 100%; +} +.post-preview .post-image-short { + margin-top: -2.1875rem; +} +@media (max-width: 767px) { + .post-preview .post-image { + height: 9rem; + width: 9rem; + } + .post-preview .post-image-short { + margin-top: 0; + } +} +.post-preview .post-image-small { + width: 100%; + height: 100%; + text-align: center; + display: none; +} +.post-preview .post-image-small img { + max-width: 6.25rem; + max-height: 6.25rem; +} +@media (max-width: 500px) { + .post-preview .post-image { + display: none; + } + .post-preview .post-image-small { + display: block; + } +} + +.post-preview .post-read-more { + font-weight: 800; +} + +@media (min-width: 768px) { + .post-preview .post-title { + font-size: 2.25rem; + } +} + +/* --- Tags --- */ + +.blog-tags { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 0.9375rem; + margin: 1.875rem 0; +} + +.blog-tags span { + color: {{ site.text-col | default: "#404040" }}; + opacity: 0.8; +} + +.blog-tags .list-inline-item { + margin-right: 0; +} + +.blog-tags a { + color: {{ site.text-col | default: "#404040" }}; + text-decoration: none; + padding: 0 0.3125rem; + opacity: 0.8; + border: 1px solid transparent; + border-radius: 0.1875rem; +} + +.blog-tags a:hover { + opacity: 1; + color: {{ site.text-col | default: "#404040" }}; + border-color: {{ site.text-col | default: "#404040" }}; +} + +.post-preview .blog-tags { + margin-top: 0.3125rem; + margin-bottom: 0; +} + +@media (min-width: 768px) { + .post-preview .blog-tags { + margin-top: 0.625rem; + } +} + +/* Tags page */ + +.tag-btn { + margin: 0.3125rem; +} + +#full-tags-list { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +#full-tags-list .tag-entry { + margin: 0 0 0.9375rem 1.5625rem; +} + +#full-tags-list .tag-entry a { + font-size: 1.25rem; +} + +#full-tags-list .tag-entry .entry-date { + color: #808080; + font-style: italic; + font-size: 1rem; +} + +/* --- Post and page headers --- */ + +.intro-header { + margin: 5rem 0 1.25rem; + position: relative; +} +.intro-header.big-img { + background: no-repeat center center; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + -o-background-size: cover; + margin-top: 3.1875rem; /* The small navbar is 50px tall + 1px border */ + margin-bottom: 2.1875rem; +} +nav.top-nav-short-permanent ~ header > .intro-header { + margin-top: 5rem; +} +nav.top-nav-short-permanent ~ header > .intro-header.big-img { + margin-top: 3.1875rem; +} +.intro-header.big-img .big-img-transition { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + background: no-repeat center center; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + -o-background-size: cover; + -webkit-transition: opacity 1s linear; + -moz-transition: opacity 1s linear; + transition: opacity 1s linear; +} +.intro-header .page-heading { + text-align: center; +} +.intro-header.big-img .page-heading, +.intro-header.big-img .post-heading { + padding: 6.25rem 0; + color: #FFF; + text-shadow: 1px 1px 3px #000; +} +.intro-header .page-heading h1 { + margin-top: 0; + font-size: 3.125rem; +} +.intro-header .post-heading h1 { + margin-top: 0; + font-size: 2.1875rem; +} +.intro-header .page-heading .page-subheading, +.intro-header .post-heading .post-subheading { + font-size: 1.6875rem; + line-height: 1.1; + display: block; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 300; + margin: 0.625rem 0 0; +} +.intro-header .post-heading .post-subheading { + margin-bottom: 1.25rem; +} +.intro-header.big-img .page-heading .page-subheading, +.intro-header.big-img .post-heading .post-subheading { + font-weight: 400; +} +.intro-header.big-img .page-heading hr { + box-shadow: 1px 1px 3px #000; + -webkit-box-shadow: 1px 1px 3px #000; + -moz-box-shadow: 1px 1px 3px #000; +} +.intro-header.big-img .post-heading .post-meta { + color: #EEE; +} +.intro-header.big-img .img-desc { + background: rgba(30, 30, 30, 0.6); + position: absolute; + padding: 0.3125rem 0.625rem; + font-size: 0.6875rem; + color: #EEE; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + right: 0; + bottom: 0; + display: none; +} +@media (min-width: 1200px) { + .intro-header { + margin-top: 8.125rem; + } + .intro-header.big-img { + margin-top: 5.6875rem; /* Full navbar is small navbar + 20px padding on each side when expanded */ + } + .intro-header.big-img .page-heading, + .intro-header.big-img .post-heading { + padding: 9.375rem 0; + } + .intro-header .page-heading h1 { + font-size: 5rem; + } + .intro-header .post-heading h1 { + font-size: 3.125rem; + } + .intro-header.big-img .img-desc { + font-size: 0.875rem; + } +} + +.header-section.has-img .no-img { + margin-top: 0; + background-color: #FCFCFC; + margin: 0 0 2.5rem; + padding: 1.25rem 0; + box-shadow: 0 0 0.3125rem #AAA; +} +/* Many phones are 320 or 360px, so make sure images are a proper aspect ratio in those cases */ +.header-section.has-img .intro-header.no-img { + display: none; +} +@media (max-width: 365px) { + .header-section.has-img .intro-header.no-img { + display: block; + } + .intro-header.big-img { + width: 100%; + height: 13.75rem; + } + .intro-header.big-img .page-heading, + .intro-header.big-img .post-heading { + display: none; + } + .header-section.has-img .big-img { + margin-bottom: 0; + } +} +@media (max-width: 325px) { + .intro-header.big-img { + height: 12.5rem; + } +} + +#header-gh-btns { + margin-bottom: 0.9375rem; +} +@media (max-width: 500px) { + #header-gh-btns > iframe { + display: block; + margin-bottom: 0.3125rem; + } +} + +/* --- Pagination --- */ + +.pagination { + margin: 0.625rem 0 0; + justify-content: space-between; +} + +.pagination.blog-pager { + margin-top: 0; +} + +.pagination .page-item.next { + margin-left: auto; +} + +@media (min-width: 768px) { + .pagination.blog-pager { + margin-top: 0.625rem; + } +} + +.pagination .page-item .page-link { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-transform: uppercase; + font-size: 0.875rem; + font-weight: 800; + letter-spacing: 1px; + padding: 0.625rem 0.3125rem; + background-color: #FFF; + border-radius: 0; + color: {{ site.text-col | default: "#404040" }}; +} +@media (min-width: 768px) { + .pagination .page-item .page-link { + padding: 0.9375rem 1.5625rem; + } +} +.pagination .page-item .page-link:hover, +.pagination .page-item .page-link:focus { + color: #FFF; + border: 1px solid {{ site.hover-col | default: "#0085A1" }}; + background-color: {{ site.hover-col | default: "#0085A1" }}; +} + +/* --- Tables --- */ + +table { + padding: 0; +} +table tr { + border-top: 1px solid #cccccc; + background-color: #ffffff; + margin: 0; + padding: 0; +} +table tr:nth-child(2n) { + background-color: #f8f8f8; +} +table tr th { + font-weight: bold; + border: 1px solid #cccccc; + text-align: left; + margin: 0; + padding: 0.375rem 0.8125rem; +} +table tr td { + border: 1px solid #cccccc; + text-align: left; + margin: 0; + padding: 0.375rem 0.8125rem; +} +table tr th :first-child, +table tr td :first-child { + margin-top: 0; +} +table tr th :last-child, +table tr td :last-child { + margin-bottom: 0; +} + +/* --- Code blocks --- */ + +code { + padding: 0.125rem 0.25rem; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 0.25rem; +} + +pre code { + padding: 0; + background-color: transparent; + border-radius: 0; +} + +pre { + font-size: 0.875rem; + line-height: 1.5em; + border-radius: 0.25rem; + padding: 0.59375rem; +} +.highlight pre { + border: none; + background: none; + margin: 0; +} +.highlight > pre { + background-image: linear-gradient( + rgba(0,0,0,0.03), rgba(0,0,0,0.03) 1.5em, rgba(0,0,0,0.02) 1.5em, rgba(0,0,0,0.02) 3em); + background-size: auto 3em; + background-position-y: 0.625rem; + border: 1px solid rgba(0,0,0,0.1); + border-left: 0.4375rem solid #444; +} +.highlight > pre:not([class~="highlight"]) { /* code block with line number */ + padding: 0; +} +.highlight table, +.highlight tr, +.highlight td { /* to be removed after fixing table styles */ + border: none; + background: none; + padding: 0; + margin: 0; +} +.highlight pre.lineno { + color: rgba(0,0,0,0.3); + border-radius: 0; + border-right: 2px solid #444; +} + +/* Make line numbers unselectable: excludes line numbers from copy-paste user ops */ +.lineno { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.lineno::selection, .lineno::-moz-selection { + background: none; +} + +/* Fix table border github gist snippets */ + +.gist, .gist-file table tr { + border: unset; +} + +.gist, .gist-file table tr td { + border: unset; +} + +/* --- Social media sharing section --- */ + +#social-share-section { + margin-bottom: 1.875rem; + margin-top: 1.875rem; +} + +/* --- Notification boxes --- */ +.box-note, +.box-warning, +.box-error, +.box-success { + padding: 0.9375rem 0.9375rem 0.9375rem 0.625rem; + margin: 1.25rem 1.25rem 1.25rem 0.3125rem; + border: 1px solid #eee; + border-left-width: 0.3125rem; + border-radius: 0.3125rem 0.1875rem 0.1875rem 0.3125rem; +} + +.box-note { + background-color: #eee; + border-left-color: #2980b9; +} + +.box-warning { + background-color: #fdf5d4; + border-left-color: #f1c40f; +} + +.box-error { + background-color: #f4dddb; + border-left-color: #c0392b; +} + +.box-success { + background-color: #98FB98; + border-left-color: #3CB371; +} + +/* --- Misc blog post styles --- */ + +.blog-post :first-child { + margin-top: 0; +} + +.blog-post img { + max-width: 100%; +} + +.blog-post .caption { + text-align: center; + font-size: 0.875rem; + padding: 0.625rem; + font-style: italic; + color: #777; + margin: 0; + display: block; + border-bottom-right-radius: 0.3125rem; + border-bottom-left-radius: 0.3125rem; +} + +.blog-post hr { + max-width: 25%; + border-width: 0.25rem; + border-radius: 0.1875rem; + border-color: #808080; +} + +.blog-post blockquote { + padding: 0.625rem 1.25rem; + margin: 0 0 1.25rem; + font-size: 1.1rem; + border-left: 0.3125rem solid #eee; +} + +.blog-post blockquote p:last-child { + margin-bottom: 0; +} + +.center { + display: block; + margin: 0 auto; +} + +/* Search bar */ +#beautifuljekyll-search-overlay { + display: none; + z-index: 999999; + position: fixed; + background: rgba(0,0,0,0.9); + left: 0; + right: 0; + top: 0; + bottom: 0; + text-align: center; + padding: 1rem; +} +#nav-search-exit { + position: absolute; + top: 1.5rem; + cursor: pointer; + right: 25%; + margin-right: 2rem; + color: #555; + font-size: 2rem; + line-height: 2rem; + font-weight: bold; +} +#nav-search-exit:hover { + color: #000; +} +#nav-search-input { + text-align: center; + background: #e7edee; + margin: auto; + display: block; + font-size: 2rem; + width: 50%; + transition: width 300ms ease; + color: #222; + border-radius: 5rem; + outline: none; + border: none; + padding: 0 3rem; +} +@media (max-width: 1199px) { + #nav-search-input { + width: 75%; + } + #nav-search-exit { + right: 12.5%; + } +} +@media (max-width: 767px) { + #nav-search-input { + width: 100%; + } + #nav-search-exit { + right: 0; + } +} +#nav-search-input:focus { + background: #f3f8fe; + box-shadow: 0px 0.15rem 1rem #e7f4ff; + outline: none; +} + +#nav-search-input::placeholder { + color: #777; +} + +#search-results-container { + list-style: none; + padding-left: unset; + margin-top: 1.5rem; + color: #fff; + font-size: 1.5rem; + max-height: calc(100vh - 6.5rem); + overflow-y: auto; +} +#search-results-container a { + color: #fff; + text-decoration: none; +} +#search-results-container a:hover { + color: #fff; + text-decoration: underline; +} + +#nav-search-icon { + display: inline-block; +} +#nav-search-text { + display: none; +} + +@media (max-width: 1199px) { + #nav-search-icon { + display: none; + } + #nav-search-text { + display: inline-block; + } +} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/bootstrap-social.css b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/bootstrap-social.css new file mode 100644 index 0000000..e565f3a --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/bootstrap-social.css @@ -0,0 +1,147 @@ +/* + * Social Buttons for Bootstrap + * + * Copyright 2013-2015 Panayiotis Lipiridis + * Licensed under the MIT License + * + * https://github.com/lipis/bootstrap-social + */ + +.btn-social{position:relative;margin-bottom:5px;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} +.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} +.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} +.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} +.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} +.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} +.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} +.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} +.btn-social-icon>:first-child{border:none;text-align:center;width:100% !important} +.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} +.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} +.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} +.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} +.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} +.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active:hover,.btn-adn.active:hover,.open>.dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open>.dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open>.dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2)} +.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} +.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2)} +.btn-adn .badge{color:#d87a68;background-color:#fff} +.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open>.dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open>.dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open>.dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} +.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)} +.btn-bitbucket .badge{color:#205081;background-color:#fff} +.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} +.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} +.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open>.dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open>.dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open>.dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2)} +.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} +.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} +.btn-dropbox .badge{color:#1087dd;background-color:#fff} +.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} +.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} +.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active:hover,.btn-facebook.active:hover,.open>.dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open>.dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open>.dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2)} +.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} +.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} +.btn-facebook .badge{color:#3b5998;background-color:#fff} +.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} +.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} +.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active:hover,.btn-flickr.active:hover,.open>.dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open>.dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open>.dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2)} +.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} +.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} +.btn-flickr .badge{color:#ff0084;background-color:#fff} +.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} +.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} +.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open>.dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open>.dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open>.dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2)} +.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} +.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2)} +.btn-foursquare .badge{color:#f94877;background-color:#fff} +.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} +.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} +.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active:hover,.btn-github.active:hover,.open>.dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open>.dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open>.dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2)} +.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} +.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)} +.btn-github .badge{color:#444;background-color:#fff} +.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} +.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} +.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active:hover,.btn-google.active:hover,.open>.dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open>.dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open>.dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2)} +.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none} +.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} +.btn-google .badge{color:#dd4b39;background-color:#fff} +.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} +.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} +.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active:hover,.btn-instagram.active:hover,.open>.dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open>.dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open>.dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2)} +.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} +.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)} +.btn-instagram .badge{color:#3f729b;background-color:#fff} +.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} +.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} +.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open>.dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open>.dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open>.dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2)} +.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} +.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} +.btn-linkedin .badge{color:#007bb6;background-color:#fff} +.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} +.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} +.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open>.dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open>.dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open>.dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2)} +.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} +.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2)} +.btn-microsoft .badge{color:#2672ec;background-color:#fff} +.btn-odnoklassniki{color:#fff;background-color:#f4731c;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:focus,.btn-odnoklassniki.focus{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki:hover{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:active:hover,.btn-odnoklassniki.active:hover,.open>.dropdown-toggle.btn-odnoklassniki:hover,.btn-odnoklassniki:active:focus,.btn-odnoklassniki.active:focus,.open>.dropdown-toggle.btn-odnoklassniki:focus,.btn-odnoklassniki:active.focus,.btn-odnoklassniki.active.focus,.open>.dropdown-toggle.btn-odnoklassniki.focus{color:#fff;background-color:#b14c09;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{background-image:none} +.btn-odnoklassniki.disabled,.btn-odnoklassniki[disabled],fieldset[disabled] .btn-odnoklassniki,.btn-odnoklassniki.disabled:hover,.btn-odnoklassniki[disabled]:hover,fieldset[disabled] .btn-odnoklassniki:hover,.btn-odnoklassniki.disabled:focus,.btn-odnoklassniki[disabled]:focus,fieldset[disabled] .btn-odnoklassniki:focus,.btn-odnoklassniki.disabled.focus,.btn-odnoklassniki[disabled].focus,fieldset[disabled] .btn-odnoklassniki.focus,.btn-odnoklassniki.disabled:active,.btn-odnoklassniki[disabled]:active,fieldset[disabled] .btn-odnoklassniki:active,.btn-odnoklassniki.disabled.active,.btn-odnoklassniki[disabled].active,fieldset[disabled] .btn-odnoklassniki.active{background-color:#f4731c;border-color:rgba(0,0,0,0.2)} +.btn-odnoklassniki .badge{color:#f4731c;background-color:#fff} +.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} +.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} +.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active:hover,.btn-openid.active:hover,.open>.dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open>.dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open>.dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2)} +.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} +.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2)} +.btn-openid .badge{color:#f7931e;background-color:#fff} +.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} +.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} +.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open>.dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open>.dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open>.dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2)} +.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} +.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} +.btn-pinterest .badge{color:#cb2027;background-color:#fff} +.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} +.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} +.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active:hover,.btn-reddit.active:hover,.open>.dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open>.dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open>.dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2)} +.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} +.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} +.btn-reddit .badge{color:#eff7ff;background-color:#000} +.btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open>.dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open>.dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open>.dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} +.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#f50;border-color:rgba(0,0,0,0.2)} +.btn-soundcloud .badge{color:#f50;background-color:#fff} +.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} +.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} +.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open>.dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open>.dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open>.dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2)} +.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} +.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} +.btn-tumblr .badge{color:#2c4762;background-color:#fff} +.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} +.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} +.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active:hover,.btn-twitter.active:hover,.open>.dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open>.dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open>.dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2)} +.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} +.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)} +.btn-twitter .badge{color:#55acee;background-color:#fff} +.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} +.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} +.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open>.dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open>.dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open>.dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2)} +.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} +.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} +.btn-vimeo .badge{color:#1ab7ea;background-color:#fff} +.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} +.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} +.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active:hover,.btn-vk.active:hover,.open>.dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open>.dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open>.dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2)} +.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} +.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} +.btn-vk .badge{color:#587ea3;background-color:#fff} +.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} +.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} +.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open>.dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open>.dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open>.dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2)} +.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} +.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2)} +.btn-yahoo .badge{color:#720e9e;background-color:#fff} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/pygment_highlights.css b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/pygment_highlights.css new file mode 100644 index 0000000..05f6e4a --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/pygment_highlights.css @@ -0,0 +1,61 @@ +/* .highlight { background: #ffffff; } Dean commented out */ +/* .highlight pre { background-color: #fff; font-size: 16px } */ +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/staticman.css b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/staticman.css new file mode 100644 index 0000000..8bacb61 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/staticman.css @@ -0,0 +1,180 @@ +/* ========================================================================== + Forms + ========================================================================== */ +.staticman-comments form { + margin: 0 0 5px 0; + padding: 1em; + background-color: #f2f3f3; +} +.staticman-comments form p { + margin-bottom: 2.5px; +} +.staticman-comments form br { + display: none; +} +.staticman-comments label, .staticman-comments input, .staticman-comments button, .staticman-comments textarea { + vertical-align: baseline; + vertical-align: middle; +} +.staticman-comments input, .staticman-comments button, .staticman-comments textarea { + box-sizing: border-box; +} +.staticman-comments label { + display: block; + margin-bottom: 0.25em; + color: #494e52; + cursor: pointer; +} +.staticman-comments label small { + font-size: 0.75em; +} +.staticman-comments label input, .staticman-comments label textarea { + display: block; +} +.staticman-comments input, .staticman-comments textarea { + display: inline-block; + width: 100%; + padding: 0.25em; + margin-bottom: 0.5em; + color: #494e52; + background-color: #fff; + border: #f2f3f3; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} +.staticman-comments .input-mini { + width: 60px; +} +.staticman-comments .input-small { + width: 90px; +} +.staticman-comments input[type="button"], .staticman-comments input[type="reset"], .staticman-comments input[type="submit"] { + width: auto; + height: auto; + cursor: pointer; + overflow: visible; +} +.staticman-comments textarea { + resize: vertical; + height: auto; + overflow: auto; + vertical-align: top; +} +.staticman-comments input[type="hidden"] { + display: none; +} +.staticman-comments .form { + position: relative; +} +/* + Focus & active state + ========================================================================== */ +.staticman-comments input:focus, .staticman-comments textarea:focus { + border-color: #7a8288; + outline: 0; + outline: thin dotted \9; + box-shadow: inset 0 1px 3px rgba(73, 78, 82, 0.06), 0 0 5px rgba(122, 130, 136, 0.7); +} +.staticman-comments input[type="file"]:focus, .staticman-comments input[type="radio"]:focus, .staticman-comments input[type="checkbox"]:focus:focus { + box-shadow: none; +} +/* + Help text + ========================================================================== */ +.staticman-comments .form-text { + color: #898c8e; +} +.staticman-comments .form-text { + display: block; + margin-bottom: 1em; + line-height: 1em; +} +/* + .form-group + ========================================================================== */ +.staticman-comments .form-group { + margin-bottom: 5px; + padding: 0; + border-width: 0; +} +/* + Comments + ========================================================================== */ +.staticman-comments .page__comments { + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; +} +.staticman-comments .page__comments-title { + margin-top: 2rem; + margin-bottom: 10px; + padding-top: 2rem; + border-top: 1px solid #f2f3f3; +} +.staticman-comments .page__comments-form { + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.staticman-comments .page__comments-form.disabled input, .staticman-comments .page__comments-form.disabled button, .staticman-comments .page__comments-form.disabled textarea, .staticman-comments .page__comments-form.disabled label { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + box-shadow: none; + opacity: 0.65; +} +.staticman-comments .comment { + margin: 1em 0; +} +.staticman-comments .comment:not(:last-child) { + border-bottom: 1px solid #f2f3f3; +} +.staticman-comments .comment__avatar-wrapper { + float: left; + width: 60px; + height: 60px; +} +.staticman-comments .comment__avatar { + width: 40px; + height: 40px; + border-radius: 50%; +} +.staticman-comments .comment__content-wrapper { + width: calc(100% - 60px); +} +.staticman-comments .comment__author { + margin: 0; +} +.staticman-comments .comment__author a { + text-decoration: none; +} +.staticman-comments .comment__date { + margin: 0; +} +.staticman-comments .comment__date a { + text-decoration: none; +} +/* ========================================================================== + PRINT STYLES + ========================================================================== */ +.staticman-comments @media print { + /* + Hide the following elements on print + ========================================================================== */ +.staticman-comments [hidden] { + display: none; + } +.staticman-comments .masthead, .staticman-comments .toc, .staticman-comments .page__share, .staticman-comments .page__related, .staticman-comments .pagination, .staticman-comments .ads, .staticman-comments .page__footer, .staticman-comments .page__comments-form, .staticman-comments .author__avatar, .staticman-comments .author__content, .staticman-comments .author__urls-wrapper, .staticman-comments .nav__list, .staticman-comments .sidebar, .staticman-comments .adsbygoogle { + display: none !important; + height: 1px !important; + } +} +/* + Post pagination navigation links + ========================================================================== */ +.staticman-comments .page__comments + .staticman-comments .pagination { + margin-top: 2em; + padding-top: 2em; + border-top: 1px solid #f2f3f3; +} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/zogg.css b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/zogg.css new file mode 100644 index 0000000..5e3d0d3 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/css/zogg.css @@ -0,0 +1,73 @@ +body { + display: flex; + flex-direction: column; + min-height: 100vh; + } +header, footer { + flex-grow: 0; + flex-shrink: 0; + flex-basis: auto; + } +.container-md { + flex-grow: 1; + flex-shrink: 0; + flex-basis: auto; + } + +blockquote { + border-left: 2px solid #aaafaf; + padding-left: 1em; +} + +.author-site a, .theme-by a { + color: #fff !important; +} + +.blog-tags a { + border: none !important; +} +.blog-tags a:hover, .blog-tags a:focus { + color: #cc0000 !important; +} + +footer p.text-muted { + color: #fff !important; +} +footer .footer-links a { + color: #ff4d4d !important; +} +footer .footer-links a:hover, footer .footer-links a:hover { + color: #cc0000 !important; +} + +.scroll-container { + position: absolute; + top: 0; + right:0; + height: 100%; + padding-right: 1em; +} +.scroll-container:before { + content: ''; + display: block; + height: 100vh; + pointer-events: none; +} +.scroll-container a, .scroll-container i { + position: sticky; + top: 95vh; + cursor: pointer; + font-size: 1.1em; + color: #741a1a !important; + text-decoration: none; +} +.scroll-container a:hover, .scroll-container a:focus { + text-decoration: none; +} + +.highlight { + max-height: 300px; +} +.highlight pre { + max-height: inherit !important; +} diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/404.webp b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/404.webp new file mode 100644 index 0000000..5bae8bf Binary files /dev/null and b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/404.webp differ diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/avatar.webp b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/avatar.webp new file mode 100644 index 0000000..92eea45 Binary files /dev/null and b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/avatar.webp differ diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/favicon.webp b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/favicon.webp new file mode 100644 index 0000000..4e88215 Binary files /dev/null and b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/img/favicon.webp differ diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/beautifuljekyll.js b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/beautifuljekyll.js new file mode 100644 index 0000000..dfcebcd --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/beautifuljekyll.js @@ -0,0 +1,142 @@ +// Dean Attali / Beautiful Jekyll 2023 + +let BeautifulJekyllJS = { + + bigImgEl : null, + numImgs : null, + + init : function() { + setTimeout(BeautifulJekyllJS.initNavbar, 10); + + // Shorten the navbar after scrolling a little bit down + $(window).scroll(function() { + if ($(".navbar").offset().top > 50) { + $(".navbar").addClass("top-nav-short"); + } else { + $(".navbar").removeClass("top-nav-short"); + } + }); + + // On mobile, hide the avatar when expanding the navbar menu + $('#main-navbar').on('show.bs.collapse', function () { + $(".navbar").addClass("top-nav-expanded"); + }); + $('#main-navbar').on('hidden.bs.collapse', function () { + $(".navbar").removeClass("top-nav-expanded"); + }); + + // show the big header image + BeautifulJekyllJS.initImgs(); + + BeautifulJekyllJS.initSearch(); + }, + + initNavbar : function() { + // Set the navbar-dark/light class based on its background color + const rgb = $('.navbar').css("background-color").replace(/[^\d,]/g,'').split(","); + const brightness = Math.round(( // http://www.w3.org/TR/AERT#color-contrast + parseInt(rgb[0]) * 299 + + parseInt(rgb[1]) * 587 + + parseInt(rgb[2]) * 114 + ) / 1000); + if (brightness <= 125) { + $(".navbar").removeClass("navbar-light").addClass("navbar-dark"); + } else { + $(".navbar").removeClass("navbar-dark").addClass("navbar-light"); + } + }, + + initImgs : function() { + // If the page was large images to randomly select from, choose an image + if ($("#header-big-imgs").length > 0) { + BeautifulJekyllJS.bigImgEl = $("#header-big-imgs"); + BeautifulJekyllJS.numImgs = BeautifulJekyllJS.bigImgEl.attr("data-num-img"); + + // 2fc73a3a967e97599c9763d05e564189 + // set an initial image + const imgInfo = BeautifulJekyllJS.getImgInfo(); + const src = imgInfo.src; + const desc = imgInfo.desc; + BeautifulJekyllJS.setImg(src, desc); + + // For better UX, prefetch the next image so that it will already be loaded when we want to show it + const getNextImg = function() { + const imgInfo = BeautifulJekyllJS.getImgInfo(); + const src = imgInfo.src; + const desc = imgInfo.desc; + + const prefetchImg = new Image(); + prefetchImg.src = src; + // if I want to do something once the image is ready: `prefetchImg.onload = function(){}` + + setTimeout(function(){ + const img = $("
    ").addClass("big-img-transition").css("background-image", 'url(' + src + ')'); + $(".intro-header.big-img").prepend(img); + setTimeout(function(){ img.css("opacity", "1"); }, 50); + + // after the animation of fading in the new image is done, prefetch the next one + //img.one("transitioned webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ + setTimeout(function() { + BeautifulJekyllJS.setImg(src, desc); + img.remove(); + getNextImg(); + }, 1000); + //}); + }, 6000); + }; + + // If there are multiple images, cycle through them + if (BeautifulJekyllJS.numImgs > 1) { + getNextImg(); + } + } + }, + + getImgInfo : function() { + const randNum = Math.floor((Math.random() * BeautifulJekyllJS.numImgs) + 1); + const src = BeautifulJekyllJS.bigImgEl.attr("data-img-src-" + randNum); + const desc = BeautifulJekyllJS.bigImgEl.attr("data-img-desc-" + randNum); + + return { + src : src, + desc : desc + } + }, + + setImg : function(src, desc) { + $(".intro-header.big-img").css("background-image", 'url(' + src + ')'); + if (typeof desc !== typeof undefined && desc !== false) { + $(".img-desc").text(desc).show(); + } else { + $(".img-desc").hide(); + } + }, + + initSearch : function() { + if (!document.getElementById("beautifuljekyll-search-overlay")) { + return; + } + + $("#nav-search-link").click(function(e) { + e.preventDefault(); + $("#beautifuljekyll-search-overlay").show(); + $("#nav-search-input").focus().select(); + $("body").addClass("overflow-hidden"); + }); + $("#nav-search-exit").click(function(e) { + e.preventDefault(); + $("#beautifuljekyll-search-overlay").hide(); + $("body").removeClass("overflow-hidden"); + }); + $(document).on('keyup', function(e) { + if (e.key == "Escape") { + $("#beautifuljekyll-search-overlay").hide(); + $("body").removeClass("overflow-hidden"); + } + }); + } +}; + +// 2fc73a3a967e97599c9763d05e564189 + +document.addEventListener('DOMContentLoaded', BeautifulJekyllJS.init); \ No newline at end of file diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/staticman.js b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/staticman.js new file mode 100644 index 0000000..9ecf188 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/staticman.js @@ -0,0 +1,65 @@ +--- +layout: null +--- + +(function ($) { + $('#new_comment').submit(function () { + const form = this; + + $(form).addClass('disabled'); + + {% assign sm = site.staticman -%} + const endpoint = '{{ sm.endpoint }}'; + const repository = '{{ sm.repository }}'; + const branch = '{{ sm.branch }}'; + const url = endpoint + repository + '/' + branch + '/comments'; + const data = $(this).serialize(); + + const xhr = new XMLHttpRequest(); + xhr.open("POST", url); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr.onreadystatechange = function () { + if(xhr.readyState === XMLHttpRequest.DONE) { + const status = xhr.status; + if (status >= 200 && status < 400) { + formSubmitted(); + } else { + formError(); + } + } + }; + + function formSubmitted() { + $('#comment-form-submit').addClass('d-none'); + $('#comment-form-submitted').removeClass('d-none'); + $('.page__comments-form .js-notice').removeClass('alert-danger'); + $('.page__comments-form .js-notice').addClass('alert-success'); + showAlert('success'); + } + + function formError() { + $('#comment-form-submitted').addClass('d-none'); + $('#comment-form-submit').removeClass('d-none'); + $('.page__comments-form .js-notice').removeClass('alert-success'); + $('.page__comments-form .js-notice').addClass('alert-danger'); + showAlert('failure'); + $(form).removeClass('disabled'); + } + + xhr.send(data); + + return false; + }); + + function showAlert(message) { + $('.page__comments-form .js-notice').removeClass('d-none'); + if (message == 'success') { + $('.page__comments-form .js-notice-text-success').removeClass('d-none'); + $('.page__comments-form .js-notice-text-failure').addClass('d-none'); + } else { + $('.page__comments-form .js-notice-text-success').addClass('d-none'); + $('.page__comments-form .js-notice-text-failure').removeClass('d-none'); + } + } +})(jQuery); diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/zogg.js b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/zogg.js new file mode 100644 index 0000000..c36ee09 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/assets/js/zogg.js @@ -0,0 +1,44 @@ +hljs.highlightAll(); + +if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) { + document.getElementById('lightmode').media = "all"; +} +if (localStorage.getItem('lightmode') == "true") { + document.getElementById('lightmode').media = "all"; +} else if (localStorage.getItem('lightmode') == "false") { + document.getElementById('lightmode').media = "none"; +} +var navigation = document.getElementById("main-navbar"); +var ul = navigation.getElementsByTagName("ul")[0]; +var li = document.createElement("li"); +var light_style = document.getElementById('lightmode'); +if (light_style.media === "all") { + li.innerHTML = ""; +} else { + li.innerHTML = ""; +} +var last_li = ul.getElementsByTagName("li")[ul.getElementsByTagName("li").length - 1]; +ul.insertBefore(li, last_li); +function toggleTheme() { + if (light_style.media === "all") { + light_style.media = "none"; + li.innerHTML = ""; + localStorage.setItem('lightmode', 'false'); + } else { + light_style.media = "all"; + li.innerHTML = ""; + localStorage.setItem('lightmode', 'true'); + } +} + +const scrollTo = function( target, duration = 800 ) { + $('html, body').animate( { + scrollTop: isNaN(target) ? $(target).offset().top : target + }, duration); +} +$(function() { + $('#backtotop').on('click', function(e) { + e.preventDefault(); + scrollTo( 0 ) + }) +}) diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/beautiful-jekyll-theme.gemspec b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/beautiful-jekyll-theme.gemspec new file mode 100644 index 0000000..93f54d9 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/beautiful-jekyll-theme.gemspec @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +Gem::Specification.new do |spec| + spec.name = "beautiful-jekyll-theme" + spec.version = "6.0.1" + spec.authors = ["Dean Attali"] + spec.email = ["daattali@gmail.com"] + + spec.summary = "Beautiful Jekyll is a ready-to-use Jekyll theme to help you create an awesome website quickly. Perfect for personal blogs or simple project websites, with a focus on responsive and clean design." + spec.homepage = "https://beautifuljekyll.com" + spec.license = "MIT" + + spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(assets|_layouts|_includes|LICENSE|README|feed|404|_data|tags|staticman)}i) } + + spec.metadata = { + "changelog_uri" => "https://beautifuljekyll.com/updates/", + "documentation_uri" => "https://github.com/daattali/beautiful-jekyll#readme" + } + + spec.add_runtime_dependency "jekyll", "~> 3.9.3" + spec.add_runtime_dependency "jekyll-paginate", "~> 1.1" + spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4" + spec.add_runtime_dependency "kramdown-parser-gfm", "~> 1.1" + spec.add_runtime_dependency "kramdown", "~> 2.3.2" + spec.add_runtime_dependency "webrick", "~> 1.8" + + spec.add_development_dependency "bundler", ">= 1.16" + spec.add_development_dependency "rake", "~> 12.0" +end diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/favicon.ico b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/favicon.ico new file mode 100644 index 0000000..6189ab5 Binary files /dev/null and b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/favicon.ico differ diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/feed.xml b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/feed.xml new file mode 100644 index 0000000..6148cf1 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/feed.xml @@ -0,0 +1,29 @@ +--- +layout: null +--- + + + + {% if site.title %} + {{ site.title | xml_escape }} + {% endif %} + {% if site.rss-description %} + {{ site.rss-description | xml_escape }} + {% endif %} + {{ '' | absolute_url }} + + {% assign excerpt_length = site.excerpt_length | default: 50 %} + {% for post in site.posts limit:20 %} + + {{ post.title | strip_html | xml_escape }} + + {% if post.subtitle %}{{ post.subtitle | strip_html | xml_escape }} - {% endif %} + {{ post.content | strip_html | xml_escape | truncatewords: excerpt_length }} + + {{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }} + {{ post.url | absolute_url }} + {{ post.url | absolute_url }} + + {% endfor %} + + diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/index.html b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/index.html new file mode 100644 index 0000000..7cef456 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/index.html @@ -0,0 +1,5 @@ +--- +layout: home +title: Zogg! +subtitle: Tutos 'rapides' & mood :p +--- diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/inside.md b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/inside.md new file mode 100644 index 0000000..2bf9037 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/inside.md @@ -0,0 +1,43 @@ +--- +layout: page +title: Dans le HomeLab +tags: [inside] +--- + +Certaines personne m'ont demandé de quoi est consitué mon #HomeLab. + +A l'origine il était composé de Raspberry Pi 2, puis de Pi 3b. + +Ensuite il s'est vu renforcé par des Raspberry Pi 4 (4 & 8 Go). + +Tous mes Pi4 sont bien à l'aise dans leur boitier [Argon One v1](https://www.framboise314.fr/boitier-ventile-argon-one-pour-le-raspberry-pi-4/). + +Ce qui m'a permis de pousser sans difficulté leur fréquence CPU de 1.5Ghz en standard à 2.3 Ghz max; en overclocking stable je précise ! + +Maintenant, pour des raisons de performances, de ressouces et de besoins en puissance supplémentaire j'ai monté une machine dédiée qui est composée de : + +|Matériel|Quantité|Description| +|Tour|1|Antec VSK-4000B - USB 3.0 Edition| +|Alimentation|1|Seasonic G12 GC-550 - Gold| +|Carte mère|1|MSI H510M-A PRO| +|CPU|1|Intel Core i5 11400F 2,6 Ghz / 4,4 Ghz| +|Ventirad|1|Noctua NH-L12S| +|Mémoire|1|Corsair Vengeance LPX Black - 2 x 32 Go (64 Go) - DDR4 3200 MHz - CL16| +|GPU|1|ASUS GT710SL2GD5 GeForce GT 710 2Go GDDR5| +|NVMe|1|Western Digital WD Red SN700 - 500 Go| +|HDD|1|Western Digital WD Red Plus - 1 To - 64 Mo| +|SSD|2|Western Digital WD Red SA500 - 1 To| +|HDD|1|WD Red, Disque dur interne NAS 3 To - 5400 rpm, SATA 6 Go/s, SMR, Cache de 256 Mo| + +Le tout fonctionne sous [Proxmox VE](https://www.proxmox.com/en/proxmox-ve) et dispose mainteant d'un [Proxmox Backup Serveur](https://www.proxmox.com/en/proxmox-backup-server). + +L'inspiration pour alimenter les projets sur mon HomeLab proviennent bien sûr d'internet. + +Et plus particulièrement de quatre souces: + +* [Techno Tim](https://docs.technotim.live/) +* [IBRACORP](https://ibracorp.io/) +* [Marius Hosting](https://mariushosting.com/) +* [Christian](https://twitter.com/ChristianLempa) + +PS: N'hésitez pas à aller faire un tour sur Twitter avec [#100DaysOfHomeLab](https://twitter.com/100DaysHomeLab) ! diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/intro.md b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/intro.md new file mode 100644 index 0000000..25ea693 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/intro.md @@ -0,0 +1,11 @@ +--- +layout: page +title: Introduction +tags: [intro] +--- + +> Lorsqu'un homme sage ne comprend pas, il dit : « je ne comprend pas. » +> Le sot et l’inculte sont honteux de leur ignorance. +> Ils gardent le silence alors qu’une simple question pourrait leur apporter la sagesse. + +* Frank Herbert, Et l’homme créa un dieu diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/kamis.md b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/kamis.md new file mode 100644 index 0000000..518ac11 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/kamis.md @@ -0,0 +1,57 @@ +--- +layout: page +title: Kamis +tags: [kami] +--- + +> La mythologie japonaise recèle d’histoires passionnantes et de légendes pleines de rebondissements. Dans les mythes fondateurs du Japon, nous retrouvons les kamis célèbres dieux issus des plus anciennes croyances du Pays du Soleil Levant. +> Les kamis sont des divinités ou des esprits de la religion shinto que l’on retrouve dans la nature. Ils sont liés aux forces cosmiques et peuvent même incarner les âmes des personnes disparues. Ce sont les esprits des ancêtres, des lieux, des éléments naturels, ou encore des défunts empereurs, qui règnent sur le Japon. + +Kami +: _Kami_ signifie _esprit_ ou _supérieur_ en japonais et se réfère à toutes les entités spirituelles vénérées dans la religion shintoïste. Il peut aussi bien s’agir d’un dieu que d’un esprit. + +
    + +## **Izanagi** et Izanami : Les origines de l’univers + +Autrefois, la Terre et le ciel ne formaient qu’un seul élément et l’univers n’existait pas encore, laissant place au chaos. Petit à petit, alors qu’une forme d’existence germait, le ciel et la Terre se détachèrent et le premier kami apparut. Ame-no-Minaka-Nushi eut plusieurs descendants, dont **Izanagi**, dieu de la création et Izanami, déesse de la mort et créatrice de l’univers. + +Le couple Izanagi et Izanami fut à l’origine des premières îles du Japon. De leur union naquirent de nombreux kamis, rois des éléments naturels. Malheureusement, lorsque le kami du feu vint au monde, Izanami mourut. Izanagi, blessé par la perte de sa compagne, tua l’enfant sous l’emprise de la colère. De cet acte fatal, apparurent 8 volcans. + +Pour tenter de récupérer sa bien-aimée, le dieu de la création rejoint le royaume des morts, sans succès. En revenant chez lui effrayé, le dieu décida de se purifier en prenant un bain. En lavant son œil gauche, il créa la déesse du soleil Amaterasu, puis en nettoyant son œil droit, il enfanta le dieu de la lune Tsukuyomi. Enfin, en lavant son nez Izanagi donna naissance à Susanoo, le dieu du vent et des tempêtes. A noter que le rite de purification est une cérémonie encore pratiquée aujourd’hui dans la religion shinto. + +## **Raijin** : déité de l’orage + +Avec ses tambours, Raiden, aussi appelé Raijin, crée les éclairs et le tonnerre. Ce maître de l’orage à l’allure démoniaque provoqua le Typhon qui empêcha l’invasion des Mongols + +## **Suijin** : kami de l’eau + +Cette divinité est associée au milieu aquatique et aux créatures légendaires ou réelles telles que les dragons, serpents et Kappa. + +Les divinités japonaises n’ont pas fini de vous surprendre à travers leurs légendes. Elles sont à l’origine des croyances shinto et de la culture du Pays du Soleil Levant. Par ailleurs, vous aurez l’occasion de les honorer lors des festivals Matsuri. + +## **Susanoo** : kami de la mer et des tempêtes + +Frère de la déesse du soleil et du dieu de la lune, Susanoo est apparu de l’appendice nasal d’Izanagi. Chassé par son père, le kami de la mer se rend au royaume céleste de sa sœur et la provoque. Susanoo est ensuite exilé sur la province D’Izumo. Il y sera célèbre pour avoir combattu un dangereux dragon, selon la légende de Yamata no Orochi. + +## **Tenjin** : dieu des lettres + +Représentée par un bœuf, cette divinité occupe une place importante dans le milieu étudiant, notamment lors des examens. Il incarne un érudit de l’époque Heian. + +## **Inari** : kami du riz et du commerce + +Divinité associée à la culture des rizières, Inari est d’une grande popularité dans la culture japonaise. Symbole de prospérité, les paysans la vénèrent pour la moisson et la fertilité des terres. Inari est également une entité protectrice pour les femmes. Elle est souvent représentée par son messager le Kitsune, un renard a plusieurs queues. + +## Yamata no **Orochi** : portrait d’un monstre légendaire + +Mentionné dans le Kojiki et le Nihon Shoki, deux recueils mythologiques retraçant l’histoire du Japon, Yamata no Orochi n’est pas un dragon ordinaire. Il faut savoir que les dragons asiatiques sont considérés comme des créatures bienveillantes qui apportent courage, sagesse et protection. Or il n’en est rien pour Yamata no **Orochi** ! + +Avec pas moins de huit têtes et huit queues, ce monstre féroce représente à lui seul le chaos. Chacune de ses têtes symbolisant un élément naturel tel que le feu, l’eau, la terre, le vent, la foudre, le poison, la lumière et les ténèbres. + +La bestiole se distingue également par sa taille gigantesque s’étalant sur huit montagnes et huit vallées. Rien que ça ! Son corps ressemble à celui d’un serpent et sa peau fumante est recouverte de forêts entrecoupées de rivières sanguinaires. + +En plus de son apparence terrifiante, et de son souffle toxique, ses yeux rouges lui confèrent un regard effrayant. Aussi, on raconte que Yamata no Orochi porte une cloche qui résonne lorsqu’il se déplace. Situé dans la province de Koshi, non loin de la rivière Hi, le dragon polycéphale a l’habitude de se nourrir de jeunes Japonaises chaque année. + +Sources : + +* [Univers du Japon](https://universdujapon.com/blogs/japon/kami) \ No newline at end of file diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/privacy.md b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/privacy.md new file mode 100644 index 0000000..d56e483 --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/privacy.md @@ -0,0 +1,37 @@ +--- +layout: page +title: Politique de confidentialité +tags: [privacy] +--- + +# Politique relative aux cookies pour Zogg ! + +Ceci est la politique relative aux cookies de Zogg !, accessible depuis + +**Que sont les cookies** + +Comme c'est la pratique courante avec presque tous les sites Web professionnels, ce site utilise des cookies, qui sont de petits fichiers téléchargés sur votre ordinateur, pour améliorer votre expérience. Cette page décrit les informations qu'ils recueillent, comment nous les utilisons et pourquoi nous avons parfois besoin de stocker ces cookies. Nous partagerons également comment vous pouvez empêcher le stockage de ces cookies, mais cela peut dégrader ou "casser" certains éléments de la fonctionnalité des sites. + +**Comment nous utilisons les cookies** + +Nous utilisons des cookies pour diverses raisons détaillées ci-dessous. Malheureusement, dans la plupart des cas, il n'existe pas d'options standard de l'industrie pour désactiver les cookies sans désactiver complètement les fonctionnalités et fonctionnalités qu'ils ajoutent à ce site. Il est recommandé de laisser tous les cookies si vous n'êtes pas sûr d'en avoir besoin ou non au cas où ils seraient utilisés pour fournir un service que vous utilisez. + +**Désactivation des cookies** + +Vous pouvez empêcher l'installation de cookies en ajustant les paramètres de votre navigateur (consultez l'aide de votre navigateur pour savoir comment procéder). Sachez que la désactivation des cookies affectera la fonctionnalité de ce site et de nombreux autres sites Web que vous visitez. La désactivation des cookies entraînera généralement la désactivation de certaines fonctionnalités et caractéristiques de ce site. Il est donc recommandé de ne pas désactiver les cookies. + +**Les cookies que nous installons** + +* **Cookies de préférences du site** : +Afin de vous offrir une excellente expérience sur ce site, nous fournissons la fonctionnalité permettant de définir vos préférences quant au fonctionnement de ce site lorsque vous l'utilisez. Afin de mémoriser vos préférences, nous devons définir des cookies afin que ces informations puissent être appelées chaque fois que vous interagissez avec une page affectée par vos préférences. + +* **Cookies tiers** : +Dans certains cas particuliers, nous utilisons également des cookies fournis par des tiers de confiance. La section suivante détaille les cookies tiers que vous pourriez rencontrer via ce site. +Les analyses de tiers sont utilisées pour suivre et mesurer l'utilisation de ce site afin que nous puissions continuer à produire du contenu attrayant. Ces cookies peuvent suivre des éléments tels que le temps que vous passez sur le site ou les pages que vous visitez, ce qui nous aide à comprendre comment nous pouvons améliorer le site pour vous. + +**Plus d'informations** + +J'espère que cela a clarifié les choses pour vous et, comme mentionné précédemment, s'il y a quelque chose dont vous n'êtes pas sûr d'avoir besoin ou non, il est généralement plus sûr de laisser les cookies activés au cas où ils interagissent avec l'une des fonctionnalités que vous utilisez sur notre site. + +Toutefois, si vous cherchez toujours plus d'informations, vous pouvez nous contacter via l'une de nos méthodes de contact préférées : +* E-mail : tech@zogg.fr diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/screenshot.png b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/screenshot.png new file mode 100644 index 0000000..0c48110 Binary files /dev/null and b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/screenshot.png differ diff --git a/roles/stacks/composes/files/jekyll/datas/jekyll/datas/staticman.yml b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/staticman.yml new file mode 100644 index 0000000..45e939b --- /dev/null +++ b/roles/stacks/composes/files/jekyll/datas/jekyll/datas/staticman.yml @@ -0,0 +1,110 @@ +# Name of the property. You can have multiple properties with completely +# different config blocks for different sections of your site. +# For example, you can have one property to handle comment submission and +# another one to handle posts. +# To encrypt strings use the following endpoint: +# https://{STATICMAN API INSTANCE}/v3/encrypt/{TEXT TO BE ENCRYPTED} +# {STATICMAN API INSTANCE} should match the `endpoint` in the theme config +# file. + +comments: + # (*) REQUIRED + # + # Names of the fields the form is allowed to submit. If a field that is + # not here is part of the request, an error will be thrown. + allowedFields: ["name", "email", "url", "message"] + + # (*) REQUIRED WHEN USING NOTIFICATIONS + # + # When allowedOrigins is defined, only requests sent from one of the domains + # listed will be accepted. The origin is sent as part as the `options` object + # (e.g.  {{- tag -}} ({{site.tags[tag].size}}) +{%- endfor -%} +
    +{%- for tag in tags_list -%} +

    + +  {{- tag -}} ({{site.tags[tag].size}}) +

    +
    + {%- for post in site.tags[tag] -%} +
    + {{- post.title | strip_html -}} + +
    + {%- endfor -%} +
    +{%- endfor -%} +
    diff --git a/roles/stacks/composes/files/ntfy/templates/ntfy/templates/ntfy/server_yml.j2 b/roles/stacks/composes/files/ntfy/templates/ntfy/templates/ntfy/server_yml.j2 new file mode 100644 index 0000000..4d21af7 --- /dev/null +++ b/roles/stacks/composes/files/ntfy/templates/ntfy/templates/ntfy/server_yml.j2 @@ -0,0 +1,33 @@ +# {{ ansible_managed }} +# master: {{ stacks_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +base-url: "https://{{ vm_subdomain_ntfy }}.{{ vm_internet_domain}}" +behind-proxy: true + +enable-signup: false +enable-login: false +enable-reservations: false + +cache-file: "/var/cache/ntfy/cache.db" +cache-startup-queries: | + pragma journal_mode = WAL; + pragma synchronous = normal; + pragma temp_store = memory; + pragma busy_timeout = 15000; + vacuum; +cache-batch-size: 128 +cache-batch-timeout: "3600ms" +cache-duration: "48h" + +attachment-cache-dir: "/var/cache/ntfy/attachments" +attachment-total-size-limit: "512M" +attachment-file-size-limit: "8M" +attachment-expiry-duration: "168h" + +keepalive-interval: "45s" +manager-interval: "1m" + +enable-metrics: true +metrics-listen-http: ":9090" diff --git a/roles/stacks/composes/files/promtail/templates/promtail/templates/promtail/promtail_yml.j2 b/roles/stacks/composes/files/promtail/templates/promtail/templates/promtail/promtail_yml.j2 new file mode 100644 index 0000000..75ddd54 --- /dev/null +++ b/roles/stacks/composes/files/promtail/templates/promtail/templates/promtail/promtail_yml.j2 @@ -0,0 +1,82 @@ +# {{ ansible_managed }} +# master: {{ stacks_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +server: + http_listen_port: 9080 + grpc_listen_port: 0 + log_level: warn + http_server_read_timeout: 120s + http_server_write_timeout: 120s + +positions: + filename: /datas/positions.yaml + +clients: + - url: http://${MASTER_HOST}:${VM_PORT_LOKI}/loki/api/v1/push + batchwait: 60s + batchsize: 2097152 + timeout: 120s + +scrape_configs: + +# +# vm +# + + # local machine logs + - job_name: local + static_configs: + - targets: + - localhost + labels: + host: ${VM_NAME} + job: "varlogs" + __path__: /var/log/*log + + # docker logs + - job_name: docker + pipeline_stages: + - docker: {} + static_configs: + - labels: + host: ${VM_NAME} + job: "docker" + __path__: /var/lib/docker/containers/*/*-json.log + + # syslog target + - job_name: syslog + syslog: + listen_address: 127.0.0.1:1514 + label_structured_data: yes + labels: + host: ${VM_NAME} + job: "syslog" + relabel_configs: + - source_labels: ["__syslog_message_hostname"] + target_label: "host" + + # log containers with label: logging=promtail + - job_name: scrape + docker_sd_configs: + - host: ${DOCKER_HOST} + refresh_interval: 5s + filters: + - name: label + values: ["logging=promtail"] + relabel_configs: + - source_labels: ["__meta_docker_container_log_stream"] + target_label: "stream" + - source_labels: ["__meta_docker_container_name"] + regex: "/(.*)" + target_label: "container" + - source_labels: ["__meta_docker_container_id"] + regex: "(.*)" + target_label: "id" + - source_labels: ["__meta_docker_container_label_logging_jobname"] + target_label: "job" + +# +# specifics +# diff --git a/roles/stacks/composes/files/registry/templates/registry/templates/registry/config_yml.j2 b/roles/stacks/composes/files/registry/templates/registry/templates/registry/config_yml.j2 new file mode 100644 index 0000000..b16d061 --- /dev/null +++ b/roles/stacks/composes/files/registry/templates/registry/templates/registry/config_yml.j2 @@ -0,0 +1,72 @@ +# {{ ansible_managed }} +# master: {{ stacks_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +version: 0.1 + +log: + level: warn + formatter: text + fields: + service: registry + environment: staging + +storage: + cache: + blobdescriptor: redis + filesystem: + rootdirectory: /var/lib/registry + maxthreads: 100 + delete: + enabled: true + +http: + addr: :5443 + host: "https://{{ vm_subdomain_registry }}.{{ vm_internet_domain}}" + headers: + X-Content-Type-Options: [nosniff] + secret: "{{ http_secret }}" + http2: + disabled: false + debug: + addr: 0.0.0.0:5016 + prometheus: + enabled: true + path: /metrics + +health: + storagedriver: + enabled: true + interval: 10s + threshold: 3 + +notifications: + events: + includereferences: true + endpoints: + - name: registry + disabled: false + url: "{{ notifications_endpoints }}" + timeout: 1s + threshold: 10 + backoff: 1s + ignoredmediatypes: + - application/octet-stream + ignore: + mediatypes: + - application/octet-stream + actions: + - pull + +redis: + addr: "{{ vm_master_name }}.{{ vm_local_domain }}:{{ vm_port_redis }}" + dialtimeout: 10ms + readtimeout: 10ms + writetimeout: 10ms + pool: + maxidle: 16 + maxactive: 64 + idletimeout: 300s + tls: + enabled: false diff --git a/roles/stacks/composes/inventory/_sample.yml b/roles/stacks/composes/inventory/_sample.yml new file mode 100644 index 0000000..606409d --- /dev/null +++ b/roles/stacks/composes/inventory/_sample.yml @@ -0,0 +1,37 @@ +# 2023-09-25 +# Stack: stacks +--- + +sample: + name: "sample" + ipv6: true + directories: + - conf + - datas + services: + - name: "sample" + #extends: host + image: "scratch:latest" + uid: "0" + gid: "0" + privileged: true + capabilities: + - DAC_OVERRIDE + restart: "unless-stopped" + depends_on: + sample: + #condition: service_healthy + condition: service_started + ports: + - { exposed: "80", container: "80" } + #healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:80/ || exit 1' + #healthcheck: 'curl --fail http://0.0.0:80/ || exit 1' + environment: + STACK: "sample" + ressources: + cpu: '1.0' + memory: "128M" + pids: 128 + volumes: + - ./conf/conf.d:/etc/nginx/conf.d:rw + - ./datas/html:/usr/share/nginx/html:rw diff --git a/roles/stacks/composes/inventory/adguardhome.yml b/roles/stacks/composes/inventory/adguardhome.yml new file mode 100644 index 0000000..9f01776 --- /dev/null +++ b/roles/stacks/composes/inventory/adguardhome.yml @@ -0,0 +1,68 @@ +# 2023-09-25 +# Stack: adguardhome +--- + +adguardhome: + name: "adguardhome" + tasks: + - adguardhome.yml + ipv6: true + + directories: + - "{{ stack_folder_conf }}/adguardhome/conf" + - "{{ stack_folder_datas }}/adguardhome/datas" + + services: + + - name: "adguardhome" + image: "adguard/adguardhome:latest" + uid: "0" + gid: "0" + privileged: true + capabilities: + - DAC_OVERRIDE + - BPF + - CHOWN + - DAC_READ_SEARCH + - FOWNER + - FSETID + - IPC_LOCK + - IPC_OWNER + - MAC_ADMIN + - MAC_OVERRIDE + - MKNOD + - NET_ADMIN + - NET_BIND_SERVICE + - NET_BROADCAST + - NET_RAW + - SETGID + - SETFCAP + - SETPCAP + - SETUID + - SYS_ADMIN + - SYS_PACCT + - SYS_PTRACE + - SYS_RAWIO + restart: "always" + ports: + - { exposed: "${VM_PORT_ADGUARDHOME}", container: "80", mode: "tcp" } + - { exposed: "3003", container: "3000", mode: "tcp" } + - { exposed: "53", container: "53", mode: "tcp" } + - { exposed: "53", container: "53", mode: "udp" } + - { exposed: "67", container: "67", mode: "udp" } + - { exposed: "784", container: "784", mode: "udp" } + - { exposed: "853", container: "853", mode: "tcp" } + - { exposed: "853", container: "853", mode: "udp" } + - { exposed: "5443", container: "5443", mode: "udp" } + - { exposed: "8853", container: "8853", mode: "udp" } + - { exposed: "68", container: "68", mode: "udp", disabled: true } + - { exposed: "443", container: "443", mode: "tcp", disabled: true } + - { exposed: "443", container: "443", mode: "udp", disabled: true } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:80/ || exit 1' + ressources: + cpus: "4.0" + memory: 1G + tmpfs: 1G + volumes: + - { local: './{{ stack_folder_conf }}/adguardhome/conf', container: '/opt/adguardhome/conf', mode: 'rw' } + - { local: './{{ stack_folder_datas }}/adguardhome/datas', container: '/opt/adguardhome/work', mode: 'rw' } diff --git a/roles/stacks/composes/inventory/adminer.yml b/roles/stacks/composes/inventory/adminer.yml new file mode 100644 index 0000000..bd0f061 --- /dev/null +++ b/roles/stacks/composes/inventory/adminer.yml @@ -0,0 +1,34 @@ +# 2023-09-25 +# Stack: adminer +--- + +adminer: + name: "adminer" + ipv6: true + + directories: [] + + services: + + - name: "adminer" + image: "adminer:latest" + uid: "0" + gid: "0" + capabilities: + - DAC_OVERRIDE + - DAC_READ_SEARCH + - CHOWN + - SETUID + - SETGID + - SYS_ADMIN + - MKNOD + - SETFCAP + - SETPCAP + - SYS_RESOURCE + restart: "no" + ports: + - { exposed: "${VM_PORT_ADMINER}", container: "8080" } + healthcheck: 'php -v || exit 1' + ressources: + cpus: "4.0" + memory: 1G diff --git a/roles/stacks/composes/inventory/aptcacherng.yml b/roles/stacks/composes/inventory/aptcacherng.yml new file mode 100644 index 0000000..e2e6fe0 --- /dev/null +++ b/roles/stacks/composes/inventory/aptcacherng.yml @@ -0,0 +1,31 @@ +# 2023-09-25 +# Stack: aptcacherng +--- + +aptcacherng: + name: "aptcacherng" + tasks: + - aptcacherng.yml + ipv6: true + + directories: + - "{{ stack_folder_conf }}/aptcacherng/conf" + - "{{ stack_folder_datas }}/aptcacherng/datas" + + services: + + - name: "aptcacherng" + image: "sameersbn/apt-cacher-ng:latest" + uid: "0" + gid: "0" + privileged: true + capabilities: + - DAC_OVERRIDE + - FOWNER + restart: "always" + ports: + - { exposed: "${VM_PORT_APTCACHERNG}", container: "3142" } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:3142/acng-report.html || exit 1' + volumes: + - { local: './{{ stack_folder_conf }}/aptcacherng/conf/acng.conf', container: '/etc/apt-cacher-ng/acng.conf', mode: 'ro' } + - { local: './{{ stack_folder_datas }}/aptcacherng/datas', container: '/var/cache/apt-cacher-ng', mode: 'rw' } diff --git a/roles/stacks/composes/inventory/dl.yml b/roles/stacks/composes/inventory/dl.yml new file mode 100644 index 0000000..ae8a2a2 --- /dev/null +++ b/roles/stacks/composes/inventory/dl.yml @@ -0,0 +1,49 @@ +# 2023-09-25 +# Stack: dl +--- + +dl: + name: "dl" + tasks: + - dl.yml + ipv6: true + traefik: true + + directories: + - "{{ stack_folder_conf }}/dl-nginx/conf" + - "{{ stack_folder_datas }}/dl-nginx/datas" + + services: + + - name: "dl-nginx" + image: "{{ vm_subdomain_registry }}.{{ vm_internet_domain }}/zogg/nginx:latest" + uid: "0" + gid: "0" + capabilities: + - CHOWN + - DAC_OVERRIDE + - FOWNER + - FSETID + - SETGID + - SETUID + - NET_BIND_SERVICE + - MKNOD + restart: "always" + ports: + - { exposed: "${VM_PORT_DL_NGINX}", container: "80" } + healthcheck: 'curl --fail http://0.0.0.0:80/ || exit 1' + ressources: + memory: "2G" + pid: 8192 + volumes: + - { local: './{{ stack_folder_conf }}/dl-nginx/conf/dl-nginx', container: '/etc/nginx/conf.d', mode: 'rw' } + - { local: './{{ stack_folder_datas }}/dl-nginx/datas/html', container: '/usr/share/nginx/html', mode: 'ro' } + traefik: + routers: + - { + name: "dl", + rule: "Host(`{{ vm_subdomain_dl }}.{{ vm_internet_domain }}`)", + middlewares: "default@file, errors@docker", + service: "dl@file" + } + services: [] diff --git a/roles/stacks/composes/inventory/dockerproxy.yml b/roles/stacks/composes/inventory/dockerproxy.yml new file mode 100644 index 0000000..44a41f4 --- /dev/null +++ b/roles/stacks/composes/inventory/dockerproxy.yml @@ -0,0 +1,61 @@ +# 2023-09-25 +# Stack: dockerproxy +--- + +dockerproxy: + name: "dockerproxy" + stack: "{{ vm_docker_socketproxy_network }}" + ipv6: true + + directories: + - "{{ stack_folder_datas }}/dockerproxy/datas" + + services: + + - name: "dockerproxy" + image: "tecnativa/docker-socket-proxy:latest" + uid: "0" + gid: "0" + privileged: true + capabilities: + - DAC_OVERRIDE + - SETUID + - SETGID + - CHOWN + - SYS_ADMIN + - MKNOD + restart: "always" + ports: + - { exposed: "${VM_PORT_DOCKERPROXY}", container: "2375" } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:2375/version || exit 1' + environment: + - { name: "DOCKER_HOST", value: "/var/run/docker.sock" } + - { name: "LOG_LEVEL", value: "warning" } + - { name: "EVENTS", value: "1" } + - { name: "PING", value: "1" } + - { name: "VERSION", value: "1" } + - { name: "AUTH", value: "1" } + - { name: "SECRETS", value: "1" } + - { name: "POST", value: "1" } + - { name: "BUILD", value: "1" } + - { name: "COMMIT", value: "1" } + - { name: "CONFIGS", value: "1" } + - { name: "CONTAINERS", value: "1" } + - { name: "DISTRIBUTION", value: "1" } + - { name: "EXEC", value: "1" } + - { name: "GRPC", value: "1" } + - { name: "IMAGES", value: "1" } + - { name: "INFO", value: "1" } + - { name: "NETWORKS", value: "1" } + - { name: "NODES", value: "1" } + - { name: "PLUGINS", value: "1" } + - { name: "SERVICES", value: "1" } + - { name: "SESSION", value: "1" } + - { name: "SWARM", value: "1" } + - { name: "SYSTEM", value: "1" } + - { name: "TASKS", value: "1" } + - { name: "VOLUMES", value: "1" } + volumes: + - { local: '/var/run/docker.sock', container: '/var/run/docker.sock', mode: 'rw' } + - { local: '/dev/log', container: '/dev/log', mode: 'ro' } + - { local: './{{ stack_folder_datas }}/dockerproxy/datas', container: '/var/lib/haproxy', mode: 'rw' } diff --git a/roles/stacks/composes/inventory/dozzle.yml b/roles/stacks/composes/inventory/dozzle.yml new file mode 100644 index 0000000..9f171b4 --- /dev/null +++ b/roles/stacks/composes/inventory/dozzle.yml @@ -0,0 +1,22 @@ +# 2023-09-25 +# Stack: stacks +--- + +dozzle: + name: "dozzle" + ipv6: true + + directories: [] + + services: + + - name: "dozzle" + image: "amir20/dozzle:latest" + uid: "0" + gid: "0" + restart: "always" + ports: + - { exposed: "${VM_PORT_DOZZLE}", container: "8080" } + healthcheck: '[ "CMD", "/dozzle", "healthcheck" ]' + ressources: + memory: "1G" diff --git a/roles/stacks/composes/inventory/drawio.yml b/roles/stacks/composes/inventory/drawio.yml new file mode 100644 index 0000000..4f0df6d --- /dev/null +++ b/roles/stacks/composes/inventory/drawio.yml @@ -0,0 +1,35 @@ +# 2023-09-25 +# Stack: drawio +--- + +drawio: + name: "drawio" + ipv6: true + traefik: true + + directories: [] + + services: + + - name: "drawio" + image: "jgraph/drawio:latest" + restart: "unless-stopped" + ports: + - { exposed: "${VM_PORT_DRAWIO}", container: "8080" } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:8080/ || exit 1' + environment: + - { name: "ORGANISATION_UNIT", value: "Zogg" } + - { name: "ORGANISATION", value: "Zogg" } + - { name: "COUNTRY_CODE", value: "FR" } + - { name: "DRAWIO_BASE_URL", value: "https://{{ vm_subdomain_drawio }}.{{ vm_internet_domain }}" } + ressources: + memory: 512M + traefik: + routers: + - { + name: "dl", + rule: "Host(`{{ vm_subdomain_drawio }}.{{ vm_internet_domain }}`)", + middlewares: "default@file, errors@docker", + service: "drawio@file" + } + services: [] diff --git a/roles/stacks/composes/inventory/flame.yml b/roles/stacks/composes/inventory/flame.yml new file mode 100644 index 0000000..5a07b59 --- /dev/null +++ b/roles/stacks/composes/inventory/flame.yml @@ -0,0 +1,52 @@ +# 2023-09-25 +# Stack: flame +--- + +flame: + name: "flame" + tasks: + - flame.yml + ipv6: true + traefik: true + secrets: true + + directories: + - "{{ stack_folder_datas }}/flame/conf" + - "{{ stack_folder_secrets }}/flame/secrets" + + services: + + - name: "flame" + image: "pawelmalak/flame:latest" + uid: "0" + gid: "0" + capabilities: + - DAC_OVERRIDE + - CHOWN + - DAC_READ_SEARCH + restart: "always" + ports: + - { exposed: "${VM_PORT_FLAME}", container: "5005" } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:5005/ || exit 1' + environment: + - { name: "PASSWORD_FILE", value: "/run/secrets/password" } + ressources: + cpus: "4.0" + memory: 512M + volumes: + - { local: './{{ stack_folder_datas }}/flame/datas', container: '/app/data', mode: 'rw' } + traefik: + routers: + - { + name: "flame", + rule: "Host(`{{ vm_subdomain_flame }}.{{ vm_internet_domain }}`)", + middlewares: "default@file, errors@docker" + } + - { + name: "flame-ws", + rule: "Host(`{{ vm_subdomain_flame }}.{{ vm_internet_domain }}`) && Path(`/socket`)", + middlewares: "default@file, wss@file" + } + services: [] + secrets: + - { name: "password", file: "./{{ stack_folder_secrets }}/flame/secrets/flame-password" } diff --git a/roles/stacks/composes/inventory/hastebin.yml b/roles/stacks/composes/inventory/hastebin.yml new file mode 100644 index 0000000..b7f7f15 --- /dev/null +++ b/roles/stacks/composes/inventory/hastebin.yml @@ -0,0 +1,38 @@ +# 2023-09-25 +# Stack: hastebin +--- + +hastebin: + name: "hastebin" + tasks: + - hastebin.yml + ipv6: true + traefik: true + + directories: + - "{{ stack_folder_conf }}/hastebin/conf" + + services: + + - name: "hastebin" + image: "derkades/hastebin:latest" + uid: "0" + gid: "0" + restart: "unless-stopped" + ports: + - { exposed: "${VM_PORT_HASTEBIN}", container: "7777" } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:7777/ || exit 1' + environment: + - { name: "STORAGE_TYPE", value: "redis" } + - { name: "STORAGE_HOST", value: "${MASTER_HOST}" } + - { name: "STORAGE_PORT", value: "${VM_PORT_REDIS}" } + volumes: + - { local: './{{ stack_folder_conf }}/hastebin/conf/config.js', container: '/app/config.js', mode: 'rw' } + traefik: + routers: + - { + name: "hastebin", + rule: "Host(`{{ vm_subdomain_hastebin }}.{{ vm_internet_domain }}`)", + middlewares: "default@file, errors@docker" + } + services: [] diff --git a/roles/stacks/composes/inventory/homepage.yml b/roles/stacks/composes/inventory/homepage.yml new file mode 100644 index 0000000..51700cc --- /dev/null +++ b/roles/stacks/composes/inventory/homepage.yml @@ -0,0 +1,29 @@ +# 2023-09-25 +# Stack: stacks +--- + +homepage: + name: "homepage" + tasks: + - homepage.yml + ipv6: true + + directories: + - "{{ stack_folder_conf }}/homepage/conf" + - "{{ stack_folder_datas }}/homepage/datas" + + services: + + - name: "homepage" + image: "ghcr.io/benphelps/homepage:latest" + restart: "always" + ports: + - { exposed: "${VM_PORT_HOMEPAGE}", container: "3000" } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:3000/ || exit 1' + ressources: + cpus: "4.0" + memory: "512M" + volumes: + - { local: './{{ stack_folder_conf }}/homepage/conf', container: '/app/config', mode: 'ro' } + - { local: './{{ stack_folder_datas }}/homepage/datas/icons', container: '/app/public/icons', mode: 'ro' } + - { local: './{{ stack_folder_datas }}/homepage/datas/images', container: '/app/public/images', mode: 'ro' } diff --git a/roles/stacks/composes/inventory/ipfs.yml b/roles/stacks/composes/inventory/ipfs.yml new file mode 100644 index 0000000..1051a41 --- /dev/null +++ b/roles/stacks/composes/inventory/ipfs.yml @@ -0,0 +1,74 @@ +# 2023-09-25 +# Stack: ipfs +--- + +ipfs: + name: "ipfs" + tasks: + - ipfs.yml + ipv6: true + traefik: true + + notice: | + # Container console (ash) + # To access the WebUI type in http://yourIP:5005/webui in the browser + # + # ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://yourIP:5005", "http://localhost:3000", "http://127.0.0.1:5005", "https://webui.ipfs.io"]' + # ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]' + # Restart IPFS Container + # + # Traefik Auth + # cd /tmp && htpasswd -c -B ipfs.pwd username + + directories: + - "{{ stack_folder_datas }}/ipfs/datas" + - "{{ stack_folder_datas }}/ipfs/ipfs/datas" + - "{{ stack_folder_datas }}/ipfs/ipns/datas" + + services: + + - name: "ipfs" + extends: "host" + image: "ipfs/kubo:latest" + capabilities: + - DAC_OVERRIDE + restart: "unless-stopped" + ports: + - { exposed: "${VM_PORT_IPFS_RPC}", container: "5001", comments: " # RPC API - includes admin operations - never open to the public internet" } + - { exposed: "${VM_PORT_IPFS_GATEWAY}", container: "8080", comments: " # Gateway" } + - { exposed: "${VM_PORT_IPFS_P2P}", container: "4001", comments: " # P2P TCP/QUIC transports" } + - { exposed: "${VM_PORT_IPFS_P2P}", container: "4001", mode: "udp", comments: " # P2P TCP/QUIC transports" } + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:5001/webui || exit 1' + environment: + - { name: "IPFS_PATH", value: "/data/ipfs" } + tmpfs: 512M + ressources: + memory: 1G + volumes: + - { local: './{{ stack_folder_datas }}/ipfs/datas', container: '/data/ipfs', mode: 'rw' } + - { local: './{{ stack_folder_datas }}/ipfs/ipfs/datas', container: '/ipfs', mode: 'rw' } + - { local: './{{ stack_folder_datas }}/ipfs/ipns/datas', container: '/ipns', mode: 'rw' } + traefik: + routers: + - { + name: "ipfs-redir", + rule: "Host(`{{ vm_subdomain_ipfs }}.{{ vm_internet_domain }}`) && Path(`/`)", + middlewares: "default@file, ipfs-webui@docker", + service: "ipfs@docker" + } + - { + name: "ipfs", + rule: "Host(`{{ vm_subdomain_ipfs }}.{{ vm_internet_domain }}`) && PathPrefix(`/webui`)", + middlewares: "default@file, services-auth@file", + service: "ipfs@docker" + } + - { + name: "ipfs-ipfs", + rule: "Host(`{{ vm_subdomain_ipfs }}.{{ vm_internet_domain }}`) && (PathPrefix(`/ipfs/`) || PathPrefix(`/api/`))", + middlewares: "default@file, services-auth@file", + service: "ipfs@docker" + } + services: + - { name: "ipfs", port: "5001" } + middlewares: + - { name: "ipfs-webui", content: "addPrefix.prefix: '/webui'" } diff --git a/roles/stacks/composes/inventory/itzg.yml b/roles/stacks/composes/inventory/itzg.yml new file mode 100644 index 0000000..cf6a05b --- /dev/null +++ b/roles/stacks/composes/inventory/itzg.yml @@ -0,0 +1,32 @@ +# 2023-09-25 +# Stack: itzg +--- + +itzg: + name: "itzg" + tasks: + - itzg.yml + ipv6: true + + directories: + - "{{ stack_folder_datas }}/itzg/datas" + + services: + + - name: "itzg" + image: "itzg/minecraft-server:java17-graalvm-ce" + restart: "no" + ports: + - { exposed: "25565", container: "25565" } + environment: + - { name: "EULA", value: "TRUE" } + - { name: "TYPE", value: "FABRIC" } + - { name: "VERSION", value: "1.20.1" } + - { name: "ENABLE_COMMAND_BLOCK", value: "TRUE" } + - { name: "MEMORY", value: "2G" } + tmpfs: 256M + ressources: + cpu: "1.0" + memory: "2G" + volumes: + - { local: './{{ stack_folder_datas }}/itzg/datas', container: '/data', mode: 'rw' } diff --git a/roles/stacks/composes/inventory/jekyll.yml b/roles/stacks/composes/inventory/jekyll.yml new file mode 100644 index 0000000..4f9a486 --- /dev/null +++ b/roles/stacks/composes/inventory/jekyll.yml @@ -0,0 +1,63 @@ +# 2023-09-25 +# Stack: jekyll +--- + +jekyll: + name: "jekyll" + tasks: + - jekyll.yml + ipv6: true + traefik: true + + directories: + - "{{ stack_folder_datas }}/jekyll/datas/_site" + - "{{ stack_folder_datas }}/jekyll/datas/bundle" + - "{{ stack_folder_datas }}/jekyll/datas/jekyll" + + services: + + - name: "jekyll" + image: "jekyll/jekyll:latest" + uid: "0" + gid: "0" + capabilities: + - CHOWN + - DAC_OVERRIDE + - FOWNER + - FSETID + - SETGID + - SETUID + - NET_BIND_SERVICE + - MKNOD + restart: "always" + ports: + - { exposed: "${VM_PORT_JEKYLL}", container: "4000" } + commands: + - ["jekyll", "serve"] + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:4000/ || exit 1' + environment: + - { name: "JEKYLL_UID", value: "1000" } + - { name: "JEKYLL_GID", value: "1000" } + - { name: "JEKYLL_ENV", value: "production" } + tmpfs: 512M + ressources: + cpu: "8.0" + memory: "1G" + volumes: + - { local: './{{ stack_folder_datas }}/jekyll/datas/jekyll', container: '/srv/jekyll', mode: 'rw' } + - { local: './{{ stack_folder_datas }}/jekyll/datas/_site', container: '/srv/jekyll/_site', mode: 'rw' } + - { local: './{{ stack_folder_datas }}/jekyll/datas/bundle', container: '/usr/local/bundle', mode: 'rw' } + traefik: + routers: + - { + name: "jekyll-admin", + rule: "Host(`{{ vm_subdomain_jekyll }}.{{ vm_internet_domain }}`) && PathPrefix(`/admin`)", + middlewares: "default@file, services-auth@file, errors@docker" + } + - { + name: "jekyll", + rule: "Host(`{{ vm_subdomain_jekyll }}.{{ vm_internet_domain }}`)", + middlewares: "default@file, errors@docker", + service: "jekyll@file" + } + services: [] diff --git a/roles/stacks/composes/inventory/monitoring-vm.yml b/roles/stacks/composes/inventory/monitoring-vm.yml new file mode 100644 index 0000000..a215719 --- /dev/null +++ b/roles/stacks/composes/inventory/monitoring-vm.yml @@ -0,0 +1,133 @@ +# 2023-09-25 +# Stack: monitoring_vm +--- + +monitoring_vm: + name: "monitoring-vm" + stack: "monitoring" + ipv6: true + + directories: [] + + services: + + - name: "cadvisor" + image: "gcr.io/cadvisor/cadvisor:v0.47.2" + uid: "0" + gid: "0" + privileged: true + capabilities: + - SYS_PTRACE + restart: "always" + ports: + - { exposed: "${VM_PORT_EXPORTER_CADVISOR}", container: "8080" } + commands: + - "--storage_duration=1m0s" + - "--event_storage_age_limit=default=0" + - "--event_storage_event_limit=default=0" + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:8080/ || exit 1' + ressources: + cpu: "2.0" + memory: 1G + volumes: + - { local: '/', container: '/rootfs', mode: 'ro' } + - { local: '/etc/machine-id', container: '/etc/machine-id', mode: 'ro' } + - { local: '/sys', container: '/sys', mode: 'ro' } + - { local: '/dev/disk/', container: '/dev/disk/', mode: 'ro' } + - { local: '/var/lib/docker/', container: '/var/lib/docker/', mode: 'ro' } + - { local: '/var/lib/dbus/machine-id', container: '/var/lib/dbus/machine-id', mode: 'ro' } + - { local: '/var/run', container: '/var/run', mode: 'ro' } + + - name: "node-exporter" + image: "prom/node-exporter:latest" + uid: "0" + gid: "0" + privileged: true + capabilities: + - SYS_ADMIN + restart: "always" + ports: + - { exposed: "${VM_PORT_EXPORTER_NODE}", container: "9100" } + commands: + - "--collector.arp" + - "--collector.bcache" + - "--collector.bonding" + - "--collector.btrfs" + - "--collector.conntrack" + - "--collector.cpu" + - "--collector.cpufreq" + - "--collector.diskstats" + - "--collector.dmi" + - "--collector.edac" + - "--collector.entropy" + - "--collector.fibrechannel" + - "--collector.filefd" + - "--collector.filesystem" + - "--collector.hwmon" + - "--collector.infiniband" + - "--collector.ipvs" + - "--collector.loadavg" + - "--collector.mdadm" + - "--collector.meminfo" + - "--collector.netclass" + - "--collector.netdev" + - "--collector.netstat" + - "--collector.nfs" + - "--collector.nfsd" + - "--collector.nvme" + - "--collector.os" + - "--collector.powersupplyclass" + - "--collector.pressure" + - "--collector.rapl" + - "--collector.schedstat" + - "--collector.selinux" + - "--collector.sockstat" + - "--collector.softnet" + - "--collector.stat" + - "--collector.tapestats" + - "--collector.textfile" + - "--collector.thermal_zone" + - "--collector.time" + - "--collector.timex" + - "--collector.udp_queues" + - "--collector.uname" + - "--collector.vmstat" + - "--collector.xfs" + - "--collector.zfs" + - "--collector.buddyinfo" + - "--collector.cgroups" + - "--collector.drbd" + - "--collector.ethtool" + - "--collector.interrupts" + - "--collector.ksmd" + - "--collector.lnstat" + - "--collector.logind" + - "--collector.meminfo_numa" + - "--collector.mountstats" + - "--collector.network_route" + - "--collector.perf" + - "--collector.processes" + - "--collector.qdisc" + - "--collector.sysctl" + - "--collector.systemd" + - "--collector.tcpstat" + - "--collector.wifi" + - "--collector.zoneinfo" + - "--path.rootfs=/host" + - "--path.procfs=/host/proc" + - "--path.sysfs=/host/sys" + - "--collector.filesystem.mount-points-exclude='^(/rootfs|/host|)/(sys|proc|dev|host|etc)($$|/)'" + - "--collector.filesystem.fs-types-exclude='^(sys|proc|auto|cgroup|devpts|ns|au|fuse\\\\.lxc|mqueue)(fs|)$$'" + - "--collector.netdev.device-exclude='^(lo|veth.*)$'" + - "--collector.ethtool.device-include='^(eth*|ens*)$'" + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:9100/ || exit 1' + ressources: + cpu: "2.0" + memory: 2G + volumes: + - { local: '/', container: '/rootfs', mode: 'ro' } + - { local: '/sys', container: '/host/sys', mode: 'ro' } + - { local: '/proc', container: '/host/proc', mode: 'ro' } + - { local: '/run/udev/data', container: '/run/udev/data', mode: 'ro' } + - { local: '/var/run/dbus/system_bus_socket', container: '/var/run/dbus/system_bus_socket', mode: 'ro' } + - { local: '/etc/service', container: '/etc/service', mode: 'ro' } diff --git a/roles/stacks/composes/inventory/ntfy.yml b/roles/stacks/composes/inventory/ntfy.yml new file mode 100644 index 0000000..fd552c8 --- /dev/null +++ b/roles/stacks/composes/inventory/ntfy.yml @@ -0,0 +1,39 @@ +# 2023-09-25 +# Stack: ntfy +--- + +ntfy: + name: "ntfy" + tasks: + - ntfy.yml + ipv6: true + traefik: true + + directories: + - "{{ stack_folder_conf }}/ntfy/conf" + - "{{ stack_folder_datas }}/ntfy/datas" + + services: + + - name: "ntfy" + image: "binwiederhier/ntfy:latest" + restart: "always" + ports: + - { exposed: "${VM_PORT_NTFY}", container: "80" } + - { exposed: "${VM_PORT_NTFY_METRICS}", container: "9090" } + commands: + - serve + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:80/ || exit 1' + ressources: + memory: 1G + volumes: + - { local: './{{ stack_folder_conf }}/ntfy/conf', container: '/etc/ntfy', mode: 'ro' } + - { local: './{{ stack_folder_datas }}/ntfy/datas', container: '/var/cache/ntfy', mode: 'rw' } + traefik: + routers: + - { + name: "ntfy", + rule: "Host(`{{ vm_subdomain_ntfy }}.{{ vm_internet_domain }}`)", + middlewares: "default@file" + } + services: [] diff --git a/roles/stacks/composes/inventory/portainer-agent.yml b/roles/stacks/composes/inventory/portainer-agent.yml new file mode 100644 index 0000000..cec4ad5 --- /dev/null +++ b/roles/stacks/composes/inventory/portainer-agent.yml @@ -0,0 +1,26 @@ +# 2023-09-25 +# Stack: portainer_agent +--- + +portainer_agent: + name: "portainer-agent" + ipv6: true + + directories: [] + + services: + + - name: "portainer-agent" + image: "portainer/agent:alpine" + uid: "0" + gid: "0" + privileged: true + restart: "always" + ports: + - { exposed: "${VM_PORTAINER_AGENT}", container: "9001" } + healthcheck: './agent --help || exit 1' + ressources: + memory: 512M + volumes: + - { local: '/var/run/docker.sock', container: '/var/run/docker.sock', mode: 'rw' } + - { local: '/var/lib/docker/volumes/', container: '/var/lib/docker/volumes/', mode: 'rw' } diff --git a/roles/stacks/composes/inventory/portainer.yml b/roles/stacks/composes/inventory/portainer.yml new file mode 100644 index 0000000..2ab2daf --- /dev/null +++ b/roles/stacks/composes/inventory/portainer.yml @@ -0,0 +1,30 @@ +# 2023-09-25 +# Stack: portainer +--- + +portainer: + name: "portainer" + ipv6: true + dockerproxy: true + + directories: + - "{{ stack_folder_datas }}/portainer/datas" + + services: + + - name: "portainer" + image: "portainer/portainer-ee:alpine" + uid: "0" + gid: "0" + privileged: true + restart: "always" + ports: + - { exposed: "${VM_PORTAINER_HTTP}", container: "9000" } + - { exposed: "${VM_PORTAINER_HTTPS}", container: "9443" } + - { exposed: "${VM_PORTAINER_TCP}", container: "8000" } + command: "-H tcp://${VM_HOST}:${VM_PORT_DOCKERPROXY}" + healthcheck: 'wget --no-verbose --tries=1 --spider http://0.0.0.0:9000 || exit 1' + ressources: + memory: 512M + volumes: + - { local: './{{ stack_folder_datas }}/portainer/datas', container: '/data', mode: 'rw' } diff --git a/roles/stacks/composes/inventory/promtail.yml b/roles/stacks/composes/inventory/promtail.yml new file mode 100644 index 0000000..37d005e --- /dev/null +++ b/roles/stacks/composes/inventory/promtail.yml @@ -0,0 +1,42 @@ +# 2023-09-25 +# Stack: promtail +--- + +promtail: + name: "promtail" + tasks: + - promtail.yml + ipv6: true + + directories: + - "{{ stack_folder_conf }}/promtail/conf" + - "{{ stack_folder_datas }}/promtail/datas" + + services: + + - name: "promtail" + image: "grafana/promtail:latest" + uid: "0" + gid: "0" + privileged: true + capabilities: + - DAC_OVERRIDE + restart: "always" + ports: + - { exposed: "${VM_PORT_PROMTAIL}", container: "1514" } + commands: + - "-config.expand-env=true" + - "-config.file=/etc/promtail/promtail.yml" + healthcheck: 'promtail -version || exit 1' + environment: + - { name: "VM_NAME", value: "${VM_NAME}" } + - { name: "MASTER_HOST", value: "${MASTER_HOST}" } + - { name: "VM_PORT_LOKI", value: "${VM_PORT_LOKI}" } + ressources: + cpus: "2.0" + memory: 1G + tmpfs: 512M + volumes: + - { local: './{{ stack_folder_conf }}/promtail/conf', container: '/etc/promtail', mode: 'ro' } + - { local: './{{ stack_folder_datas }}/promtail/datas', container: '/datas', mode: 'rw' } + - { local: '/var/log', container: '/var/log', mode: 'ro' } diff --git a/roles/stacks/composes/inventory/registry.yml b/roles/stacks/composes/inventory/registry.yml new file mode 100644 index 0000000..a6f2f4b --- /dev/null +++ b/roles/stacks/composes/inventory/registry.yml @@ -0,0 +1,42 @@ +# 2023-09-25 +# Stack: registry +--- + +registry: + name: "registry" + tasks: + - registry.yml + ipv6: true + traefik: true + + directories: + - "{{ stack_folder_conf }}/registry/conf" + - "{{ stack_folder_datas }}/registry/datas" + + services: + + - name: "registry" + image: "registry:latest" + restart: "always" + ports: + - { exposed: "${VM_PORT_REGISTRY}", container: "5443" } + healthcheck: 'wget --no-verbose --tries=1 --spider --no-check-certificat https://0.0.0.0:5443/ || exit 1' + environment: + - { name: "REGISTRY_HTTP_ADDR", value: "0.0.0.0:5443" } + - { name: "REGISTRY_HTTP_TLS_CERTIFICATE", value: "{{ tls_certificate_path }}" } + - { name: "REGISTRY_HTTP_TLS_KEY", value: "{{ tls_private_key_path }}" } + ressources: + memory: 1G + volumes: + - { local: './{{ stack_folder_conf }}/registry/conf/config.yml', container: '/etc/docker/registry/config.yml', mode: 'ro' } + - { local: './{{ stack_folder_datas }}/registry/datas', container: '/var/lib/registry', mode: 'rw' } + traefik: + routers: + - { + name: "registry", + rule: "Host(`{{ vm_subdomain_registry }}.{{ vm_internet_domain }}`)", + middlewares: "nowaf@file", + service: "registry@docker" + } + services: + - { name: "registry", port: "5443", scheme: "https" } diff --git a/roles/stacks/composes/inventory/watchtower.yml b/roles/stacks/composes/inventory/watchtower.yml new file mode 100644 index 0000000..b7d8961 --- /dev/null +++ b/roles/stacks/composes/inventory/watchtower.yml @@ -0,0 +1,39 @@ +# 2023-09-25 +# Stack: stacks +--- + +watchtower: + name: "watchtower" + ipv6: true + + directories: [] + + services: + + - name: "watchtower" + image: "registry.zogg.fr/zogg/watchtower:latest" + uid: "0" + gid: "0" + privileged: true + restart: "always" + ports: + - { exposed: "${VM_PORT_WATCHTOWER}", container: "8080" } + healthcheck: '/healthcheck || exit 1' + environment: + - { name: "#WATCHTOWER_POLL_INTERVAL", value: "900" } + - { name: "WATCHTOWER_SCHEDULE", value: "0 0 2 * * *" } + - { name: "WATCHTOWER_NO_STARTUP_MESSAGE", value: "true" } + - { name: "WATCHTOWER_LABEL_ENABLE", value: "true" } + - { name: "WATCHTOWER_CLEANUP", value: "true" } + - { name: "WATCHTOWER_INCLUDE_STOPPED", value: "true" } + - { name: "WATCHTOWER_HTTP_API_METRICS", value: "true" } + - { name: "WATCHTOWER_HTTP_API_TOKEN", value: "{{ vm_watchtower_apitoken }}" } + - { name: "WATCHTOWER_NOTIFICATIONS", value: "shoutrrr" } + - { name: "WATCHTOWER_NOTIFICATION_URL", value: "{{ vm_notification_webhook }}/watchtower" } + - { name: "WATCHTOWER_NOTIFICATION_TEMPLATE", value: !unsafe "{{range .}}{{.Message}}{{println}}{{end}}" } + - { name: "WATCHTOWER_NOTIFICATIONS_LEVEL", value: "info" } + - { name: "WATCHTOWER_WARN_ON_HEAD_FAILURE", value: "never" } + - { name: "WATCHTOWER_NOTIFICATION_TITLE_TAG", value: "${WATCHTOWER_NOTIFICATION_TITLE_TAG}" } + - { name: "WATCHTOWER_NOTIFICATIONS_HOSTNAME", value: "${WATCHTOWER_NOTIFICATIONS_HOSTNAME}" } + ressources: + memory: "1G" diff --git a/roles/stacks/composes/tasks/adguardhome.yml b/roles/stacks/composes/tasks/adguardhome.yml new file mode 100644 index 0000000..35e9283 --- /dev/null +++ b/roles/stacks/composes/tasks/adguardhome.yml @@ -0,0 +1,18 @@ +# 2023-09-25 +# Subtasks: adguardhome +--- + +- ansible.builtin.include_vars: ../vars/vault/adguardhome.yml +- ansible.builtin.include_vars: ../vars/vault/ssl.yml +- ansible.builtin.include_vars: ../vars/adguardhome.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/aptcacherng.yml b/roles/stacks/composes/tasks/aptcacherng.yml new file mode 100644 index 0000000..b16cbd5 --- /dev/null +++ b/roles/stacks/composes/tasks/aptcacherng.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: aptcacherng +--- + +- ansible.builtin.include_vars: ../vars/aptcacherng.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/common.yml b/roles/stacks/composes/tasks/common.yml new file mode 100644 index 0000000..a34e2cf --- /dev/null +++ b/roles/stacks/composes/tasks/common.yml @@ -0,0 +1,69 @@ +# 2023-09-25 +# Subtasks: common +--- + +- name: "[{{ stack_name }}]: Copy configurations" + ansible.builtin.copy: + backup: true + src: "{{ local_folder_conf }}" + dest: "{{ folder_remote_conf }}" + owner: "{{ puid }}" + group: "{{ guid }}" + mode: u=rw,g=r,o=r + when: stack_switch_conf |default(false)|bool == true + tags: + - stasks + - task + - conf + - copy + +- name: "[{{ stack_name }}]: Copy datas" + ansible.builtin.copy: + backup: true + src: "{{ local_folder_datas }}" + dest: "{{ folder_remote_datas }}" + owner: "{{ puid }}" + group: "{{ guid }}" + mode: u=rw,g=r,o=r + when: stack_switch_datas |default(false)|bool == true + tags: + - stasks + - task + - datas + - copy + +- name: "[{{ stack_name }}]: Copy secrets" + ansible.builtin.copy: + backup: true + src: "{{ local_folder_secrets }}" + dest: "{{ folder_remote_secrets }}" + owner: "{{ puid }}" + group: "{{ guid }}" + mode: u=rw,g=r,o=r + when: stack_switch_secrets |default(false)|bool == true + tags: + - stasks + - task + - secrets + - copy + +- name: "[{{ stack_name }}]: Process templates" + ansible.builtin.template: + lstrip_blocks: true + trim_blocks: true + backup: yes + src: "{{ templates.local }}" + dest: "{{ templates.remote }}" + owner: "{{ puid }}" + group: "{{ guid }}" + mode: u=rw,g=r,o=r + with_items: + - "{{ stack_templates }}" + loop_control: + loop_var: templates + when: stack_switch_templates |default(false)|bool == true + tags: + - stasks + - task + - templates + - process diff --git a/roles/stacks/composes/tasks/dl.yml b/roles/stacks/composes/tasks/dl.yml new file mode 100644 index 0000000..4a85f67 --- /dev/null +++ b/roles/stacks/composes/tasks/dl.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: dl +--- + +- ansible.builtin.include_vars: ../vars/dl.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/flame.yml b/roles/stacks/composes/tasks/flame.yml new file mode 100644 index 0000000..e8358fe --- /dev/null +++ b/roles/stacks/composes/tasks/flame.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: flame +--- + +- ansible.builtin.include_vars: ../vars/flame.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/hastebin.yml b/roles/stacks/composes/tasks/hastebin.yml new file mode 100644 index 0000000..41f03bb --- /dev/null +++ b/roles/stacks/composes/tasks/hastebin.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: hastebin +--- + +- ansible.builtin.include_vars: ../vars/hastebin.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/homepage.yml b/roles/stacks/composes/tasks/homepage.yml new file mode 100644 index 0000000..fdcb2b0 --- /dev/null +++ b/roles/stacks/composes/tasks/homepage.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: homepage +--- + +- ansible.builtin.include_vars: ../vars/homepage.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/ipfs.yml b/roles/stacks/composes/tasks/ipfs.yml new file mode 100644 index 0000000..b997066 --- /dev/null +++ b/roles/stacks/composes/tasks/ipfs.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: ipfs +--- + +- ansible.builtin.include_vars: ../vars/ipfs.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/itzg.yml b/roles/stacks/composes/tasks/itzg.yml new file mode 100644 index 0000000..dab5ad0 --- /dev/null +++ b/roles/stacks/composes/tasks/itzg.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: itzg +--- + +- ansible.builtin.include_vars: ../vars/itzg.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/jekyll.yml b/roles/stacks/composes/tasks/jekyll.yml new file mode 100644 index 0000000..5415440 --- /dev/null +++ b/roles/stacks/composes/tasks/jekyll.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: jekyll +--- + +- ansible.builtin.include_vars: ../vars/jekyll.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/ntfy.yml b/roles/stacks/composes/tasks/ntfy.yml new file mode 100644 index 0000000..6527888 --- /dev/null +++ b/roles/stacks/composes/tasks/ntfy.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: ntfy +--- + +- ansible.builtin.include_vars: ../vars/ntfy.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/promtail.yml b/roles/stacks/composes/tasks/promtail.yml new file mode 100644 index 0000000..521f19f --- /dev/null +++ b/roles/stacks/composes/tasks/promtail.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Subtasks: promtail +--- + +- ansible.builtin.include_vars: ../vars/promtail.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/tasks/registry.yml b/roles/stacks/composes/tasks/registry.yml new file mode 100644 index 0000000..6fc25bf --- /dev/null +++ b/roles/stacks/composes/tasks/registry.yml @@ -0,0 +1,18 @@ +# 2023-09-25 +# Subtasks: registry +--- + +- ansible.builtin.include_vars: ../vars/vault/registry.yml +- ansible.builtin.include_vars: ../vars/vault/ssl.yml +- ansible.builtin.include_vars: ../vars/registry.yml +- ansible.builtin.include_vars: ../vars/common.yml + +- name: "[{{ stack_name }}]: Execute stack common tasks" + ansible.builtin.include_tasks: + file: "common.yml" + when: + - stack_enable + tags: + - stacks + - task + - execute diff --git a/roles/stacks/composes/vars/adguardhome.yml b/roles/stacks/composes/vars/adguardhome.yml new file mode 100644 index 0000000..0174203 --- /dev/null +++ b/roles/stacks/composes/vars/adguardhome.yml @@ -0,0 +1,19 @@ +# 2023-09-25 +# Subvars: adguardhome +--- + +stack_name: "adguardhome" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: true + + + +adguardhome_template_conf_yaml: "{{ local_folder_templates }}/adguardhome/{{ stack_folder_templates }}/adguardhome/adguardhome_yaml.j2" +adguardhome_container_conf_yaml: "{{ folder_remote_conf }}/adguardhome/conf/AdGuardHome.yaml" + +stack_templates: + - { local: "{{ adguardhome_template_conf_yaml }}", remote: "{{ adguardhome_container_conf_yaml }}" } diff --git a/roles/stacks/composes/vars/aptcacherng.yml b/roles/stacks/composes/vars/aptcacherng.yml new file mode 100644 index 0000000..770c71a --- /dev/null +++ b/roles/stacks/composes/vars/aptcacherng.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Subvars: aptcacherng +--- + +stack_name: "aptcacherng" +stack_enable: true + +stack_switch_conf: true +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: false diff --git a/roles/stacks/composes/vars/common.yml b/roles/stacks/composes/vars/common.yml new file mode 100644 index 0000000..eed4cd6 --- /dev/null +++ b/roles/stacks/composes/vars/common.yml @@ -0,0 +1,26 @@ +# 2023-09-25 +# Subvars: common +--- + +stack_folder_local_files: "../files" + +stack_folder_conf: "conf" +stack_folder_datas: "datas" +stack_folder_secrets: "secrets" +stack_folder_templates: "templates" + +puid: "{{ vm_puid }}" +guid: "{{ vm_pgid }}" + +folder_remote_root: "{{ vm_docker_root }}/{{ stack_name }}" + +local_folder_conf: "{{ stack_folder_local_files }}/{{ stack_name }}/{{ stack_folder_conf }}/" +folder_remote_conf: "{{ folder_remote_root }}/{{ stack_folder_conf }}" + +local_folder_datas: "{{ stack_folder_local_files }}/{{ stack_name }}/{{ stack_folder_datas }}/" +folder_remote_datas: "{{ folder_remote_root }}/{{ stack_folder_datas }}" + +local_folder_secrets: "{{ stack_folder_local_files }}/{{ stack_name }}/{{ stack_folder_secrets }}/." +folder_remote_secrets: "{{ folder_remote_root }}/{{ stack_folder_secrets }}" + +local_folder_templates: "{{ stack_folder_local_files }}/{{ stack_name }}/{{ stack_folder_templates }}" diff --git a/roles/stacks/composes/vars/dl.yml b/roles/stacks/composes/vars/dl.yml new file mode 100644 index 0000000..d960f90 --- /dev/null +++ b/roles/stacks/composes/vars/dl.yml @@ -0,0 +1,19 @@ +# 2023-09-25 +# Subvars: dl +--- + +stack_name: "dl" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: true +stack_switch_secrets: false +stack_switch_templates: true + + + +dl_template_conf_nginx: "{{ local_folder_templates }}/dl-nginx/{{ stack_folder_templates }}/dl-nginx/default_conf.j2" +dl_container_conf_nginx: "{{ folder_remote_conf }}/dl-nginx/conf/default.conf" + +stack_templates: + - { local: "{{ dl_template_conf_nginx }}", remote: "{{ dl_container_conf_nginx }}" } diff --git a/roles/stacks/composes/vars/drawio.yml b/roles/stacks/composes/vars/drawio.yml new file mode 100644 index 0000000..d930546 --- /dev/null +++ b/roles/stacks/composes/vars/drawio.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Subvars: drawio +--- + +stack_name: "drawio" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: false diff --git a/roles/stacks/composes/vars/flame.yml b/roles/stacks/composes/vars/flame.yml new file mode 100644 index 0000000..45737af --- /dev/null +++ b/roles/stacks/composes/vars/flame.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Subvars: flame +--- + +stack_name: "flame" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: true +stack_switch_templates: false diff --git a/roles/stacks/composes/vars/hastebin.yml b/roles/stacks/composes/vars/hastebin.yml new file mode 100644 index 0000000..26222db --- /dev/null +++ b/roles/stacks/composes/vars/hastebin.yml @@ -0,0 +1,19 @@ +# 2023-09-25 +# Subvars: hastebin +--- + +stack_name: "hastebin" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: true + + + +hastebin_template_config_js: "{{ local_folder_templates }}/hastebin/{{ stack_folder_templates }}/hastebin/config_js.j2" +hastebin_container_config_js: "{{ folder_remote_conf }}/hastebin/conf/config.js" + +stack_templates: + - { local: "{{ hastebin_template_config_js }}", remote: "{{ hastebin_container_config_js }}" } diff --git a/roles/stacks/composes/vars/homepage.yml b/roles/stacks/composes/vars/homepage.yml new file mode 100644 index 0000000..64f799d --- /dev/null +++ b/roles/stacks/composes/vars/homepage.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Subvars: homepage +--- + +stack_name: "homepage" +stack_enable: true + +stack_switch_conf: true +stack_switch_datas: true +stack_switch_secrets: false +stack_switch_templates: false diff --git a/roles/stacks/composes/vars/ipfs.yml b/roles/stacks/composes/vars/ipfs.yml new file mode 100644 index 0000000..f4ee87a --- /dev/null +++ b/roles/stacks/composes/vars/ipfs.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Subvars: ipfs +--- + +stack_name: "ipfs" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: false diff --git a/roles/stacks/composes/vars/itzg.yml b/roles/stacks/composes/vars/itzg.yml new file mode 100644 index 0000000..cc331c1 --- /dev/null +++ b/roles/stacks/composes/vars/itzg.yml @@ -0,0 +1,35 @@ +# 2023-09-25 +# Subvars: itzg +--- + +stack_name: "itzg" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: true + + + +itzg_template_serverproperties: "{{ local_folder_templates }}/itzg/{{ stack_folder_templates }}/itzg/server_properties.j2" +itzg_container_serverproperties: "{{ folder_remote_datas }}/itzg/datas/server.properties" + +stack_templates: + - { local: "{{ itzg_template_serverproperties }}", remote: "{{ itzg_container_serverproperties }}" } + +itzg_levelseed: "2814749789107050" +itzg_motd: "Beautifull Sakura and Village" +itzg_serverport: 25565 +itzg_queryport: 25565 +itzg_rconport: 25566 + +itzg_difficulty: normal +itzg_maxplayers: 4 +itzg_gamemode: "survival" +itzg_rconpassword: "" +itzg_onlinemode: true +itzg_syncchunkwrites: false +itzg_maxticktime: -1 +itzg_simulationdistance: 12 +itzg_viewdistance: 16 diff --git a/roles/stacks/composes/vars/jekyll.yml b/roles/stacks/composes/vars/jekyll.yml new file mode 100644 index 0000000..5e555a0 --- /dev/null +++ b/roles/stacks/composes/vars/jekyll.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Subvars: jekyll +--- + +stack_name: "jekyll" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: true +stack_switch_secrets: false +stack_switch_templates: false diff --git a/roles/stacks/composes/vars/ntfy.yml b/roles/stacks/composes/vars/ntfy.yml new file mode 100644 index 0000000..ee522c6 --- /dev/null +++ b/roles/stacks/composes/vars/ntfy.yml @@ -0,0 +1,19 @@ +# 2023-09-25 +# Subvars: ntfy +--- + +stack_name: "ntfy" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: true + + + +ntfy_template_server_yaml: "{{ local_folder_templates }}/ntfy/{{ stack_folder_templates }}/ntfy/server_yml.j2" +ntfy_container_server_yaml: "{{ folder_remote_conf }}/ntfy/conf/server.yaml" + +stack_templates: + - { local: "{{ ntfy_template_server_yaml }}", remote: "{{ ntfy_container_server_yaml }}" } diff --git a/roles/stacks/composes/vars/portainer-agent.yml b/roles/stacks/composes/vars/portainer-agent.yml new file mode 100644 index 0000000..5be2320 --- /dev/null +++ b/roles/stacks/composes/vars/portainer-agent.yml @@ -0,0 +1,11 @@ +# 2023-09-25 +# Subvars: portainer-agent +--- + +stack_name: "portainer-agent" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: false diff --git a/roles/stacks/composes/vars/promtail.yml b/roles/stacks/composes/vars/promtail.yml new file mode 100644 index 0000000..1dcb087 --- /dev/null +++ b/roles/stacks/composes/vars/promtail.yml @@ -0,0 +1,19 @@ +# 2023-09-25 +# Subvars: promtail +--- + +stack_name: "promtail" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: true + + + +promtail_template_conf_yaml: "{{ local_folder_templates }}/promtail/{{ stack_folder_templates }}/promtail/promtail_yml.j2" +promtail_container_conf_yaml: "{{ folder_remote_conf }}/promtail/conf/promtail.yaml" + +stack_templates: + - { local: "{{ promtail_template_conf_yaml }}", remote: "{{ promtail_container_conf_yaml }}" } diff --git a/roles/stacks/composes/vars/registry.yml b/roles/stacks/composes/vars/registry.yml new file mode 100644 index 0000000..0dbeac5 --- /dev/null +++ b/roles/stacks/composes/vars/registry.yml @@ -0,0 +1,19 @@ +# 2023-09-25 +# Subvars: registry +--- + +stack_name: "registry" +stack_enable: true + +stack_switch_conf: false +stack_switch_datas: false +stack_switch_secrets: false +stack_switch_templates: true + + + +registry_template_conf_yaml: "{{ local_folder_templates }}/registry/{{ stack_folder_templates }}/registry/config_yml.j2" +registry_container_conf_yaml: "{{ folder_remote_conf }}/registry/conf/config.yaml" + +stack_templates: + - { local: "{{ registry_template_conf_yaml }}", remote: "{{ registry_container_conf_yaml }}" } diff --git a/roles/stacks/composes/vars/vault/adguardhome.yml b/roles/stacks/composes/vars/vault/adguardhome.yml new file mode 100644 index 0000000..de986cf --- /dev/null +++ b/roles/stacks/composes/vars/vault/adguardhome.yml @@ -0,0 +1,150 @@ +$ANSIBLE_VAULT;1.1;AES256 +66303734646165663433656262336531623930303232643066313634646236376338353035613165 +6463393534386562613261333365636236363830613632320a343137343736353535656636656363 +33363836663439643631653861643530613939323561656164656161303335376565346238383362 +3736346663353965660a633936303630363731303164633864376437623837333562366635306131 +31613732616530383230356135313739613863646464643164376137303435303139353339383038 +31303433346162386466663236666164313336383332626230373234333663656438323062643563 +65313835646634373831613133643238353435343430343266663639393832353861643735383830 +37656135343731643538616633633231303035333635396562363364653033393061396537386335 +61336561343532656161323432353535303062333235623461653563383565633566396235376165 +32363037626232656164343061366330616331383764643133386237333765633734396261353739 +31663030616366353633643133333561316636373664336238343563303039333935633630333730 +39383238393365646631303430316661633062656665656538343934323731323830373762623332 +32363632333164633634353830343666313530623237653737643061373239336162633463316664 +62666531363630323639303838623161303332346334666137613932343137306361333062336634 +32376236306439663132316333613631343639303865666463313662633931396466613363306634 +66386663663362653335633434323233666564663364316534336231303037323365336366326331 +31316637376130326332336339383632323730323066663434326230356634353663633764303231 +34393033343938643731343134393735666161363535626664323837656138656434636136616236 +31646234666333373465653636303964656531333038646437303136366532313762393433643364 +61323138616162353833326165353731356436346331363037616535663939323036306232666665 +36316138393936353963363564646234643363653366333864343564376136353062366666653038 +31396232636163663665343039323366356537326139323365623739306634633762616539666361 +39666130656337336562326435323335363861643732373961386237626263313565616565313638 +35306335396163353932643636623730646233373461313261633639653333306365643065343531 +38623137303132306462316564316261323163386662376161363262373665633862303837306138 +34353538626135613430383839653963626239376432613638336166383462333538376638316234 +32336237633231363237653438363163343161633330383932366133366565313265646139333561 +37653761383535323935323638303639616464333534636139353865616131623861643363653764 +66303962303561306261343263396237306163633233383034613536653537313338303130636535 +39363966613936383466333937646339356432303965333136636332623139303164613635343636 +62363333663034353630323433393165633164306532303433353363343061626139303863316661 +35356661303539363061653030653334646362633963643433343431396539653362313738643837 +38303438346366303836326237626132393832306563366539383631346137393466623462636338 +31633534336531306564653139646333313166663961376138656637613630373936646362333837 +61623365373861333034383263336233383462353463386536326339396330363232626436623566 +62616631306434383534333332646638333632666238613038643335636330663130353830636339 +65313365373131393563336666363161323163376637663462346237636562633432363639653065 +38666364323561626335393463646239313733353035303133396461626462656363306331353966 +39383463633234353534636537396364356136333261663865373861393237323930343066343732 +30656264323133343762623331653034313562343464623436376339646631626639636633303437 +64363830643263363135363937636463316562633362653631343539313439363937383132306266 +39643335636338653837373430623463316539396439343138663230386563616566316531656264 +35393137663136333831326436643134333737396433633939636565373364316135353739343936 +30313631633233333261656266386264356233356435386439356463396262646461656262383034 +39303234643763386438616430653164353564303930646239396663323232323733393237336565 +34613832376438356661346231353830393962313437336239386131353061616535353638333537 +31376261333435373737633330626437623063306536306131313530366631343163306136616266 +63633432303036366335643735323236626263373432386462326665356562616239346166343237 +61616434366265623261363734306237636636363366356663343663363066633534633938646561 +37396166626630383537333231306134613339383439643766663631323737353236303765353766 +63306237373536666162343039663965333435396538653364346632613264383036623532326462 +34393963323535616563663434373461636233376437653134626262653363323363323531363261 +33356666373330303333393738656439373632396531373131653466333935666266666266636332 +33646136636135303038333961336637323639393664303634346266386539346238373032353663 +62303962393035383234363832306665663462313664623265313434373939646561343066343535 +65663937633439633237613363663666373932363334646266613935636336353463353635643064 +66323232666131366238356638326130633930613233303036396537333636373131393561636639 +38376634363466363631646132323234646236343432636432613639303265623330623530613462 +62396431386537333665653462383262393630363962383966623930393364363139353031656635 +64323161303262666432343438336436353037396461396432303364663163353430336634623364 +34313566636133376565343562373162393738653164626430356630633233343932306339386366 +37323630666437623561363930316637346537383264643764313165666662663336376261616635 +37393537306261643463313137373435353033323735646630363032353934396363623466396538 +65353465333839633431366534613239623863303736396461343330303936633937643235626531 +36336536653736336362323530376335646630323935313764663735626163663462376663623866 +65376666623237383464666164376436646639353638656432343666396232613565643438386539 +35383463383065383361613235666133336132336265313565383733313539313966376532643131 +32373662316166383938613737613634373631326165333937396365646337623362623334653439 +63353465373036333962636561643462316233366635363332616365643434323263313439363134 +61633231343336376536373262653339323930316637306666376235383064336631326235353161 +37333362356137333030623662303035373438623731316233656662386365323836633565373538 +66356538326332643761633432623966393136366131366535373237366131356466313434303530 +65386536356334656366653966353761363431376334343065616364613230346463373364616661 +35613863636431326366663834396239656362313339393431646564393762393237383861626564 +35306265366264303466666362613736356562323138336438333533363465353736623961363432 +66626239393961383431393133393836323863323862313330633366386163303162636266353839 +30613961346566633138393762373638396136346265303437666632346531633935333034313036 +64366335616138373562643030316534363835363361633736383534393231336639353331646231 +64323165316330343236363433666237396262303431353761643135393061633736313133396162 +39653065323864333261643261343164393962363534643862386462323935323761646535333466 +34333765306363353039343132613736383266316331373535396439623831376432326233303065 +61316330363963373031393736323930623432333665343530393362303537656536666633353965 +30613639656639626664646166333735306663333566363032663431663135356536383563663133 +36326366633562343735613162663131643461346264303865373039633537373136316164323866 +63323932646237663034336237653432316562396433303162306663653863393930316637616463 +32653063356437323263316336663937383337323964623232653361316565623636636434653861 +63333661326131643562303939363337386464386462646364316536623538386462356338323264 +30646561343032663039656336393832663738633539313161363338393732623565373638353032 +39396335316331316130396131326164396438323030306135666335616465333835346161383232 +35353933626439306165633036363033363939616535323462613933613638653134366431393334 +30626538663138313365363038323434613564323461616665313261653463613363346564623635 +36356362363863633666323030653766316437656361343436306339363765346564616637356231 +36636130643862346132663461343437363365373461613431393333643039666563373032313536 +31326432343735363732666538323061623863623532323130656136613263633365383537373865 +61333165623934386236353933626533643136313234633337343463623134656661373437373266 +33306662626130343366323561336135376161656434646439373434363130306163656436393930 +61343830656136646537356239323533353561326134666330316535313438303533316166353161 +34333139363236303233313561653862383933633932363732393335373833613261356466623139 +37313536363230656532363338303539386566653863323932613235643532663538303131633830 +38666161326631393762353430313337306661373837303134643832376631356339373633656333 +65363266363234393530666566386664656331373634326432396336356261316163626263353036 +33613733383565346135393431376333643962393934313135393836346264643833663435313936 +30663537366663306437636338343537353262376339666463323534376233626637356331313438 +35623565656139383331636635653265393734346138646238653566306336653762653761383634 +39313431343964303738666139363764663135363531353630646237666232633166353666646637 +61356530386631343133386432646464666339316630366365623038623234396263366437343131 +38346565323434336533313461383532396663393261313331383963303536323963366234303832 +65656465366463396564303436663030366232633239313038633936643563646237363934386134 +63303732333462356237366337646438326234366262373538396532353436333938343661343635 +32646239356536326337656531623334623763343165636665336362623561393332663232336238 +37326366386138326131666633653435383565376138613033613961386632316438316634643363 +35363364396637346333663665326339396134383333333861366531663336666532376236623738 +66666438376436366230623834663439373831613935363065343633633835316162356438313663 +30326437636237643862633830313365373733623463303166323537306430353363623430346463 +33623532363331396663643135633761656230303563656634646634633139336130323331396264 +34323730636334396633613962346666326531656366656635623635346635396432643235636332 +62613364346436306135326334626131626161666436646662363364633931386536353332643933 +33393436356664613133626230303766396265623861313632326530663133616564383039323231 +38646266386465356333626235653364656131316364326161316135363561623030333530646230 +38346662636430663365343265383839363933326136633538346366393662363462633766363939 +62356236376332656633613636663366646430353035333863383634336234373163373634386631 +63613538313266306334366362336439363632616663626432653138646166663034393364376265 +30356166646661633733333734366632343133613933656564303236323534393232386431333538 +38323565653166376135366161393661336662623738343937653761376464623964326362333737 +63333734333062353433613333393961616535363961653664326462353330643266356230336232 +38313134626632343964623736623038656539356464626664306664616432633062313237613164 +65376235346430643031383532366365343639343531636335333932313630366133613837396138 +30366230626266623862363964346263666137336534613761336631323134633139633363316137 +33323133333738326165633937633066336632303763326331356636343735373133323764366361 +35313539663539383839363034633639383731306266333465366332336164323066343965396362 +32383437363734636332383765393163393366653065316664616366656261326132626234376132 +33353139306538666363393863366662646334303232373938366239333031633638333361343962 +30373033326537346231656539616630316166653237316465333337623262646663366132353634 +63613065303030653136383535616461333730353531356266336437653466643361666565323533 +37343433316436393862336532313332316465373932623561633039633332326665333066626664 +35323431393634316635653664366366636362363930363134353366386266653863353535313437 +36316366393661346563353361663836316534383733323139633932346466653333383361396434 +36633937313931643738663237376264353935346332373262626536356433346363643237323832 +36646166323731306138343664656261633234623663386536323738393263386563393535303761 +34363561636137616566633161663464623937343938393564363638316237646238636661636434 +33336166376564376564623462643665613734353534383763333532386165306339333535623463 +30383962623438323333613631613734343336373365383031323435623030333164386635613431 +61373830663866613637303865333361613066303933303030396237326163346435323439373337 +65653265643761393335323964623336303963383936346337653031366132623164333763393537 +31636166633334613336393937343962616432366433343934343336303165633962363136636538 +38353531636335646562313965623431326266353337333464306262383061363336336130663235 +37393139373238363064373965323438326564376265623764353835303632363332323462626635 +62656337636565646536363136366335306363333938646134393366343539323961353839643866 +6439 diff --git a/roles/stacks/composes/vars/vault/registry.yml b/roles/stacks/composes/vars/vault/registry.yml new file mode 100644 index 0000000..b89d8bf --- /dev/null +++ b/roles/stacks/composes/vars/vault/registry.yml @@ -0,0 +1,11 @@ +$ANSIBLE_VAULT;1.1;AES256 +38666637666532366332306637333733343532396366376337313131613533656466323834623861 +6530613632636333663564663437396661303363333261360a383165366637643930666333363037 +38306438643665343964663061376134623032623139623836313939666362636164353437626565 +3063386561316535340a313336363663353066393537663538373466626232653164356264666266 +61666434353636643635613566633832353634323333663561663262666364633565656565336233 +63613335663965636661633936396134393565323062316236646562366165393065343039633235 +36353965363331333764303964373238623563366334666634333966653266613665633936383361 +64666463316135616134376535363164633937633135613231623762623464656566333835396238 +36633064646566613535363337373538323861366165383937376566643762383563363631626231 +3339353335316166333030316238386662343036643138656239 diff --git a/roles/stacks/composes/vars/vault/ssl.yml b/roles/stacks/composes/vars/vault/ssl.yml new file mode 100644 index 0000000..3813a86 --- /dev/null +++ b/roles/stacks/composes/vars/vault/ssl.yml @@ -0,0 +1,14 @@ +$ANSIBLE_VAULT;1.1;AES256 +36623964643264336339323236353033656233636535383931666161303339656434326633376533 +3663343337386233303538663661326162343533323766390a396537333761396535393465303531 +63653161613630356131326338396433333863353632336263613936316333366661316363303662 +6266393763346338380a303165313036643238323733306134623165653437633031306434303933 +30396566313336386135333934613634383964323232326439333930323761623763343233613038 +30643131636434386632646337656663376261366236383837363237363738616236396162313466 +39636130643730313161666366353464643234663032333731613636613833383635353139353232 +38613834663463326361616132396336383235383838393033623539666330643234343838353132 +30313534646135626637333736306462393034353363363464663264636234306532363762336363 +34356231613162613366636230626539326535643163623730393632313833396231643863333135 +62636563613762656136643230643634333037623963393633646331383333623837346233326161 +37316539363830646433396434616434376334376462666332316533653139366533373630663161 +3965 diff --git a/roles/stacks/tasks/main.yml b/roles/stacks/tasks/main.yml new file mode 100644 index 0000000..7329545 --- /dev/null +++ b/roles/stacks/tasks/main.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Tasks: main +--- + +- ansible.builtin.include_vars: main.yml + +# Stack base +- ansible.builtin.include_tasks: stacks.yml + when: + - task_enable_all + - task_enable_stacks + tags: + - tasks + - system + - vm + - stacks diff --git a/roles/stacks/tasks/stacks.yml b/roles/stacks/tasks/stacks.yml new file mode 100644 index 0000000..e31b1ba --- /dev/null +++ b/roles/stacks/tasks/stacks.yml @@ -0,0 +1,165 @@ +# 2023-09-25 +# Tasks: stacks +--- + +- ansible.builtin.include_vars: ../vm/vars/vault/domain.yml +- ansible.builtin.include_vars: ../vm/vars/vault/vm.yml +- ansible.builtin.include_vars: ../vm/vars/vault/ports.yml +- ansible.builtin.include_vars: ../vm/vars/vm.yml +- ansible.builtin.include_vars: composes/vars/vault/ssl.yml +- ansible.builtin.include_vars: stacks.yml + +- name: Preload composes required vars + ansible.builtin.include_vars: + file: ../composes/vars/common.yml + tags: + - stacks + - composes + - import + when: + - ansible_facts['system'] == "Linux" + +- name: Include all .yml stacks definition + ansible.builtin.include_vars: + dir: ../composes/inventory + depth: 1 + extensions: + - "yml" + tags: + - stacks + - composes + - import + when: + - ansible_facts['system'] == "Linux" + +- name: Merging common & vm stacks + ansible.builtin.set_fact: + stacks: "{{ stacks_common + stacks_vm }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - stacks + - composes + - merge + +- name: Create all stacks main directories + ansible.builtin.file: + path: "{{ vm_docker_root }}/{{ item.name }}" + owner: "{{ stack_owner }}" + group: "{{ stack_group }}" + state: directory + mode: u=rwx,g=rx,o=rx + with_items: + - "{{ stacks }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - stacks + - directories + - create + +- name: Create each stack .env symlinks + ansible.builtin.file: + src: "../{{ vm_include_folder }}/{{ vm_template_env_name }}" + dest: "{{ vm_docker_root }}/{{ item.name }}/{{ vm_template_env_name }}" + owner: "{{ stack_owner }}" + group: "{{ stack_group }}" + state: link + mode: u=rw,g=r,o=r + with_items: + - "{{ stacks }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - stacks + - symlinks + - create + +- name: Create directories required by each stack (directories keyword) + ansible.builtin.file: + # item.0.name : folder + # item.1 : stack name + path: "{{ vm_docker_root }}/{{ item.0.name }}/{{ item.1 }}" + owner: "{{ stack_owner }}" + group: "{{ stack_group }}" + state: directory + mode: u=rwx,g=rx,o=rx + with_subelements: + - "{{ stacks | selectattr('directories', 'defined') }}" + - directories + - skip_missing: true + when: + - ansible_facts['system'] == "Linux" + tags: + - stacks + - stack + - directories + - create + +- name: Create each stack docker-compose.yml files + ansible.builtin.template: + lstrip_blocks: true + trim_blocks: true + backup: yes + src: "{{ template_docker_compose }}" + dest: "{{ vm_docker_root }}/{{ item.name }}/{{ template_docker_compose_name }}" + owner: "{{ stack_owner }}" + group: "{{ stack_group }}" + mode: u=rw,g=r,o=r + with_items: + - "{{ stacks }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - stacks + - stack + - symlinks + - create + +- name: Execute stack specific tasks + ansible.builtin.include_tasks: + # item.0.name : stack + # item.1 : task file + file: "{{ stack_specific_task_directory }}/{{ item.1 }}" + apply: + tags: + - stacks + - task + - execute + with_subelements: + - "{{ stacks | selectattr('tasks', 'defined')}}" + - tasks + - skip_missing: true + when: + - ansible_facts['system'] == "Linux" + tags: + - stacks + - stack + - tasks + +- name: Find availables stacks + find: + paths: "{{ vm_docker_root }}" + file_type: directory + recurse: no + excludes: "{{ vm_include_folder }}" + register: folders + +- name: Compute available stacks list + no_log: true + set_fact: + availables: "{{ availables + [item.path |basename]}}" + with_items: "{{ folders.files }}" + +- name: Update available stacks + ansible.builtin.lineinfile: + path: "{{ vm_template_root_vm }}/{{ vm_stack_available }}" + line: "{{ item }}" + with_items: + - "{{ availables |sort }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - stacks + - available + - update diff --git a/roles/stacks/templates/docker_compose.yml.j2 b/roles/stacks/templates/docker_compose.yml.j2 new file mode 100644 index 0000000..b8890f1 --- /dev/null +++ b/roles/stacks/templates/docker_compose.yml.j2 @@ -0,0 +1,266 @@ +{# Updated: 2023-09-25 #} +version: "3.0" + +{% if item.stack is defined %} +# stack: {{ item.stack }} +{% else %} +# stack: {{ item.name }} +{% endif %} +# master: {{ stacks_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} +{# >>> notice #} +{% if item.notice is defined %} + +# Notice: +# +{{ item.notice }} +{% endif %} +{# <<< notice #} + +{# >>> networks #} +networks: +{# >>> stack #} +{% if item.stack is defined %} + {{ item.stack }}: + name: {{ item.stack }} +{% else %} + {{ item.name }}: + name: {{ item.name }} +{% endif %} + driver: bridge +{% if item.ipv6 is defined %} + enable_ipv6: true +{% endif %} +{# <<< stack #} +{# >>> docker socket proxy #} +{% if item.dockerproxy is defined %} + {{ vm_docker_socketproxy_network }}: + external: true +{% endif %} +{# <<< docker socket proxy #} +{# >>> trafik #} +{% if item.traefik is defined %} + {{ vm_docker_traefik_network }}: + external: true +{% endif %} +{# <<< trafik #} +{# <<< networks #} +{# >>> secrets #} +{% if item.secrets is defined %} + +secrets: +{% for service in item.services %} + {% if service.secrets is defined %} + {% for secret in service.secrets %} + {{ secret.name }}: + file: {{ secret.file }} + {% endfor %} + {% endif %} +{% endfor %} +{% endif %} +{# <<< secrets #} +{# >>> services #} + +services: +{% for service in item.services %} + +{# >>> service #} + {{ service.name }}: + extends: + file: ../_vm/{{ service.extends | default('common') }}.yml + service: x-{{ service.extends | default('common') }} +{# >>> user #} +{% if service.uid is defined or service.gid is defined %} + {% if service.uid is defined and service.gid is undefined %} + user: "{{ service.uid }}:" + {% endif %} + {% if service.uid is undefined and service.gid is defined %} + user: ":{{ service.gid }}" + {% endif %} + {% if service.uid is defined and service.gid is defined %} + user: "{{ service.uid }}:{{ service.gid }}" + {% endif %} +{% endif %} +{# <<< user #} +{# >>> privileged #} +{% if service.privileged is defined %} + privileged: true +{% endif %} +{# <<< privileged #} +{# >>> capabilities #} +{% if service.capabilities is defined %} + cap_add: + {% for capability in service.capabilities %} + - {{ capability }} + {% endfor %} +{% endif %} +{# <<< capabilities #} + container_name: "{{ service.name }}" + hostname: "{{ service.name }}" + image: "{{ service.image }}" +{# >>> restart #} +{% if service.restart is defined %} + restart: "{{ service.restart }}" +{% endif %} +{# <<< restart #} +{# >>> depends #} +{% if service.depends is defined %} + depends_on: + {% for depend in service.depends %} + {{ depend.name }}: + condition: {{ depend.condition }} + {% endfor %} +{% endif %} +{# <<< depends #} +{# >>> ports #} +{% if service.ports is defined %} + ports: + {% for port in service.ports %} + {% if port.disabled is defined %} + {% if port.mode is defined %} + #- "{{ port.exposed }}:{{ port.container }}/{{ port.mode }}"{{ port.comments if port.comments is defined }} + {% else %} + #- "{{ port.exposed }}:{{ port.container }}"{{ port.comments if port.comments is defined }} + {% endif %} + {% else %} + {% if port.mode is defined %} + - "{{ port.exposed }}:{{ port.container }}/{{ port.mode }}"{{ port.comments if port.comments is defined }} + {% else %} + - "{{ port.exposed }}:{{ port.container }}"{{ port.comments if port.comments is defined }} + {% endif %} + {% endif %} + {% endfor %} +{% endif %} +{% if service.ports is defined %} + {% set exposed_ports = [] %} + {% for port in service.ports %} + {% do exposed_ports.append(port.container|int) %} + {% endfor %} + expose: + {% for port in exposed_ports|unique|sort %} + - "{{ port }}" + {% endfor %} +{% endif %} +{# <<< ports #} +{# >>> networks #} + networks: +{% if item.stack is defined %} + - {{ item.stack }} +{% else %} + - {{ item.name }} +{% endif %} +{% if item.dockerproxy is defined %} + - {{ vm_docker_socketproxy_network }} +{% endif %} +{% if item.traefik is defined and service.traefik is defined %} + - {{ vm_docker_traefik_network }} +{% endif %} +{# <<< networks #} +{# >>> command #} +{% if service.command is defined %} + command: "{{ service.command }}" +{% else %} + {% if service.commands is defined %} + command: + {% for command in service.commands %} + - "{{ command }}" + {% endfor %} + {% endif %} +{% endif %} +{# <<< command #} +{# >>> healthcheck #} +{% if service.healthcheck is defined %} + healthcheck: + test: {{ service.healthcheck }} +{% endif %} +{# <<< healthcheck #} +{# >>> secrets #} +{% if service.secrets is defined %} + secrets: + {% for secret in service.secrets %} + - {{ secret.name }} + {% endfor %} +{% endif %} +{# <<< secrets #} +{# >>> environments #} +{% if service.environment is defined %} + environment: + {% for environment in service.environment %} + {{ environment.name }}: "{{ environment.value }}" + {% endfor %} +{% endif %} +{# <<< environments #} +{# >>> labels #} + labels: +{% if item.stack is defined %} + com.stack.name: "{{ item.stack }}" +{% else %} + com.stack.name: "{{ item.name }}" +{% endif %} + com.stack.service.name: "{{ service.name }}" +{% if item.traefik is defined and service.traefik is defined %} + traefik.enable: true + {% for router in service.traefik.routers %} + traefik.http.routers.{{ router.name }}.rule: {{ router.rule }} + traefik.http.routers.{{ router.name }}.entrypoints: {{ router.entrypoints | default('https') }} + traefik.http.routers.{{ router.name }}.tls: true + traefik.http.routers.{{ router.name }}.middlewares: "{{ router.middlewares | default('default@file') }}" + {% if router.service is defined %} + traefik.http.routers.{{ router.name }}.service: {{ router.service }} + {% endif %} + {% endfor %} + {% for service in service.traefik.services %} + {% if service.port is defined %} + traefik.http.services.{{ service.name }}.loadbalancer.server.port: {{ service.port }} + {% endif %} + {% if service.scheme is defined %} + traefik.http.services.{{ service.name }}.loadbalancer.server.scheme: {{ service.scheme }} + {% endif %} + {% endfor %} + {% if service.traefik.middlewares is defined %} + {% for middleware in service.traefik.middlewares %} + {% if middleware.content is defined %} + traefik.http.middlewares.{{ middleware.name }}.{{ middleware.content }} + {% endif %} + {% endfor %} + {% endif %} +{% endif %} +{# <<< labels #} +{# >>> tmpfs #} +{% if service.tmpfs is defined %} + tmpfs: + - /tmp:rw,exec,nosuid,size={{ service.tmpfs }} +{% endif %} +{# <<< tmpfs #} +{# >>> ressources #} +{% if service.ressources is defined %} + deploy: + resources: + limits: + {% if service.ressources.cpu is defined %} + cpus: "{{ service.ressources.cpu }}" + {% endif %} + {% if service.ressources.memory is defined %} + memory: "{{ service.ressources.memory }}" + {% endif %} + {% if service.ressources.pid is defined %} + pids: {{ service.ressources.pid }} + {% endif %} +{% endif %} +{# <<< ressources #} +{# >>> volumes #} +{% if service.volumes is defined %} + volumes: + {% for entry in service.volumes %} + {% if entry.mode is defined %} + - {{ entry.local }}:{{ entry.container }}:{{ entry.mode }} + {% else %} + - {{ entry.local }}:{{ entry.container }} + {% endif %} + {% endfor %} +{% endif %} +{# <<< volumes #} +{% endfor %} +{# >>> service #} +{# <<< services #} \ No newline at end of file diff --git a/roles/stacks/vars/main.yml b/roles/stacks/vars/main.yml new file mode 100644 index 0000000..b4988f6 --- /dev/null +++ b/roles/stacks/vars/main.yml @@ -0,0 +1,14 @@ +# 2023-09-25 +# Vars: main +--- + +task_enable_all: true +task_enable_stacks: true + + + +# +# mastering date +# + +stacks_mastering: "{{ mastering_stacks | default('2023-09-25') }}" diff --git a/roles/stacks/vars/stacks.yml b/roles/stacks/vars/stacks.yml new file mode 100644 index 0000000..fa9822d --- /dev/null +++ b/roles/stacks/vars/stacks.yml @@ -0,0 +1,23 @@ +# 2023-09-25 +# Settings: stacks +--- + +template_docker_compose: "docker_compose.yml.j2" +template_docker_compose_name: "docker-compose.yml" + +stack_owner: "1000" +stack_group: "1000" + +stack_specific_task_directory: "../composes/tasks" + + + +# +# stack to use +# + +# common stacks for each vm +stacks_common: + - "{{ dockerproxy }}" + - "{{ dozzle }}" + - "{{ watchtower }}" diff --git a/roles/vm/README.md b/roles/vm/README.md new file mode 100644 index 0000000..377f192 --- /dev/null +++ b/roles/vm/README.md @@ -0,0 +1,7 @@ +# VM + +Setup directories structure and install requires files: + +* **bash** scripts +* **yaml** docker-compose includes (via extends) +* **.env** environments variables used by my _docker-compose.yml_ for each _stack_ diff --git a/roles/vm/tasks/main.yml b/roles/vm/tasks/main.yml new file mode 100644 index 0000000..f9ed684 --- /dev/null +++ b/roles/vm/tasks/main.yml @@ -0,0 +1,16 @@ +# 2023-09-25 +# Tasks: main +--- + +- ansible.builtin.include_vars: main.yml + +# VM base +- ansible.builtin.include_tasks: vm.yml + when: + - task_enable_all + - task_enable_vm + tags: + - tasks + - system + - vm + - base diff --git a/roles/vm/tasks/vm.yml b/roles/vm/tasks/vm.yml new file mode 100644 index 0000000..0fd9d14 --- /dev/null +++ b/roles/vm/tasks/vm.yml @@ -0,0 +1,160 @@ +# 2023-09-25 +# Tasks: vm +--- + +- ansible.builtin.include_vars: vault/domain.yml +- ansible.builtin.include_vars: vault/vm.yml +- ansible.builtin.include_vars: vault/ports.yml +- ansible.builtin.include_vars: vm.yml + +# +# Setup Docker VM base +# + +- name: Process /etc/hosts template + ansible.builtin.template: + backup: true + src: "{{ vm_template_hosts }}" + dest: "{{ vm_template_hosts_distribution }}" + owner: root + group: root + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + tags: + - template + - system + - hosts + - update + +- name: Create Docker root directory + ansible.builtin.file: + path: "{{ vm_docker_root }}" + owner: "{{ vm_puid }}" + group: "{{ vm_pgid }}" + state: directory + mode: u=rwx,g=rx,o=rx + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - vm + - docker + - directories + - create + +- name: Create Docker template directory + ansible.builtin.file: + path: "{{ vm_template_root_vm }}" + owner: "{{ vm_puid }}" + group: "{{ vm_pgid }}" + state: directory + mode: u=rwx,g=rx,o=rx + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - vm + - docker + - directories + - create + +- name: Process Docker template files + ansible.builtin.template: + src: "{{ item.template }}" + dest: "{{ vm_template_root_vm }}/{{ item.file }}" + owner: "{{ vm_puid }}" + group: "{{ vm_pgid }}" + mode: u=rw,g=r,o=r + loop: + - { template: '{{ vm_template_host }}', file: '{{ vm_template_host_name }}' } + - { template: '{{ vm_template_vpn }}', file: '{{ vm_template_vpn_name }}' } + - { template: '{{ vm_template_common }}', file: '{{ vm_template_common_name }}' } + - { template: '{{ vm_template_env }}', file: '{{ vm_template_env_name }}' } + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - vm + - docker + - templates + - add + +- name: Process Docker scripts template files + ansible.builtin.template: + src: "{{ item.template }}" + dest: "{{ vm_template_scripts_root }}/{{ item.file }}" + owner: "{{ vm_puid }}" + group: "{{ vm_pgid }}" + mode: u=rwx,g=rx,o=rx + loop: + - { template: '{{ vm_template_script_network }}', file: '{{ vm_template_script_network_name }}' } + - { template: '{{ vm_template_script_rights }}', file: '{{ vm_template_script_rights_name }}' } + - { template: '{{ vm_template_script_stacks }}', file: '{{ vm_template_script_stacks_name }}' } + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - vm + - docker + - templates + - add + +- name: Create stacks required files (empty) + ansible.builtin.file: + path: "{{item }}" + state: touch + owner: "{{ vm_puid }}" + group: "{{ vm_pgid }}" + mode: u=rw,g=r,o=r + loop: + - "{{ vm_stack_logpath }}/{{ vm_stack_logfile }}" + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - vm + - docker + - stacks + - files + - touch + +- name: Create stacks selector files + ansible.builtin.template: + src: "{{ vm_stack_selector_template }}" + dest: "{{ item.file }}" + owner: "{{ vm_puid }}" + group: "{{ vm_pgid }}" + mode: u=rw,g=r,o=r + loop: + - { file: '{{ vm_template_root_vm }}/{{ vm_stack_available }}' } + - { file: '{{ vm_template_root_vm }}/{{ vm_stack_before }}' } + - { file: '{{ vm_template_root_vm }}/{{ vm_stack_current }}' } + - { file: '{{ vm_template_root_vm }}/{{ vm_stack_after }}' } + - { file: '{{ vm_template_root_vm }}/{{ vm_stack_stop }}' } + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - vm + - docker + - stacks + - selector + - add + +- name: Create stacks backups exlusions file + ansible.builtin.template: + src: "{{ vm_stack_excluded_template }}" + dest: "{{ vm_stack_excluded_template_name }}" + owner: "{{ vm_puid }}" + group: "{{ vm_pgid }}" + mode: u=rw,g=r,o=r + when: + - ansible_facts['system'] == "Linux" + tags: + - system + - vm + - docker + - stacks + - selector + - add diff --git a/roles/vm/templates/excluded_txt.j2 b/roles/vm/templates/excluded_txt.j2 new file mode 100644 index 0000000..29040b8 --- /dev/null +++ b/roles/vm/templates/excluded_txt.j2 @@ -0,0 +1,78 @@ +$ANSIBLE_VAULT;1.1;AES256 +38643264373664336336316564303430343964633064633766313634623535626339323836666438 +6461386135613830383661633836353037313435326635300a613033363631383235653333353765 +30613635633566633761343662323339333932303534656138656237353835303739393639626231 +3833643361623866390a663165316536653635303638336364346561623131366335393034396430 +62326565653466626365613037643161313562313636343333393036386261303938396336646530 +34356663353130626366613136636532623836373839333662643862306434316436313132663261 +35626663336436633165396164633935343563353130613934616339613330313334316332316237 +61376163623365303663303335366166323639383565643239653638363638396539343332303863 +36663864323563366566643637313238663536363839396465626336613062313633363236316432 +30633439346165646137663135313964316534643661373961393633396533663433393362366334 +39643266383135356231373562333030646435363330616535656431636534643532353162353133 +65386337626239366330313262633962366536303330313465663237306465626132643964356139 +65336437313664373135333832306233633734616461363238323963393739636463396539376238 +33303037363966323936656335363765613636646634303861353361666564396265396263373336 +33643937373165306537326563666533373034356632363637663035626137306337323033336637 +31393432383730333864383563393138643639393436626561643738326366366266366337623634 +61373634646661326530396462353739333862333337396331353364363362636139316665393132 +38623433313764653264653730346564353064666531393536313735303561663136353731636662 +62636233666631616561366565393333613031343537326261316535336162626465656633363162 +34643032633262323637353939616636663133633536323464353066653437346133393330333366 +34363931396361653137326133373234326334336638646464323631356436303836613038366532 +61353330616338623933316238336635613334346134633365616166373966663231343365343464 +33373566376537323539353036316266633031373035653838623938343964313032333739323364 +34663039643930643633336265393634356339393233333834633736323162633130343730363430 +39393864313164633064636564306562353264396131663431383334353830336531383162326238 +34393038666633313537323661386132656535626330633133383839303131303064313038353737 +38633163393863303233353431323638643162613062343762343564386361633934653765386236 +32663130653030633639353063313331653630303536363262343835336663336265663563656332 +63636634323437626131326364323630613362313362373937363661326365373635363138386637 +30313034366366623762303438323763363530306536306532393630396530346562343237373962 +30326565313861663538633166613363643339626463343839373264636637663134393638356535 +32353435656262633936396439366437666134386264323066623262353431396366653861636639 +38396332643036306332343262393736366635643965343834636661616137623739376161666639 +63336336356538366531656234653230333765336634396664393730343030663133356265643361 +33643631333761313137343537613764333564363536306365666335656461333566616631386461 +36306164336337386435306536353336633635306262333939353130626535623734316235393764 +64396538623838343961363637626466373865623930366532356231623561366237636361613334 +30653164613065353439333063633961323962343364366239353461643265313435613563373138 +39356636623963666236336331646661643839363635363136316164616234666138353530643964 +62383738356534393839653831373261323139303339326662346632653561366364666337616133 +38656463373332333165663539376233326234383662336462383336663430386564623137383461 +39303262343133373230353132383431363330326539633063633833333938303038373764343032 +66363338386236616236386161666235393363663131636338383064396562373537303133333038 +61653330633866636437653364353165323838313135383663326635626139326638336665333736 +30656239373335356665623834653330323661333234636331303431333337393033333864316362 +35663837393231373562333063613832343737656238336365383835653738396535333366326339 +33616266313837366437633838383333646663663530663663336562316531633061623639633332 +35653863383537653761343264336237336563376330656530623738626161333439383566633132 +38633361656334386436663731383930383662373134323365393664376638663962396637343932 +62396231363661323038623733626332643036353761353437613264653530363436656261356332 +38313833336331663738636464613462343136393062616666643839383663663864623437326134 +66346531306265666530653835393030343465653034393437343764356435316262663766636262 +31666439663238643439373437373364383833623863633139313832393439623263623634326563 +64633262656661623934656233653230333064663538616138623931353761646339343765353530 +34613866346130353833623039666564373839623561623036623965643262636534333438333261 +62333231386636353939633136316331623639333231656330343663356165643233303562653535 +61353766653630653932336562306366653331646635656662646261313433393462663939356163 +39643566356362646235363630343033393134323663386135653430373138336236656438373333 +66613436303565396266656332626237613664623665386231643433653162376266636637313262 +61303937343238373232336165636638666332656331356662303639376534303331626136316132 +65346463373039613932343031626536663038313565643636316332623631336533393836336239 +61613233353866383939323262636363316566643330353266326665383635343063373362336138 +66346331306338386563663263633062663731373230326264366665316164393935316562336433 +64653766313466326462303834633363666334636333623765386634383631323936386564386132 +33396233303737353066653034656639393466623065366534356266343530656462636363666564 +35373563616138396239653934333836656665626635643038383331383231356533333962663432 +36666465313138326536386465336436326364616631333830663232363065303661656334306234 +32373262333964356562313437633439303737326230616566306431343636323164363637363437 +39343866636463333832653235363666663639383265363365386331313932636239316163373763 +61306462386436363231343239343533323162323839303661333365633132336632353662663433 +38336661393433633464633933313365336130323838626632386339396430643961346435373236 +34306665343965626466393763323365656639333562633661613931646434366132373634316663 +37373861326162393337326162323934323964316133363331616462396239653939643834326230 +61646636393232643138623361643965396365623832353839643837616536326138613030306462 +33646637643661666363323264643561623838623339633230376630323837323636323261316234 +61376438373634643431633234373166356331363239323634313665613763363932656537373432 +37303961386164616637616337643339366231326439353439373635323565373162 diff --git a/roles/vm/templates/hosts.j2 b/roles/vm/templates/hosts.j2 new file mode 100644 index 0000000..45097eb --- /dev/null +++ b/roles/vm/templates/hosts.j2 @@ -0,0 +1,35 @@ +# master: {{ vm_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +127.0.0.1 localhost +127.0.1.1 {{ vm_name }}.{{ vm_local_domain }} {{ vm_name }} + +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters + +# +# Local network +# + +{{ vm_network_range }}.{{ vm_ip_router }} router.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_switch }} switch.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_nas }} nas.{{ vm_local_domain }} + +{{ vm_network_range }}.{{ vm_ip_izanagi }} izanagi.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_omoikane }} omoikane.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_raijin }} raijin.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_tenjin }} tenjin.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_inari }} inari.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_uzume }} uzume.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_sarutahiko }} sarutahiko.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_susanoo }} susanoo.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_orochi }} orochi.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_amaterasu }} amaterasu.{{ vm_local_domain }} + +{{ vm_network_range }}.{{ vm_ip_suijin }} suijin.{{ vm_local_domain }} +{{ vm_network_range }}.{{ vm_ip_master }} master.{{ vm_local_domain }} + +{{ vm_network_range }}.{{ vm_ip_traefik }} traefik.{{ vm_local_domain }} diff --git a/roles/vm/templates/script_network.j2 b/roles/vm/templates/script_network.j2 new file mode 100644 index 0000000..78fa603 --- /dev/null +++ b/roles/vm/templates/script_network.j2 @@ -0,0 +1,58 @@ +#!/bin/bash +# master: {{ vm_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +doBuildSystem() { + echo "v{{ vm_mastering }}" +} + +# Display introduction +doIntro() { + echo + echo "Docker Networks Managment: $HOSTNAME" + doBuildSystem + echo +} + +# Show date/time header +doHeader() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "- $NOW" + echo "" +} + +if [ "$(id -u)" != "0" ]; then + doIntro + doHeader + echo + echo "This script must be run as root" 1>&2 + echo + exit 1 +fi + +SELF=$(realpath $0) +SCRIPT=$(basename $SELF) +CWD=$(realpath $(pwd)) +STACKS=$CWD +HOSTNAME=$(hostname) + +cd $STACKS + +doIntro +doHeader + +if [ "$HOSTNAME" == "{{ vm_main_name }}" ]; then + echo " - Create Traefik Network" + docker network create \ + --attachable \ + --driver bridge \ + --ipv6 \ + --opt "com.docker.network.bridge.name={{ vm_docker_traefik_network }}" \ + --opt "com.docker.network.driver.mtu=1500" \ + traefik +else + echo " - Only for use on {{ vm_main_name }} !!!" +fi + +exit 0 \ No newline at end of file diff --git a/roles/vm/templates/script_rights.j2 b/roles/vm/templates/script_rights.j2 new file mode 100644 index 0000000..702ddd6 --- /dev/null +++ b/roles/vm/templates/script_rights.j2 @@ -0,0 +1,237 @@ +$ANSIBLE_VAULT;1.1;AES256 +65303036653562613438393365333465623533356364623633663634336663343366373764626639 +6332316364306436353661376362623734646266306465640a653932396532633335393137376566 +33656434343539343038373432356433393535663633376437353631306637336532323765356332 +6433376261653463340a303764643232636266366666656237613265386638616637653362663937 +31383362303966313732343261386234623262343166383134383663636565653038383963386235 +32323963303665333063336138343531643562333662353664373631626430373966303931343166 +62623433303366656231346137613032326266646262643865363138336432306434646462333933 +33383562383430323164616438366435313431656135313137343666376363346239376339306262 +62343836343834666431393463366563356632396438653564313333323334626438626534373537 +36636363313937303537643130613837623862383432363662333231353639626135613231346632 +63643032303532616664646530386661636635393538306364643763393233323432363361656136 +32633165343931393132363730313132373139323936613664623339613931353138383032366631 +34376137306635393230326330353763333432353930613265353266363831303338333462636662 +62303563623562653564393638306635636366333736663430656438343264396531323239666466 +38376632313330663464306430653039646132306366356332343733313561303138326439393062 +64326335653639323261616232383565306534663837663061616339383563333262616162313362 +38666562343066386463633864623836663136353436306263356434323135393236316163353332 +64336266343361373161383361353963323662343336323130343134646535376336336661393739 +31663330306335663538393832643462343564343138396539303762613635626338333931376136 +61666263343532646166356263623936333438363635313935626466396664653862333565396339 +61333531386232336261333065376630373833366261323539363831646566353764633935616437 +31383263646666613838393165616265373639646662323537646534326638356636303631626538 +63396136613132656563333431396434356334623533623139666134363733613562633038396365 +36303837653139376430633130636562666234633530646264306163333932353066616462613161 +38396333633134313538633139663665313966656331613833613232366465653639373239633732 +34343336396630326263666133636431653835613262623030646233643637623362363062396138 +38613835313335303765353430656235626661373232373765376661313537333234316464666335 +39646139613363353239386237626334633261383038326635343637313030346632666136653539 +62303433656261323666613836346164383430356538363439326565653565346636646138356339 +35306662373834666364633539616533356461396562666430346562343732616564396338323534 +66666535393334393335326334646534616339353464623833346638613234636631663233356461 +39626565633830623434383639373465303432636339396334316430386635393965346236396564 +66356237366166316561343165653739363166333565303135393164306334393238363134343836 +30343961346361326666353065633131393365613566383265653833393438643733663365313037 +65366166393665326530376166616437376230303534363233383262326637303862336534313939 +39373161313464393862303339666664323365363363363239326339656162636166353834643237 +63386261363232373330333238383462656439623164306366666364666335353866633762336335 +33656338656234653664303161613961396265316530393565343130623037393330623337323633 +34306562613163373530343664663730383165633933303661336137623666623834333964396663 +33656636313933303935623838396636363166383661393062393733386336393861346366663666 +63356662346366613036346130663038656236353433343531636565343334663831376663336465 +35346239323933633732633366643234323730613039626332306666306535383333316534636538 +64636433383037313261336132346537643137666164663436363663366631376366376236633538 +61323763663532656163343162366465363064313262653564313366333638306332306666393130 +62366537313634346265393361343437383765666562326263353961663836346136663465323836 +38386639633933306565643139396633393632363537376139353963303266626531326338303561 +38303935336463643437383061326632353039396531393533353431343766396163623632346535 +38313666663536326334333032313762386331643431396663613735353630373333323136386265 +37616133363135636637353736303730353031373838386466353034353862646632393832313334 +38663761636166646163633638643733333062643064326365393332396331636564363438663637 +62323261343939336338366632373737623261316130363364316237613461613338313166366162 +36646531383035613461396562383835303934633634636132303039626266393533653332323033 +35336463366464316533623164643333353966303139623033363730623564363562386432303237 +37653636616338353133653232336462643832356432333839656437663565316430346436623461 +66663033356361356633316630616263346661613965373661626430656164363236656533356635 +62643961336362663564333762393033663663396331393631643133363364323836393938633530 +61346637623164303838313435333063656362386638656532653532646365363238633830646437 +65336130376538353030663362646163383263366537373563333238363038343362386630616164 +31636536616538653038393936616533343066643463386334376263623837656365643934333436 +36396231373663646135363433383435323465666338363336623431356238386662373139343837 +63376563613266383066313733613934626162363765393962633339376430366436383964353763 +37613162303330326139323636616634386662306164616562353036613163666234376231346565 +65623232303861333364383363323339343362353865323965363466643330363465383337613631 +65636430303665636239333735373836326431386533643230303330623930313135653337653862 +64346432343132333766363436313036316133643863363465643935336234353734613065393962 +35666339363231306362633664666438373764363033626464643136336461373362666236663263 +30616332303335666236346266343132643838613832643534383662626232633239366362643137 +34323962623564646532333064393830613733373433376233373038643662366236363662376237 +61313465643263643165613035333830336133363961633364323563336165363232666538303135 +66656334663662326261393537613166393531626166313763643463383832343430393863333133 +64633636363561393435623931653634303164646234343263633463663031316465616637313631 +36653634333937643938333335313936383138396261663134643661633266303935666161633965 +35393166363932333362326163323937366562363562383461363862313535636339396161336534 +61346337343835323330613134303563366462626665316432316461353866636161616261393334 +35313765343832653261363233666639633236653439313833383733386637633830356665396634 +31663334316234623934666664643931333633626534333666376365626236646639336665376365 +39323865366461626130386236323237626532356566323432363633653561333332613937383635 +37353565323931333135316633363461623634626430373633323863653263643236396433323863 +66663663653238643864623531346638336666306364366566613361313238326434313966653738 +39643834306238323539623161626465303962306332656630366139303464336263323662393833 +36356463393636396439363330663839383236373461643730643032333230323330366461633539 +61313465323337636131303063653362626233353137656333666631393232313932626466376530 +32333539336362613761356135356466353536316162663530386462343237316536363431646538 +39613632633966333961303733393336356565646261613366353561346236366463623934393430 +64613938666265303031306561373938343539306566666439386337663736383461383131363735 +30336164333566376634393931306234643864313739366335313132333833333661336466333339 +30633832376462336437616665626166643361323436343537643839353135393837346639623236 +39616462626430626139386532333933313063393063393534303534366463613935363537376365 +31303564616666656635343238653139306361663231343938393762356337383032376261666533 +38323962396365363461313565656531346364666634616162623265376165343835613464663333 +32336635303061393166623765396232316138623131326135333562306162376236656461653738 +30623534633232613833633537633837356536356233313938343964646631303230363465313761 +32373066663764646334383865353565336431323063666664373265656261653764366131343133 +30343362646639633431393234306338346130396338323965373437323761663033323931633662 +61636333383530643466396463333230646639386365646666353437663361656464306262333364 +64623262633862326132666666363733636261613962343934356162303963623662343530656561 +63616632366631613437663032633438313436323461623638656131306331383631343838343237 +66633863653732306262303236326365393734613735323531646232333266383437383932613835 +30633761616262353830633634656530343237616237353466363739373235643831326630356232 +37343963633935393430646533633930316465613731636235643866646162326562333462353533 +64303062636438663138373530346537646364633534313031323062623432373565616132303535 +37346437313035623463656463343139353961643264376165633262333461623830376439366335 +66373061333838656539373962343737333038316563376237343964623430323833306362323233 +62356436656230653861646339323234343638383238313361656138393933666165333739393532 +33646436633763616539333234343536383239363061303865666262393534303766623639616339 +39323234393861663631383930623831336563646531303064323161393734373932363534623832 +36373830366466316236646633633363383264363732663734383138633764353162663963363962 +33303536346333363462636532363537363336646236323566643866656332303238323132646232 +37313862333362333332636166303262393964333336643032383462376135363039396365643663 +66303837376431343761306566373430646232336539383065303337333831663736326162663939 +34376238383963383735393434666165643365633433383338663336323135393231386665643230 +66616337336462306537323937316266393031383738626533383164653832626236383966333038 +63623033623461396636393461353165376465666536346132353466366265663665623162343566 +31666663663936343739336438613432613866323638656666333936306461383633356365656565 +30333661326232646132316235383735343662316431663137363530653564343139653139623331 +36646538623063636165323334666465663462366464396366363633656466613036396234633335 +35323666613663336138626666633163323630613139646162636632396235333164623631386662 +39636361336431343432653037393538333665343836363362323061636362623139396132303339 +61633964636165653061366233626131653466396130653066393764313538376437396131303336 +63623836376236633735353461363735313231663861396335326535633430646138663037613338 +62643830356465646539313731623966333233393061623365616337623764316637393065353736 +37663132306362666635353637623636396333663966323263356135376564623763336361373564 +30356633663339613631353332666336323763303339643933653266643232613732396338656337 +62376161346166313566343230376430636332386530343361316566393534313966613465643037 +39656232336433343366643263326139336334663834626133643533383462393263616262633163 +33353564306635633761663339393537653931653365383835633534303230636636376165656463 +31633530366636363735376634623336323763313935613337366338613538303330653766363838 +65636630333930653662623439643665346233393735653438353066343132336131366166663738 +61643630366236653337646664396136633038666463616666363530623939313332326262306532 +32653330303662333661616362626164313132343533383062333338376431303266643735393333 +36376265623364343739313035653931616330303936396365346466306463623734383161643331 +39343336333033383464333732666432666337356434626634663663313663616431393732393232 +63666264636632356437613661353730303630656166323135376166653935343931633666366331 +37326365353930336338626462646637623861656235326435323438656137306536333762643563 +66393764653564636437666337643866643733333433656131316438316539393162623965373866 +32366335343332386662303439353939343036633137343262383764363163626466323539383263 +33373364623963656136613332343562616338343634336436623534356263393738396261306237 +63393330386230623563326334363331336439626638383032363931386563376139356537616561 +36653762356365656139366362333663326330333839666634616634336530393933633663373331 +38663961313535353439376532383936666532313334356638316337653364383038666437643437 +66643531383961356162346263623930653133366439306137653538373164643766646163623837 +61646338363533663061316232306162356639656463343831396330326363633763393738623561 +62656432643936366462626139366431326334363131636439636564623737653766326564633164 +63353734343534373531656136333330663535383431353262366235646262633664386430363562 +63303932626162393438613865636432623532616539626462626136666461633937646666626363 +38636134313631316236393632653537373539623933366537366365646436383461383265656364 +38653837376164386330316666333835356639316664333834383339663932623737626431313530 +64346163343262383232373165326432396661346439313765333462393733616461323264386436 +62356237643730306362653539383936623364363637636161366166303061613565666233326163 +30656639383739306338333262303439623363383730363038326235373863303735636537643765 +65393737623034643432636165343631383061326461643866356433393137623262656439323164 +61616537346538366361633161373736663461636632343337376338633537313065313135363466 +36393637363535633961623830353463616532333264306635396132383961613132623332636333 +61373162303039643562383932353533653835343933643863323933613436666364393438313632 +31326135353639316332363861653863346339343563623335333734326364343662663461373834 +37613265653030656536393030303930663133653333633039663366636333366134366630356364 +37656539343462383462386630626239343964346539333639393930616533663363623066353866 +64646664333063646664373365393164616565306537643334316131323665396564633764376638 +65393435656562343131376337653466323630373632633763373837356461633037303063303463 +34663164343738396637666630613962393732633462393466343661663837623933393663343163 +34363161623935356632343838633965323831656236356361386335353766356565383630623139 +35623932623533363138653263376263326435303832353233356332343634343238333330653464 +36383731363565366363376564356463303239333762656236383135396466326361376535386163 +31383232353734643866613136303336313439613438663264653463613661303430386137636366 +31613165353134343365613336333063623966636135333332616164326264623930373436663839 +31363537366264383461383064326431383830373931636461363433303931613837306133373836 +31663866353461383733356236343633303465663965646637653932646436333364316136656135 +37306263653030353936366361353161363435306338643564386137636566356631333164396535 +33386530303734306636316437343530393037313932633334323963643236303562393663306466 +34333264343839356135353934323762323162363939636639373363333132373231373034333130 +30386161326432393266623436356130363834343362653663663262626231643738313034393937 +37643938383836343766616136396538636362333530316536306461346463663431663936356334 +31386132393064333161346636656338326630343035666330636163666634373361386235373633 +33623234653334643033346662316364626435363765353436336534613334326462613332323061 +34643332653362653638336636313737656130353436646533316365623638636230666161336437 +62353635396532313061373766393332663938363038643464313239653339383161643132366462 +34353635666166306333653963303534376563303234383133383064633131376334303936353864 +35303934366439313134336134373264316564373335656339646661656239626639613262303166 +33376666613135353563623234303364623939396563323761386666363538353930653530313131 +38383332613764353061663739356634663931313137613166346263653364616232376430333530 +37653931646164656565376337353063373136343335386233633863623339363465663764393366 +39333166643530633231613539643633643934613963663931356231396164633262646133333831 +31366261323363343066613936613563356566643237636434336437396165376638626331333465 +34386266626163353034313034656365396434623363363561663335636431343963373131343365 +64383661343032643536323431366166333136356432663531646361336663343934386435326330 +37616534316431663439366663383265343237626165356561393363393936633836303038653162 +62313531353464353237616635666232333837323334383432633465393437386632343334613165 +31313766383730316363653438656536613861363336653039316435343834613166373939613762 +35313539336631393334636634303834666339656662323435613238373535626562363262323430 +37363530633162616230626530353735653939353433633264363031393732623563656635333938 +63666630396564363933393737336665643638623639613439376534643237373364633832616231 +32343364326238353832366432633233623334366164316464366632666162663435383262386462 +65366133366566393364343739306561613362666233353035363664393531326638306239306137 +37666466303936646131396363623235656537623533336262373337373164653337646130316132 +61323635356363393833393733633066373632386361313933616166366336653632333835303532 +65643232356232383534396135333964396365393934353332333934653335623930633832346134 +36396366623534353739333834623338626433363066366264303337306263353965643934326339 +32336335636566333262373433306231326336343366373265356431653632376430613265393831 +33393638656538656362343766623632643465306338646162396364663234366632386362623937 +31356434303539373439653366343136373466326661363166616161616562613733313138663135 +65323762633635366364323463373261373835383464613035656235386130373335383064616338 +66323765313938326366343964636135393530636230646265323162636135626462656434666365 +36346265626630323634373066666432653764393932376639623662623834336562663462306135 +33643864626339656339666664383563366366366139333435663461313033396332383830313033 +66633734343635353332343263363536346138626466636562633866316165303833613265653131 +36313435396461666136636261616461313434343232393563313161383266336332336366643732 +38326634633266373232646166653032343265636638643930626635666464363233623032383165 +35633062316231376564376363663133386463386434656663626434356232626533393732383637 +66636331646162373736363662316135393539393234646233613632323662393765376232333263 +32663961633939626139363738353066303035316431656632626362663763633337383236656663 +34373362383431633939386161323431333136626632393734613663633261353163326538356238 +31303232653530633835313330343566333731643538383535303866353566623634396539323131 +32336532663734343438313235316136373631356138323833633730646537663133316339373166 +66663161356335393833396637643539386164623237386264376431646537313739313134643635 +30336333663865306634636463376638643832646564623364616564373965343533343739326561 +39346163633065623130643837623335383833336666383836333435366333326263386264643865 +65636138656462643131653163326465356565316662393537376635666432313064303466376265 +30643530356338396139326230396363623132326563376661633736356437313463346433343634 +32363264616536323261666364613638336665366439616337303435303561313239333537613536 +64393466356236636531316136306331326433383437306463636130323732356263343939323131 +62393966346634356236353264636566323263356664623334316538633937353366306234363136 +64633539323763363066333862633435323537366331333334343734373334663934373366623430 +62626133303161326638636365313731306237343666333766316537323761366632623231383165 +30666337626331333036343339646562633264303436663161366363396662373432633030386230 +35316239623739623635656532646339313535643363623766343538326466373737393139666333 +33303061303636666338386630313334373964313439656533353834663865373839373463666439 +63343730653064633566643937613438666661613661613537393435663735353463633364653634 +35643430353939613437636265663531376564326665643537383765323930363134663033626335 +38353131663135626130383336373866653061333531663434393339393939636639303936333864 +37393063633339373662363135346261393263663732333333366135633434313663666135393734 +39393136343630313431393764383961626435306561653930666532643333613236313564333034 +34306562383533393734366331366465336333353434383037306339336636633034373036346437 +39633833653132613232653866393539336233316330306337643863643966633433633164396330 +35363332633038636363666463306533353738313564653032373438353861323962626432656161 +32623139623162626237386265623264623839383736616635363364313133653665333935373832 +63353266383731636331 diff --git a/roles/vm/templates/script_stacks.j2 b/roles/vm/templates/script_stacks.j2 new file mode 100644 index 0000000..4dc1685 --- /dev/null +++ b/roles/vm/templates/script_stacks.j2 @@ -0,0 +1,468 @@ +#!/bin/bash +# master: {{ vm_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +doBuildSystem() { + echo "v{{ vm_mastering }}" +} + +# Display introduction +doIntro() { + echo + echo "Docker Stacks Managment: $HOSTNAME {$OPTION}" + doBuildSystem + echo +} + +# Show date/time header +doHeader() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "- $NOW" + echo "" +} + +if [ "$(id -u)" != "0" ]; then + doIntro + doHeader + echo + echo "This script must be run as root" 1>&2 + echo + exit 1 +fi + +WORK={{ vm_docker_work }} +BACKUPS={{ vm_docker_backups }} +LOGNAME={{ vm_stack_logfile }} + +HOSTNAME=$(hostname) +SELF=$(realpath $0) +SCRIPT=$(basename $SELF) +CWD=$(dirname $SELF) +STACKS=$CWD + +SETUP=$STACKS/_vm +LOGFILE={{ vm_stack_logpath }}/$LOGNAME +MASK="{{ vm_stack_backup_header}}${HOSTNAME}{{ vm_stack_backup_common }}NAME_DATE" + +OPTION=$1 +OPTION="${OPTION:=help}" +STACKNAME=$2 + +cd $STACKS + +# Send notification (0=no, 1=yes) +NOTIFY=1 + +# Force sync & flush +doSync() { + sync + echo 3 > /proc/sys/vm/drop_caches +} + +doHead() { + doIntro + doHeader +} + +# Display help +doHelp() { + doIntro + doHeader + + if [ $OPTION != "help" ]; then + echo ">>> Unspecified, unknown or invalid option specified !" + echo + fi + echo "Usage: $SCRIPT OPTION [STACK]" + echo + echo "OPTION:" + echo " help - Show this help" + echo " up - Up the stacks" + echo " down - Down the stacks" + echo " start - Start stacks" + echo " stop - Stop the stacks" + echo " pause - Pause stacks" + echo " unpause - Unpause the stacks" + echo " restart - Restart the stacks" + echo " update - Update the stacks" + echo " backup - Backup the stacks" + echo " self - Backup self system" + echo " autostop - Auto-Stop specified stacks" + echo + echo "STACK: (optional)" + echo " name of a stack to process" + echo +} + +# Send notification +doNotify() { + if [ $NOTIFY == 1 ]; then + curl \ + -H "Title: Docker Stacks: $HOSTNAME" \ + -T $LOGFILE \ + -H "Filename: $LOGNAME" \ + -H "Tags: heavy_check_mark" \ + {{ vm_network_range }}.{{ vm_ip_master }}:8050/zogg \ + >/dev/null 2>&1 + fi +} + +# UP +dockerComposeUp() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { UP: $1 }" + echo "> $NOW" + if [[ ! (-L .env && -e .env) ]]; then + echo "> Recreate .env" + rm -rf .env + ln -s ../_vm/.env .env + chown {{ vm_puid }}:{{ vm_pgid }} .env + fi + docker compose up --remove-orphans --quiet-pull --pull missing $2 -d + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# PULL +dockerComposePull() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { PULL: $1 }" + echo "> $NOW" + echo " Pulling" + docker compose pull --include-deps $2 + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# DOWN +dockerComposeDown() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { DOWN: $1 }" + echo "> $NOW" + docker compose down + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# START +dockerComposeStart() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { START: $1 }" + echo "> $NOW" + echo ">> start" + docker compose start + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# STOP +dockerComposeStop() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { STOP: $1 }" + echo "> $NOW" + docker compose stop -t 10 + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# PAUSE +dockerComposePause() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { PAUSE: $1 }" + echo "> $NOW" + docker compose pause + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# UNPAUSE +dockerComposeUnpause() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { UNPAUSE: $1 }" + echo "> $NOW" + docker compose unpause + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# RESTART +dockerComposeRestart() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { RESTART: $1 }" + echo "> $NOW" + docker compose restart + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# BACKUP +backupStack() { + FLDR=$(realpath $(pwd)) + DATE=$(date +"%Y%m%d%H%M") + NAME=$1 + FNAME=${MASK/NAME/$NAME} + FNAME=${FNAME/DATE/$DATE} + TOTAL=$(du -hs -B 1 $FLDR | cut -f1 | tail -n 1) + TOTALH=$(echo $TOTAL | awk ' BEGIN { split("bytes,KB,MB,GB,TB,PB,EB,ZB,YB",SZ,",") } { p=1;for(i=0;$1/p>1024;i++) p*=1024; printf "%4.2f %s\n", $1/p, SZ[i+1]}') + WRK=$WORK/$FNAME + MAXSIZE=1073741824 # 1 Go + + echo " > Flush" + doSync + + echo " > TAR" + tar --create --dereference --file=$WRK.tar -X $SETUP/excluded.txt $FLDR/ 2>/dev/null + TARSIZE=$(stat -c%s "$WRK.tar") + + if (( TARSIZE < MAXSIZE)); then + echo " > Compress" + pigz --fast $WRK.tar + echo " > Move" + mv $WRK.tar.gz $BACKUPS/ + else + echo " > Move" + mv $WRK.tar $BACKUPS/ + fi + + echo " > Flush" + doSync + + echo " > Done!" +} + +# Do: backup a stack +dockerBackupStack() { + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "* { BACKUP: $1 }" + echo "> $NOW" + backupStack $1 + NOW=`date +"%Y/%m/%d %H:%M:%S"` + echo "> $NOW" + echo +} + +# Do: backup self system +backupSelf() { + FLDR=$(realpath $(pwd)) + DATE=$(date +"%Y%m%d%H%M") + NAME="self-system" + FNAME=${MASK/NAME/$NAME} + FNAME=${FNAME/DATE/$DATE} + WRK=$WORK/$FNAME + MAXSIZE=524288000 # 500 Mo + + echo " > Flush" + doSync + + echo " > TAR" + tar --create --dereference --file=$WRK.tar -X $SETUP/excluded.txt $(realpath $SELF) $SETUP/ 2>/dev/null + TARSIZE=$(stat -c%s "$WRK.tar") + + if (( TARSIZE < MAXSIZE)); then + echo " > Compress" + pigz --fast $WRK.tar + echo " > Move" + mv $WRK.tar.gz $BACKUPS/ + else + echo " > Move" + mv $WRK.tar $BACKUPS/ + fi + + echo " > Flush" + doSync + + echo " > Done!" +} + +# Iterate stacks from file +doIterateFile() { + OPTION=$1 + FILENAME=$2 + FLAGS=$3 + + case $OPTION in + up | start | pause | restart | backup | autostop | update): + stacks=`cat -v $FILENAME` + ;; + down | stop | unpause): + stacks=`cat -v $FILENAME | tac` + ;; + *) + doHelp + doNotify + exit 1 + ;; + esac + + for stack in $stacks; do + + if [[ + (-n $stack) # if not null + && (${stack:0:1} != ';') # skip when starting with ';' (comment) + && ( (${stack:0:1} == '+') || "$1" == "backup" ) # use when start with '+' or when asked to backup + ]]; then + + name=${stack:1} + cd $STACKS/$name + + case $OPTION in + up): + dockerComposeUp $name $FLAGS + ;; + down): + dockerComposeDown $name $FLAGS + ;; + start): + dockerComposeStart $name $FLAGS + ;; + stop): + dockerComposeStop $name $FLAGS + ;; + pause): + dockerComposePause $name $FLAGS + ;; + unpause): + dockerComposeUnpause $name $FLAGS + ;; + restart): + dockerComposeRestart $name $FLAGS + ;; + backup): + dockerComposeStop $name $FLAGS + dockerBackupStack $name $FLAGS + dockerComposeStart $name $FLAGS + ;; + autostop): + dockerComposeStop $name $FLAGS + ;; + update): + dockerComposeDown $name $FLAGS + dockerComposePull $name $FLAGS + dockerComposeUp $name $FLAGS + ;; + *) + doHelp + doNotify + exit 1 + ;; + esac + + cd $CWD + fi + + done + cd $CWD +} + +# Proceedd operations on stacks +doIterate() { + OPTION=$1 + STACKNAME=$2 + + if [ ! -z $STACKNAME ]; then + echo "+$STACKNAME" > "$SETUP/{{ vm_stack_unitary }}" + else + rm -rf "$SETUP/{{ vm_stack_unitary }}" + fi + + if [ -f "$SETUP/{{ vm_stack_unitary }}" ]; then + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_unitary }}" "" + rm -rf "$SETUP/{{ vm_stack_unitary }}" + else + case $OPTION in + start): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + ;; + stop): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + ;; + up): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "--wait" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + doIterateFile autostop "$SETUP/{{ vm_stack_stop }}" "" + ;; + down): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + ;; + restart): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + doIterateFile autostop "$SETUP/{{ vm_stack_stop }}" "" + ;; + pause): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + ;; + unpause): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + ;; + update): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + doIterateFile autostop "$SETUP/{{ vm_stack_stop }}" "" + ;; + backup): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_after }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_current }}" "" + doIterateFile $OPTION "$SETUP/{{ vm_stack_before }}" "" + doIterateFile autostop "$SETUP/{{ vm_stack_stop }}" "" + $SELF self + ;; + self): + doHead + backupSelf + ;; + autostop): + doHead + doIterateFile $OPTION "$SETUP/{{ vm_stack_stop }}" "" + ;; + esac + fi +} + +# Entrypoint of operations +case $OPTION in + up|start|pause | down|stop|unpause | update | restart | backup|self | autostop): + doIterate $OPTION $STACKNAME > >(tee -a $LOGFILE) 2>&1 + doNotify + doSync + ;; + help | *) + doHelp + doNotify + exit 1 + ;; +esac + +exit 0 \ No newline at end of file diff --git a/roles/vm/templates/selector_template.j2 b/roles/vm/templates/selector_template.j2 new file mode 100644 index 0000000..13526ba --- /dev/null +++ b/roles/vm/templates/selector_template.j2 @@ -0,0 +1,3 @@ +;master:{{ vm_mastering }} +;edited:2023-09-25 +;updated:{{ ansible_date_time.date }} diff --git a/roles/vm/templates/yaml_common.j2 b/roles/vm/templates/yaml_common.j2 new file mode 100644 index 0000000..be46227 --- /dev/null +++ b/roles/vm/templates/yaml_common.j2 @@ -0,0 +1,23 @@ +version: "3.0" + +# master: {{ vm_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +# +# stack: x-common +# + +services: + + x-common: + + extends: + file: ./{{ vm_template_host_name }} + service: x-host + + init: true + + sysctls: + net.core.somaxconn: 1024 + net.ipv4.tcp_syncookies: 0 diff --git a/roles/vm/templates/yaml_env.j2 b/roles/vm/templates/yaml_env.j2 new file mode 100644 index 0000000..9706256 --- /dev/null +++ b/roles/vm/templates/yaml_env.j2 @@ -0,0 +1,363 @@ +$ANSIBLE_VAULT;1.1;AES256 +30383566373565393864313332653139653663656430313366373439376433626136373532663630 +6434333831376162383966316463333432666666333164310a366661383063303865663461623836 +31326136613865616335383537306339333332326232626463393762326332373266663664376131 +6335353962353134360a643032643434623563626365316262623665626230356363303162656633 +34356365343039636231633635623863333064383361313237353337363366613331386535636632 +37333335363134326639383265393333386430626531626162666165623564663531383432646563 +31353432663964643165643161303835613734666436663533363137363838373831646530616562 +31383335643730613865653161333637656335313737393332323364396663326632396161646566 +30333935303337346437356539366637323365333564666136613132623533326162393664313039 +30643234313862643638313664366137386138386464313338376633633762313863326630373762 +31636435326533343964323361653232346539363362633264376161323130303631363539616332 +37656333343132396332323165396637366131383234363834343433386531646130383564326332 +61633962633865666232656334636637396632636131383035303533623237383031623439636630 +36393537626638376533623936613530636166333930336535626662663339313831646665363665 +37396365303336356430316365386131653034306335323337383836663563613131643732383639 +38636361666338636162626562626538333561306465303335366133303163323534613138363061 +66373061363730353338636631373566613430346433396439336133366232323834353161366566 +35366631623839356630343538326638313738376333663837373564613162383437663238303839 +39646137643137663035313133623962653362396434376133646331343839633834616537613930 +32306333656163663964393534343764323766626238363432636630363339326266303031373636 +32623264393764373939323465383866323131393531653633353934613732323138616266333735 +35633533373661393235366262656430653230376536623939323763653639396635626633373332 +62306631363632383937353938623233663439393637323162636437633233656239313234346166 +39386630633334353939366262333632303931666130623434363538326165346231363039393262 +66313336633663376533333334633437663033396534386466313936646439633037303862663037 +31333864363665623765366536323635336466323635396534303030396564383234363430363562 +63333063353562393639626131313630353761626435636264613034356637633031346661356531 +61373731663332623131316363646133653337373035383236613734393239366361633562616335 +30643430363934366266646637373532326238313231323964613235373334336235333536343563 +39376334316661646432326363376531633335623136313462396466303538333433653838616265 +32333362643437646365383631303766333931653537666564343233306538366434383162663437 +61393865626263376336363662323865326330643564613364313564396162643732633839343264 +33633335386338323264393162323262343966303566633230363662653732653037623262643932 +61366334383632343033633062626161666438343362653738623366353931616266373733333561 +34366533656632666262646436383564356161623666316664366133346430613739653231663538 +33306239343933353432383632313237653461323436363931366238626132386235643233623633 +38646132383666656464626565663963616536646633326238633330353636646639306537363963 +30393062666530343934363163613462663231346135326533656333353861366330663061633539 +32366461303031343633356134363831386137313535626161626163663763313032343430656631 +39656265376234353866613338353732663764343732653062646432643638383537306238626131 +65373438326630653063626239656131366236303563356461363763356636353061363235363338 +36396263663135316466643464626138376330376638323465613932363366346565343632336365 +32616336626133663264623466363238613739343166376662333931393035646332633963613063 +65346661323239666166653933383966643031633931303538663339333830633433303866643633 +37343430313933333063383966623839393461343937373135313562306335346334363436646330 +37326330373331613031343062663839646236653562623834653933303466316161666637623334 +31373630383063613465643336383363356237356461663936306536363133353662643032316362 +31316462626665633830663034663662626636356464383865653064626461626237623965313832 +37353538366330393762643766643130313032623837383930346535356637363266633561356463 +62353965656231386233653335636364663539333930356163363637303465343164643539306162 +31343864323661636438313738386134656133326632623161613739393664656465396132653534 +38376538326635353866393636353432626235653666343164376534643033616165336533383337 +32343766373461363039396431666163313564613962316239303861353535346639326131323334 +62666365343535643737383134653736303563656632393734653935363366346437636439363734 +33303732303034633566633238646364313761373539343966383634326162343638633262663063 +63366532356665666637616264623238313665356364366366386564306231633930336437336631 +38376336613466633134666631623562656330363134366164343933373966666437383332363164 +62663336316635616532396337396636383732333331393537313731633763393733333032663230 +35363365383037376135373036626330313732303434333561333337663339626161336166333835 +63633565326535333933643232313839356332353564356631346464336664336531323363373631 +63623665353234633332353530626365363063313363373238323437383336306534346438666533 +33353463396662616232393365313636373662363535623831333330356237393861656133356634 +61616561323164653465336363353038316330333939663833626664316165643435346462613634 +64356238343462633861383832373933633065663066376139643335303261623839633938323837 +33353563366439663533666264326237653363373964393266386230643562636561626431353735 +65623534383164303833313134653839383766653036633537316432363730313463656134373832 +39386266643963643238383237316632356434646537636435613662313432353565373931336666 +37623039643132653131363733326461353264313830636631336633343031316230306464313730 +39373233613161646339633232613836366665393238363239376561616462393864323733653935 +39623761656263633863323365313234333938306630646439633732393430316563366464363266 +32303835366433386564333934313432356466333161313662623034346265623035323535663661 +32373830393932623136323761373232333732616533303462623166623832633734613733353837 +64396361666164653765643033333038396132313562316237346561376536386162323137653262 +36353538653365633839356638636232353635613939613963353438343039356361643766326130 +66333665623431363837373466353331626332383463383439346238333136356161383965343434 +64613230623730663364346638653564353637363530346238646436636434316636633362326338 +64656663316466303364633139633536353433373165636335653436346662343834306333343761 +38313932656566633936363030646163663565386162393132666137383065383465636538343831 +35393737313735393039383561383734373133613261346134356661306236636337323833613662 +37636461303866616262356439343235303334353265373363383734306532366637383837656637 +31613833383466373362386165633138666639353266323866383939656439343363343437383330 +31633862653533306535336661313734663761373832666536343663613565353439343834663935 +64666137346662356462333037623436636432626430343234666162383931343232323035653431 +62313235643838663330336434653831376264623436373732386638313535663037306138343937 +64376366353334613962633164303832303631623639626164623834616133346538383261346333 +38366338323831623338363566313262643031313739623839383233323539316463666365353232 +31373431663437343130343863626335653438633934643961653336363666633939633161663863 +66373066356234396634623232633162383535373737376338396637396363363366306131303961 +39393036306562636438633631323239653135336134393035333634396439383961656431383330 +61393939623266636234396365666538643464383664363365613431376136643835363465323033 +38323030303139333434383337353334343261653339386335663966613133346166316430383533 +33653863626664306562633435323334363133633932343461616465613431363035653563613464 +64663165383335393534386261323464316531373339336666316362333935303763386465653161 +32653538623032323531643362343038626362366266616565306439383438393831383339363266 +65353534313866613362323933313435333564623438333938326461353430313531326161383831 +62666634343237646165663839326338363564306266643266326231666466323262636365363637 +31656666333335663137636264386264653737626132363937616265356639303132333566393363 +64316466653333306364313761623231616638373732613363313066333261326333316663386666 +36386535336635343430343563376561376134613733323039346461653737363266636430366461 +36323431306138306633313861306163613830383363353432326531663132353233663133303332 +63343235313561346162626434623431356231633538656537643263356565396330366538376536 +65333836316137663030343662646261373033343665646135323036353738636130633038623966 +37326639313736343164653538396162326632623536343663636531383365303364306333353435 +32613938323066626663393831313562396664383037356466333765343164623935663861396432 +33313035623733313662346538353639626139383735666637373261626133306233623730326435 +65633462353738356437633164353066383135633937323930383438346661303333353766373864 +63313935656333323735666438616535363335346466396431313262633433613162613863643166 +36663734623931303539346434356662656336356566333630623065623332373062363739313766 +34626338613737663035313030376664303531316666663533326232636333336564333439333333 +34333166393064656664373064326232613530636562623432663166666233396632626635303363 +63646562386533336233386232626337306363633534636539613962653431313136636135313430 +31396264643930383633316262646465313432613264393832396138656138336463396134323665 +30346466643962323933343636343035303231353361353735303366303836323564653633343861 +66613962376337613132343332613832353030323932663038313331303839336439633239313338 +66626466613838316466346135646333373664353734353830363831643736303536383964343335 +61363332306564616462313136613636653036376639326539323039353534313737323432316362 +38353062643734653965356664316138656565663765343234626536633762633238333434323361 +64393334383031363130666464323637636239306362666134353435356334373538643161356166 +33313539323939303730336163396263303034356534346465623638613366353565636661626565 +37306566393933333836323438643332613432323362316266353534363531326661333764353335 +65623266346138623937316134373230323165393737333532343765363032383732373135373936 +39616439323937316464396666326461343239373763353438303561373766343435386539396236 +31323038313431313839313766376261313537636565373661363934663865386237306136656536 +61356662336434636165326335356235656462376231623038363831366536363964653733333533 +64383639666336623135306533303437643661623034613662626230396661666662653663643039 +35633930616635313461613166323634336138303138313232386232353630376664643638633635 +32393661323338313736643762383034393538343764666630356166616437323066343263323337 +39656333323832636131333330313063303761353139656630326536636532396539376366303933 +36343137313461643562633537353334643435656161326431323964363237616330646131663732 +32616562653932623266383239386236623363393232623939316139323237616266333462653837 +37663136376538306437333464663134356431393237336433303063336533653961333039393062 +35363032326139616134363863313439383938343764613362336534303939643364643033623765 +30656666376336363836313434353338633231323039363861336130326666633539373430303730 +39393839366539373734643834623762613366393435306162653031366532633061326164656432 +62343365306430303231323334303733306265373261663764616634396538383461636263306633 +38653465373936636438393835333661353633653063353464323132663932356534376237386365 +36326361393763653766323664326634613337303932666461353566636530303639643032386163 +34366437646334326539653531336662383631363236376264666434623837396461383436363337 +62316663626565303339616334643962363639396666383039356337646434663130316263353432 +37343233643466613533363861353461323135376235336135373138303564326465313336376363 +30646339336665393331373662333362343333383664316439373433323565653262373962646133 +32656463316165333161643839303739643134343739303730363336636536623230336133313432 +31633537646331396338306564626166643963343336373363343136663262666232313938376237 +62333935623436643761643262373165326362663639623761346137353639656666623036366537 +65396462356331353865313332306466616463633536373838653662313562383166356538383337 +39623262333231613665643536386236633731643236396336396439356535613266303235646236 +35316132636431623033616534313732393533656561363262333532373062653865313665666162 +39666564663965323165353338633131383233653635313365333263323863363266653864316330 +63313338393633363632613333323538346136306366653138323164323163616539633236653236 +62303365366335303537303234353333306134363766326462323462616432356266306537363730 +31393937353766633237356435383737383866353865633965626165383530363335663062316239 +62663030613563326139643138363465383733383366613861323564333636343534303062336537 +33333263613637313032396164353030376562393462383636626435383263626239386264653261 +64623033623331313632326533316433303034373462366531633335656439373464396264333737 +38663134376330383538393965666466303834643862383864363863396162646433303930643762 +65316530396639646361396437393034313034656464613034643636653131623336333236366537 +66376562626438633139643138663566626531333565333865353831666132633463323334326663 +63646265326338313762626162366461343465306439323664653639663332393737383737353132 +62303863396231626266643438663334383263376531383037376132356138383437653335343138 +33363363356433356161663432666637623966343865333563313439323361646465313561616635 +39396631323637363234643335626363303862666362363332363731303862393734653337366136 +32636431646631363337356439613861313763393262613130333936623532353135313130313437 +38356261663337326530333762616636356232386234366263363430313632303666656665343736 +36643365373563646631363933343033613733326264363761366161663635643439616265363132 +30663635663364373435623934663836636563326433386663356462666561636466346635663332 +39386338613535306531393761373539613038636634323038346337653862613539386633313738 +30326363323566356639336463303538313537643033386539326361343330376461636232666235 +35333564623161386332633366663661656138336436333434613435623437343461356362653066 +30346131323837613262363166393038396131663734613065353031363536396666373565313337 +34666230346438616133363763303034666430626661653832363663356538323761333761376131 +38633535383966326465626163326438346164373330623930636565633734326664323535386634 +63663438323835363030306334386464303730373465646338636433353436303830386462333962 +38616662636531366232313836386563373963666132633462663639313662356232653864363939 +66383331333361376138356563616663646231623464376532643137633964643332356262363862 +61323734313239393939353633656135656238393133326564636639383038656139353937326531 +65636531313937326266613736643536346132333665326233656366396230303566633037373132 +31313961613461656435653562363265373361313630373438323061633462346530363939366662 +64386664353134643336356261343334626163313861356436653265303061663230356234366536 +34373962386439393235383238326564663863636233376231636534376631303264343334333661 +66306165636136376261363231363839333562366432306436386630366663653134303434316631 +35363138386536393933663336316331393237656435366463313735346539633666333534343836 +39643465613638323632656639343835663963336133353065373037376433613561353962346666 +36326263616136353931623839656261396431393738373865333962303337633261383638616264 +33646665633235643264666164623463326165353563383634613434356464346336386662633335 +34316637633438326264616465623533373662366137636138656633373564616230666133656335 +65313534326335646133333863613937363934656437363730653635383762623433373861336639 +37333161613038373835646537656564346638613939636266383861393233313233383133376339 +64323936386130363730623461313434313636353133343838376562383266393337616239336662 +30376238663838363461333037333263636332656535366630303536653665663266323434306665 +39616637393934373830373738653963306532393337653064336332366534623936343238623339 +33323565356566373631623531343538396434366132383730303037373330393736663230353530 +30316431393130313963323531616538653363393831336532333063376337343330336536366561 +37393937353335353166373161336663633434383337643563323766346333616433333963346530 +61636431326334643463313330613433363039333737343936316464353731316534383862613165 +34396431333131303137373862303134386364656536616334376638653762326163343665363839 +36343237366466383264623766303531363063613430633934333763323239363737313836333731 +33313466336161386337623236353731383639343535393437333531363530353661376536643064 +36346562373561653233323235343964613864623131323434323731623736373438323831326237 +39323161353266306532353665663635313762643265323566383066383738623839653433666137 +38333938356665366339386436663733653032653435333131376165656437386432653536393361 +37393738663530363165623638383334633163666336323433353764353263633365633965393835 +34616134616463626539363564333135633536366432646564643561386639653732306664646133 +30326638636131663933336334393634666463306430363034363436306239616633646634666439 +33656631373630333038306362626237386265343438353161643961626431373433353937623533 +61656335653035386462656633653633383761353432666666303364366139366164313664616432 +35303562383636366164316464343137313466616537643330326637633366326634363734343666 +64663737656464646438303234303064366161636263313466323734376531393830303166303331 +65383639636533333866306135383862326366616434343430623537623464383935396363393865 +38303030366538373464633737313464636334373331646130373363323738393332346466633336 +38306261656366323862383462353034396330373265393733303763386133393730626231633036 +34396139386436393637343665613539373939386566333539366538393638663539666337373966 +61343832656166633164323763623364323039323637303333623536636664396135323532373130 +30333162323338306430386439333133356530373464336537656466666661326538333265303662 +36303734666235353339313864383933653031303632363132333061666563643863343231343331 +64643838363538666137333465313738353932663834373336643062653033313734326636353033 +61653637393036363962346564373535326361343634303731373032663431386136323432366337 +39376264393731326137626331316333353134323464313165626266316631313461356461666662 +32303238616464643932626466393164343161613163363563653335323364663631336464666565 +34653363643465643663623138303736646663613666633335323630396336633761363839616235 +31313334663631633839346162346665656335396262306636613635333165383966613161633432 +61643438346537353031666436646432313935343734663331643663306562363632323130656133 +35663434373131643932323162323537656135316432306539366362626232373035653666326561 +65393766376262306661323436643232346437336630316365366562316164306565303135363132 +62323536353230623032363436643962643163363439333235336266393966636338643630653238 +38303665636264623237303863353964626239623566646534626539393338663332623533353835 +34373064346132313530373237393939613136613863616162306161333462636439396366346134 +66313437323165646464663231363339323639366531393161353461636139303439373932643035 +63656161366663316430396539383931373261373039663362393133343162346230306336313765 +64373866656634376462633134653136373435386235333939353563333838393534306433383762 +64323764386137313033613361376337396566386338366661303862393438663161396433343762 +37643237643965633664316564663530376535383535656339313730643030323663343764303631 +65383138326464616562303463323934613530663161366163313830343230386235626237386336 +65656538313138353663663230623461393666623265666638613636313730643530303333323963 +61333465363139336231326134326264326432303233303433393035613932653035343066616161 +36646434653234303836336234666665396136313466373433346533666563623138616538316238 +66346164343330336339383866363537616563373364393766623434643239616230353732623962 +35333735316432376230663632613061363433666464663930326665356532303362323461643435 +32363333343562646430353632613439633735383032393235623762656638396231623265363433 +65353731656238396332353365646462656266613965663937616133666431303439666334373238 +37323931373637653730393532633863393738623562353535376463636338323365323663323633 +37313161366562383633613931303265363564663634363063336534353864353332663364386131 +64646436643439623063336166636461663634306137653562343266613536316239306133306531 +36336261643764646230333864623130643839323463323261633735326634346465323731356430 +37663236383535613366636638373436653433353862356333373034353133623932373538313732 +63613661616563336164356230633031626633353364626636623738343333393663363063643230 +37646135383738633762643939366233306334323765636637613336373963346537383565323662 +34323961356164616334613737633733366534656564663961343061333666303362393765313462 +35633133386136373663666438393964616436383062623233343932653136393836663966633661 +31653764623132366437356532313835336561663432376139653731333131666438373863356532 +33613833323930393330623562663338623565343161626332666538313431363539333662633264 +32633662623133316264346566323334626535323861633562626462626561633236633462626464 +39613231623731653034333734646339336431393631363937353238623336313634333936346636 +62383066633731656135396339326665366165653032306336303034303839323138653965303863 +61623466333731363439363938343564316434643930623836386537316337653937376437356430 +32663330396239393761646630383333316638353433613139663037636434353833386665303934 +31306633306637333966326436663434663132633030313763623638343130343731316533336462 +38383430316264393133633661356239353331373831613662333938343738323161346665373764 +32653933316561316634383163326562313433666262383038373965653230616239653030346331 +37316436343232613134383966656437383238333932313435316539316538313034646539336633 +37666633376264343731643031396564333561613835373231623264646264616164643266333163 +62653162633433613630626137326635306235313334663065343332653566333535303737333363 +39343534313830303562646361316165343535656233343066633935613839393935343563366162 +33643262343331633430363434656233633332343061636464393564393232633063653132663231 +64626664396561333234326362373231333930643735356166363761356535396638666232316462 +66353633383263336661376432316134346338373738383061663838653437616561346263373337 +61656261656164363435396464306362323931353461653439373835373931313539363465353461 +64316131306562636265653561336263326638373536353239616363626436356337623265363162 +66376438633134303966626262353831393337653462616565346461363231663337363230353430 +63336161306164613735663539386664633864363933626331333765653366346530396632643730 +38666165303431623463353130616566363864333136363861643436356661653731643938373135 +31386362633761303234383236626430323161323034343934616661343033363766333538626466 +64316563613834326464326634323362353964373337636361316363313263383936353237376530 +36643864666266323133616364396661333132633661623861386237616337383562376334323833 +32383561613538383839366165343362366534616337626431383035616562396461643432376161 +38323065633736666434633364643738323764373336633363663633616162383336313865343432 +37623163366161396535613836376464663138343531386135303831386639336437626536646261 +61663133333161393335613065343130376432363063393438303638646364333338386434363733 +35303237653266643636663164343736663732653836626335636436313534356662346232306235 +35663765346263313834666361613632343336633333323639633364386262346663613835653466 +37386464613739323462633335663031376166613033626561666135353336326262326132316462 +33316635616336623830313163303933623861346665633331306234323664643139363632366463 +36326133376136663764643836643130326631636532623331376461376561356234343133323066 +37616433373732383233313233366235646632306335326639623932633731323430363034663530 +39393063343131373462343738303134633839313961383962643238336435623132346638346132 +63383463663530326231636538666161396262653663376231336639343039393438393866373837 +39303239306633343261363930376139353838636536306435356564373639343337646436313533 +65366232393838663865623038386439636464376530363234613134373439383363313166363335 +30373739626562343835613538643838383263303739363765313337396466663134326630306562 +66666563616461636230383932323936366137386134353031366334393831343935636530333339 +62633034616230343166303834333562653539383166363361376533333066633230633439386633 +37376366376165663365653662616134666334653363333162303330393736333465366562626365 +30666334643262623061623266313962326566323861333132623765333530626434303633666237 +39663066613330333632303963353638653939626236363637643433313537353635323739346464 +39623933623839303466613332303561616263346630613135326234343936393537303135646465 +66336534623439646131643835343639363731313064653232396461616466636261343738313237 +34373836396264616364643833383066636337613762393433323266353838613534333232303438 +63653435333539326639636335376335663638343137303533333764373339373430313331326164 +32343566333136303530313735626331346436306233373130343661623862316332646366316366 +61303832343634343131363238373230366466636639656130663264666636303166663030633636 +36653663326633313436623833316131316530346533653938663862613034313866653765373533 +33343134356435373166326330363736663164393335393535346432666631386532336565386232 +65626463666562623030333639366239393839393934656438613639636539633031616666373262 +33396431626234326639326161303838323636343930633839343062336430353566353266643661 +62626334626233616433363135623164353834373466653435346130353464366265633766623264 +35653737336563333738373265373666303563643638633335376366313362376439636561353063 +32653964313135653965333161656138316630373763303536633336323634316530383630633065 +39303461343137373961386439366561633962626634363530666435313231333630356430633264 +34343063666634353565313034383361633333346532626436663565396539613734383462393437 +65393839343366373163623031303338313539393565353333316265343434303833653661366166 +61656234633733663462666233613131653539303764383062306464383065363231616366336463 +35643932643561313032633933363564653863663532613435303432373032343835646332663534 +32383566356436336664663831653535643237326239613761333266333166373563666238383830 +63623332376465303565313932393830313235613761323336643163396631646661646337616538 +30663362336165613363336435356134353436356430636263303034623839386339343039636334 +33623335613239376339366432316631336637633839366562666332346538356265323630353665 +32646139346564303632616435663863383361393939393538323061656534623864623337303138 +38356239363836393339363339653733306635636561623064616431346537646633396232376137 +62666433313162336339666364656663663138343430316337396330316433626337363032653339 +32306539303037353231653764303761626330383538363961633838373230303731313135613563 +63366533363363323836633630313238363362316261633036373561333535323138653937393365 +66393966323430373536633666383333393433666334663261623332666238353738313866306438 +35373135363931613338386334393137636461646666626631636634333539356336343162636133 +66313931313433323633373964323935623433386331313734393136356535353238626230353132 +65313864306133656462613138633434323764656562646235343032396136323737303334323733 +30356235643731353439643463353139626134376361396130373737616662613565323266333766 +63376636316336363932393638303733383961326364313731366531613537393366386634653538 +33346635626163383532396639663239383163333863663635306239303731656338636465336432 +31323165633233383433643761663766633663363137316636626662323561356439353262663235 +34383838613530396532333261636434396338376463323638313430303737396635643866313663 +65626430333336376363313838643836383535643930323661323537643562653234383131346165 +34316463393630353130336466663737356638663537373632346566373566626364646139313263 +64393962633833393963336137376331323664653931613930323539613365343737373862353434 +30393338316236323433653330303363633037353466323461336631346162646637643635663762 +65616630343833393461633164636361326335353865623065636565633933373838386364666164 +66626366373635353462643633656436646434663066343364616663303664383033306237386233 +39613035306463363934616230343365303738653934623961353837366238303061316533616162 +32326638346231353239353035656365356137633831396635346664313736643766336539356165 +66353462366666613438613465306333386532663064643535366566363837313463323661336434 +63313831656632643865633164666538653437316132393334383238313832326130623463306135 +35623861323834303932383030636231666437613131643838376230353763353363363834353934 +37333536393932336639343635303535356463633834636431313135336130313362643266626265 +33333736333434663338313664356265303863316334363330636334396336306434646131393734 +63633633386639653030393935373766323137613561613635646237366232333331323836616463 +61363130636233663832336133646631363438366465343965666364646665636538666330373531 +65363164393866316439343838653266373965636137633961323465626630656138356131333131 +39623630633036353934393734636362386462353933306364343230616233303766313063633264 +37646535336362656666386131346235316134633834343630633066333431613732663535303631 +63656664646362393063333039646134396565346263616530613862313231383738633235303461 +37653934626538633139663461313261343830383962666330306632653936343133643634373962 +35333034326635633065353862316266333837326530643963663538366161613635653065366130 +30386666386236306230663236353762363737343461663661356236656432623065386562393034 +66396366316164656563323761633830623166356230333962666133613531633633376139336137 +63383636633463653066353438343064356366393032303936393533343737613464666533306265 +64333730386334363737613132313931636133383566316563333338336132656563356435663964 +63643333643833393238653964393064376336666161376236623466666530323232333733616634 +30373333633262663038626335656666613161303838643666383564663938636238393865333461 +66396663376433646235363935366130313130636562646162643863653066623639636266396662 +30393762666234346635666662326634646266653833326331306436623938356238353434363066 +35623162353665326337623237386130333735333735363039323133376539666465343162316233 +30363165336464373332316565663937613631336330383962393432616531393839666639303132 +33386334623334636232623366636639356161323334366363623931303932376438303039653865 +3237323765376564393231313863313439643235383134313463 diff --git a/roles/vm/templates/yaml_host.j2 b/roles/vm/templates/yaml_host.j2 new file mode 100644 index 0000000..f3051cb --- /dev/null +++ b/roles/vm/templates/yaml_host.j2 @@ -0,0 +1,101 @@ +version: "3.0" + +# master: {{ vm_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +# +# stack: x-host +# + +services: + + x-host: + + logging: + driver: loki + options: + loki-url: "http://${MASTER_HOST}:${VM_PORT_LOKI}/loki/api/v1/push" + loki-retries: "2" + loki-max-backoff: 800ms + loki-timeout: 1s + loki-batch-wait: 60s + loki-batch-size: "2097152" + no-file: "false" + keep-file: "true" + max-size: "512m" + max-file: "8" + + restart: unless-stopped + stop_grace_period: 5s + stdin_open: true + tty: true + + user: ${VM_USER}:${VM_GROUP} + + privileged: false + + security_opt: + - no-new-privileges=true + + cap_drop: + - ALL + + cap_add: + - KILL + + ipc: "private" + + dns: + - 1.1.1.1 + - 8.8.8.8 + - 1.0.0.1 + - 8.8.4.4 + + extra_hosts: +{% include 'yaml_hosts_extra.j2' %} + + healthcheck: + interval: 60s + timeout: 10s + retries: 5 + start_period: 60s + + environment: + TZ: "{{ vm_timezone }}" + PUID: {{ vm_puid }} + PGID: {{ vm_pgid }} + DOCKER_HOST: "tcp://${VM_HOST}:${VM_PORT_DOCKERPROXY}" + + labels: + com.centurylinklabs.watchtower.enable: true + logging: "promtail" + com.vm.versionning: "${VM_VERSIONNING}" + com.stack.owner: "{{ vm_stack_owner }}" + com.stack.owner.email: "{{ vm_stack_email }}" + com.stack.owner.url: "{{ vm_stack_website }}" + com.stack.name: "common" + com.stack.service.name: "common" + traefik.docker.network: {{ vm_docker_traefik_network }} + + ulimits: + nproc: 65535 + nofile: + soft: 20000 + hard: 40000 + + deploy: + resources: + limits: + cpus: "{{ vm_resources_cpu }}" + memory: {{ vm_resources_memory }} + pids: {{ vm_resources_pid }} + + tmpfs: + - /tmp:rw,noexec,nosuid,size={{ vm_resources_tmpfs }} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /opt/docker/ssl:/ssl:ro + - /proc/cgroups:/cgroup:rw diff --git a/roles/vm/templates/yaml_vpn.j2 b/roles/vm/templates/yaml_vpn.j2 new file mode 100644 index 0000000..58eb7bf --- /dev/null +++ b/roles/vm/templates/yaml_vpn.j2 @@ -0,0 +1,92 @@ +version: "3.0" + +# master: {{ vm_mastering }} +# edited: 2023-09-25 +# updated: {{ ansible_date_time.date }} + +# +# stack: x-vpn +# + +services: + + x-vpn: + + logging: + driver: loki + options: + loki-url: "http://${MASTER_HOST}:${VM_PORT_LOKI}/loki/api/v1/push" + loki-retries: "2" + loki-max-backoff: 800ms + loki-timeout: 1s + loki-batch-wait: 60s + loki-batch-size: "2097152" + no-file: "false" + keep-file: "true" + max-size: "512m" + max-file: "8" + + restart: unless-stopped + stop_grace_period: 5s + stdin_open: true + tty: true + + user: ${VM_USER}:${VM_GROUP} + + privileged: false + + security_opt: + - no-new-privileges=true + + cap_drop: + - ALL + + cap_add: + - KILL + + ipc: "private" + + healthcheck: + interval: 60s + timeout: 10s + retries: 5 + start_period: 60s + + environment: + TZ: "Europe/Paris" + PUID: 1000 + PGID: 1000 + DOCKER_HOST: "tcp://${VM_HOST}:${VM_PORT_DOCKERPROXY}" + + labels: + com.centurylinklabs.watchtower.enable: true + logging: "promtail" + com.vm.versionning: "${VM_VERSIONNING}" + com.stack.owner: "Olivier Le Bris" + com.stack.owner.email: "tech@zogg.fr" + com.stack.owner.url: "https://zogg.fr" + com.stack.name: "common" + com.stack.service.name: "common" + traefik.docker.network: traefik + + ulimits: + nproc: 65535 + nofile: + soft: 20000 + hard: 40000 + + deploy: + resources: + limits: + cpus: "0.50" + memory: 64M + pids: 64 + + tmpfs: + - /tmp:rw,noexec,nosuid,size=64M + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /opt/docker/ssl:/ssl:ro + - /proc/cgroups:/cgroup:rw diff --git a/roles/vm/vars/main.yml b/roles/vm/vars/main.yml new file mode 100644 index 0000000..532bbd7 --- /dev/null +++ b/roles/vm/vars/main.yml @@ -0,0 +1,14 @@ +# 2023-09-25 +# Vars: main +--- + +task_enable_all: true +task_enable_vm: true + + + +# +# mastering date +# + +vm_mastering: "{{ mastering_vm | default('2023-09-25') }}" diff --git a/roles/vm/vars/vault/domain.yml b/roles/vm/vars/vault/domain.yml new file mode 100644 index 0000000..dda1a7b --- /dev/null +++ b/roles/vm/vars/vault/domain.yml @@ -0,0 +1,29 @@ +$ANSIBLE_VAULT;1.1;AES256 +61353966383235306535343537303130633934353864333066613430633736626433633036623263 +3934626463643732643931633030386534383330386631320a643863313139333836613762366536 +65313364623633396563383533666237393663393835613765383233396138393666313263656134 +6330333333376363330a616235333263623863653765363739343465663466326661653039623663 +31386663353965393438646530656539653435303138306539306132313837333261346636376439 +38633863666637393339363962633033663430376530313439633963393462663365313531363965 +30646532373765376137656465666165623562623662306138303435373035346231343636386534 +38643230623531626565643737313465643966656233343962363935656134313838333063376166 +31316239643935616434613064353739363863633835303365353263646339333838323135643965 +61653734333462616634356433303061653531656262316230316433333235346230666163353265 +30353836656137643031313066323563383934356266363230653833353838366137643036393132 +61346536633035653136343430666637353236336637353566663438323939633739306132306661 +30346638396532613733306130393732636566663232303237363530323565376663613230613231 +61313563396633653339613138343731366233356638653238643730633035626561323566326533 +36393438663938366131306238656332303736663739653166333365653434623138306164653164 +65363962343361346539356166336561353863373265313139343861633630613630613930353562 +34363561636161306335316561636166666334643436383636313234313634363663663935366564 +61376637396366313737353335376136313333636437363333623937386437613734353436356462 +66333162336637393264313061333463656338353237333437656232366537373936353664363434 +33366135643031393239333364653664383839656265346130323663303631376164353530303065 +31393530363030643536313463346634363130363438343562303632393764313233346165333834 +35613563623366636639343030343664666134393234303431613261313962363863323238646666 +63323833343966333031313037366231323635636634396537303261376165386661383237353130 +32326461303532626664656535666461396536636434303732363764313166363962663262643731 +38366139343436613834313730613661363538653864323965393330353436373263623065333239 +32346437326633663635336336633234383036373331386637353262626534653663306364643761 +35363433333662343962343732663862393062373433323739313432366463313134666661633231 +61363130613139613532 diff --git a/roles/vm/vars/vault/ports.yml b/roles/vm/vars/vault/ports.yml new file mode 100644 index 0000000..0f0dbe0 --- /dev/null +++ b/roles/vm/vars/vault/ports.yml @@ -0,0 +1,313 @@ +$ANSIBLE_VAULT;1.1;AES256 +37643638306634396665366539303162363834336565613535336632356132663962326230396262 +3333623961616234636131653338333037393537663834300a656430366663313836333732353033 +65623064653962376338303531303362363564633164316365366638383035383436336262306534 +6430323134646537380a643563626235366536633263633764373032393661303837333666386566 +31313237643462343666353261623839653339613964383831346462336362363830326663646433 +63646562616639343538376162333662373139666334663032343064383733316262393332313237 +34393863333763646630626662326634316439313461363732396265623937643865393436323832 +34363736303136326332666538663531663462316631346132393266366361396338356138373533 +37633663343566326433633838643832376561613763316139633762306331663963343562666565 +32343032643337656338653162343365306138323234336461343133643264656662363833363766 +63663637356165336136353062636235633037386364643363333333663536653131626462313239 +34643630666363386131353561636232303733633534363466643266636463363235353065343738 +39616538656263646266656435386132663933623638326139336639636166386166376261393666 +32636338663130366232333435666238346236363536363431373163306566383831623230666533 +33323637313165373233353733326138393231353438626237336666306239336331363032396132 +61653034646466613239626266633134346363663534343631626632333838663432323437306437 +61373832343138303132363435386361346663306664303237633530326234306562663337636638 +35393739383565353335303163386138623131393762333431623736383531303161616139373233 +37633762316638323339356165346138633932346361636532396466356634333562346634633761 +30346661363061396164383538343930373263666438353536666435383534323364623730663666 +39303232623061663363393430303235393633653937626462373032613062386664633533613963 +62306163303635646661363332326464363666313631666266366631363163356562396366323832 +31636132613361356634616566303934666134663531646139363436616636646637383163623933 +36613763306566666136323739326232656564303038386336656132666466633962653866336435 +35363030316563313034336238346666666634383530643234363532656130643038623732343663 +63353332666435386363633563333434333036613965623638333933656430666639303737373939 +38626539356565636637343665366566366231643439623735633635616266333331353737626536 +32363634663764626433323730353334333664633332323462373734653136366362343061633836 +64336337643962303033306265336561636537643662333137613931366538323836323531333165 +62623961373436663063396463323661656234313937623137333461643138383435326237306136 +32666464343731383932643861333732653266363434333138363465666563333862363864346530 +30643634613462633536396231623732393536653966623234303231336638636331336633343132 +64633739626236636361393734393964663862333033623965356465336536316137343132663863 +61643431656465343334633336626333323263393264393530623130343331653434666638653762 +39343338613537666230653837613562383030643765333034353234393265373936313939396533 +61646531356639393937326235316333303736356363383964663432656631663532623063366131 +30343133666266613261346337346538643139663337376439343338653733623933313765653432 +33613736313637623836303236336565613131393761316633373939336430646138346634626131 +37393130646336373536323561663032643138623932366264313938326163623938373266373831 +34316638383432316433346337626430353665616130646534616535633937383766343964373435 +62643164333234663237666361373037646564613866643430323961653338356465313564633732 +34376536643831376461653136356262633637353665343037653334386632656236636236333862 +30613431653761666436383932666637353436373335333161393031306162396535353635343338 +39303334323338336537633931663437306163336437316631623334376632366461636635363331 +39353033323432623732396464393935643939333337326261376632343766383535623731383538 +37333365313361353730663433636432643533303038323639633366613837633064383036663663 +39383538393535643533333035373164336330646431656334616436383562353065323137353065 +31666637643861623133633364633961343931376264653530393637396164643435613166663962 +37636466633361303135643634643736373233633738323262656533333165353766326231306562 +31386366353438666336346339396136643962396633653261363437303762636133313031373563 +34343561353461383936623739353232613832666333663134633363383735663061373133376539 +64386232373164393537383166643536663464616162323639613664346236363361333461633339 +37383231636136613939393736666364663265383863303538343735646562313238663539326435 +37376331303332646665663237313934303231326465633062303438396339376633366432326165 +38313336383836616538386461303931323135386363383361633436613136303935336566666134 +31393030303764383839323534366139613261623863383236663663316634363234633466303464 +33653639333236633163373238656330613633633035613161633966326135303539666332396133 +65386666393766353665326239336130643139633633393863333936326539306430613738653336 +39393836326434633863323338343335306166313130346635646639636338396166633535363039 +62346333386537656531343362346234653833616236653066343563323839353937663334353739 +33393466393862646565333066613261666630356166663762383163616265393135346561613064 +66393837663065353665366164333236363065393862346564613466653766653761396136313962 +65383761613838626365386230316135616162626534616266376432326664613330623135376635 +36383663333130656635303362643233646630666362373662393733663238366132303164366266 +35323765363162333465623739366261326335376138326339613932633432363634316663313462 +65313939653833663933663463326264646136386235653961333863306336316262623661363162 +35653166363132363434353836313065643035336632343532346438343831363336313537346261 +63303364346461396138653162623737623764633962396131323138656464626266643530623466 +64353362663162643966376638626462353239383164383731316665626639626432386437363930 +64343337633236653734323136373634656430616364306561323665643336323963343831316162 +35396564613730373965316564653739643766663136313835383538323639346161326634643534 +65323464376137613632396633363332356437373361386630353862376531383064343131656530 +37616263313966333338373332613735613832333238653631626639656137393361333539663436 +35623138383264376530643832353632313963333161396231393630376166623765646437346664 +31343339613932316437373034393738366336356632343361303661613265313639346532653361 +61383135643730383835653266323461373130353535633234333066343463363935663733663537 +32636539666337363864646265326361386330313961616462336537653531323533323263363432 +39396432656138626364313366396230396437333831303331313635666231666264353637346361 +36383739316663636163623438633537333665323037323037343136636132313364613431653061 +33623638343366393732663464653561346162333136366339656262356533303331626263336661 +32616434613530336437343832656333373733303037343064656263363564313564666131356430 +64616261343139626438343762383237666436333739303731386338343864626562333637386332 +62666138633036336365376236386332386665373763653764373837356566646635373565353332 +66663335336430323566336462643637363334653632616233623663393561306432633933656330 +34343166666163643834313363396636636637663035353564346534323832613162323361396336 +65646135333534666232363837666336643964323063313330323736623164343361383563333139 +37393863666362373938333161383631623462633662353533323037383237393961346631346537 +38386135363935383339373063393836396331333337316235346230303837366561626538373261 +31323262626664663263393864306665356661653230653535613466613463393463663534333533 +38653639656362643163363833363335393264663639393932396338643036666336663138626630 +64636338346637333865303434313534346239373137383064653436316663383464346661616231 +36616333633262633862643135653133326432326161333561333565383664663230383265303836 +62373335303335316430326439343234316166623965663932396663363539333430373264376133 +63663739653735613734383539633235363639393536333963663864643839663533326539643836 +65616661653662653261396332363264383565633661653661663030623935396438316261663731 +32303761356637663364333637303236363066623662373736353762623562636163646131656637 +65333363396362393365616563663533623136663530616462336263316238376661633239366434 +37626265333862313634373836393336313831653636326437353938373732353563623766323962 +65316266633634613931643235383030323165393863613839343333613436633032393539663332 +64653264323762356231356138303233626238333039336261643664666464383135653563353262 +66366230346335663663316265306532613230326333323535323134353635323032613064343035 +65333139376162663563613063333637386130653265313365363230626635386138393230356533 +31313665363866373733636235366231613861343530383231646165663838643163373230613865 +32393933376135623938373461333637633765346264663064373166323839393662346336356463 +39623939343562653461366231353739323664313434316266383935633834323062373166653136 +64646536396566393138356136616335343337336333333666373131666532663338346132383732 +37663564383438333231613836356436623931613832643364316530343665363934346363383030 +39393734343231626431666138656566373037333233666463376262343539366264616234353464 +35356531323834396634386331356231326364656139626662323430613937626266323830343238 +65313536336538643839346561663337373039326138373430636130376135376466306331393737 +36343663373236373734373766326330663130643365623534613535666132363162616564636465 +39346562363935623736623366353535343966373034353035613331333939623563636633646230 +39643735346632663965643337373439393863313064623662643938343266663633323061633232 +35643837363262613932366535393230363461366363656330616663373431383138626139636333 +30333738633361666638353463633261653839663631616265343463666337323935633935313635 +31623764363739336430326464663639626533666230303537313862623231316133613037616238 +65626166323136626264616130326634616636316338336663306561636164663536366363373933 +65343463663635656334326538386636666338363430383633393330363638393633303231393338 +65636635306362336162333366343239656436613434316132613935333133326136636438313930 +32626164613662313764323339316161643763656437643137346433636263643632643165386236 +39663261363431336138663535626233356633326230386666633065333264633237323363343737 +62636233616533623536393230636165363938386662323266356264633836366137343737636332 +34663831333334313831366131396630333366393037626138623363363561633836363536623332 +61396539306131343864393236363932396231383333303236333635356639326231626134353532 +35366633396131343466346664633465363933343139313333313031363838363235343531316336 +39356238386637373563373438333539653035643233333264313062373432643663333763353733 +63313432373633363736643161646232306366383935653133376166383638343233316161656666 +32383964376262633961353263356631626638333764623137633032636665666432366134396264 +66643861326332336461366163353839333531343833646433333465393663353363333139393732 +37313737323566346631626164653536393664623036376233393438326530386638663933326436 +63653839623133326532323634323838383165636535353333613331653566646234613035373232 +66623064386537623631323630303733346138333238393633313132383038316237353534636636 +65346135373933663830303831616662663139636339623762666161613637323066333833316433 +35376564333033346332666366636334326633376332333662323231613362343034373264643834 +39633935356637396364626666633461663137353736616463373735666461636437393363363730 +62333435343561616434353063336465343637336662366139306232623832333433383333643663 +35303530316464366234356335663438326135626661643634313338636235343339376139363461 +39653266666665396365616431333831643338663061653364373631383034633631303330323661 +64393761303764356633333435343266623165306638396437646663623739316430366563383035 +66366665396562316637306661363265616235623731613663356334373135363765353933613636 +63343830376138313464343466663936323961613864383130346266613931393038613139633138 +34303933373032666666373835386465333532643662623039303131323433633135373464633638 +65306330666562613966346465316635366433346331356362653939656666386630326265653636 +66366461626562316362626663353261383333373964383562333165363437623034373438616161 +64616630616135343861383336656463343830623837333761306532623262666233393330353562 +36313762306338326164343539393430653837373031343531326133323234326636643438666439 +66303038643764323261393131383833633231353031396465666130613865323963323864623030 +32643438343030373735653863323263653936663335303031363131333565306136623237393262 +61313936386462643834393661303539313735363462396132616262386338373833306666626164 +32323539363039326534616637303935646230623636303135376630616230323239313332633865 +62333435346438366230303462383633656337306433323166303231613438613034666366626131 +63373137356634333431343964666630366562346130623965643931636530366530643932643261 +32633233383234373032313133653339393064333733366636643333376232626134323264633732 +33623332323434393833643738313337373266643931386462343138626332663234353633363736 +38356161666535623139343030383763613262613730636264306235663064623039333830326338 +36366634366266343134613265373862626238333234353466636165663264613732626365356539 +32653138353463633766303739636164633837303331656566333731383835623062373861623862 +37626633326266623638386165333763313237366166623034663266663066396334303165373233 +62393230346562373163383161653665353833343634346238613163353362353033323935336534 +36356237646132393562376434323938356433323866633831633961343736393762363062366465 +30646263626164333131353263316364616339363362353536323630383835313937643733663764 +61656133333631663766396562366537386231326431386436366562356538623537336664623364 +35333533376234336337376233313361623666633538396234393438623739363239326561343061 +61356634666265396534353337393331636463336563326531643135336339373037616637356536 +62663737346436393035666539643835336131663937363730343237386336623136613638666437 +32386633633036653035313339353361616365343866616435643263393538353732306436626436 +36333564316365366131373139333635383561383163376565353930323662663230346531383031 +31393732323531653366653739626336323434616233303635363837653234393735646663643439 +36376465336635316337343863613162303766303435383662643430343337363430633239323361 +61663464333165363763623238623331303433373438386530626530626632396238626636313830 +33623732373061393662333761643066356266306536636331666164623764303361366163363433 +63326136343432393234636363356239343739663863653234356334346466383038393763653638 +31633837636538643533343733316663313832366665666135616133303934383537366439636531 +36666534666465306562393135323762356438653837323664656365386139333136613836303861 +65663534643934666239366432393730646564376233363662353161663738313532316264356239 +37306139383666346130373130396364643737393863393533376238326631343634336565333561 +65633133376634636362346334363831653639363139643330353864303337616265616664396366 +63646166346537306134383139666631393033626339316137363661383162323865336233303062 +35323565363866316665333737326235643733616637326332343636613737326165636532323430 +35363934623135343061643466353734333631363731373435663937396165323136663164633131 +62336433303333666335653966303330343964383837366238353132323735303364663736613866 +35353131613937396430653331303766643532616362333365646631336264663633343339643133 +39303361303664383562646432326331313736633938613462306436333866643864363539653166 +38383633386165666365323330373165336264343766656635333731386565616262393532623165 +39356461643761326165366337353165613734363634333363636632336262663638633535313537 +63626563326231333630303365386132363837353366396631386436646334633263643239333833 +32333533396238396561663266613532646439373764616236306338353762646138323634376233 +33363362326664626531626162336365333238333036663838626337323735303166383532646261 +38363961653939323735313163653434666462656633313665623931393565393865323663323834 +30396263366662396137393064386132373265646563656531383335613731616161316437666134 +65363634646365653162333336396332666637313566313936643064623266343130666535393734 +31633738646239353937623364373162376335646137376563303935633830616138376366396265 +64636661363566313366323633393363326364383239343031346364333434666434343636316138 +33376661383932636561663561393839633331386361616131363535646663383163363538656166 +36316638646233393433376430366565353438316563666261333861323066333665616561616335 +64306433343836376139346433666163623232636266343335396233663036653334626164333464 +62333035333036326338626131643064613734303530326334386437316365373262353137646133 +63313166663362663439396466623432383762386336663738373237383462656663363236613534 +36663139653961383234643363333663613630636639386561326639303936386530363961653236 +65393364356464656561363764633038643231396563353464653262636465633962373466303238 +36633031633065393233336631663762643036393765383166376436636234326166623338626133 +62383734663063666366363735616561633834303563623565333464383861373533353734353533 +32623264356237393565633530386438366330383733646530653834306464616132663535363262 +36326432636330376338633063303133336361313166313462396432343538393938623665653034 +65613863393261663732353638323533323637623437656337313330333731306334623334366235 +65663832353562626639306335336136663938656131373464353733346162666638626235363763 +30326430303932346533616230323730366538386537623539363961626330373464653530313332 +37346539613765326266623730306530333339323831663030643038373039653739643838306463 +34326662306135366363653030303266396237303535656232323333326262303233343162616464 +39656362623563363235346264343239313563303231333632613464336665613635353033663038 +37663630363030396563353531333237646530633933313330386632633938363735626537653433 +31623439323061383936646563366330303730353865636438346538653737616366646538653865 +61623964633065663433636439633736326233643661636231366165663833653039653064323665 +63356666346431626138326230656336666339636432383739663864383039363137326564326432 +64333631376566396461323261373066363265656262306333383234336666623364636436643865 +65353836386330393164383337643831373663333835333336373732316133653738646433613062 +38616564646565336130656563323434326138633637303962303539333135613733343561336164 +36373036346230633539613433303032663937303466343039643966313763396137613163646437 +32313937396337363665643936663435333562373339663765646666376336373731393165363634 +37656366626666623366323434326462666130633030636330346461663563383439363164653438 +33653634613866313932383964386363346436353935646636636339343731353136346461633566 +32356138333362396464303234373332663632343666346161623330663665616135653838323134 +32643434333361623339316663356264646437323835373935353531633533386433363038616638 +32386632643631383966643863356166326535396330376230623839643161616366323430616538 +35333661633363613938373763636462643866306134306630363732333031653534313832373766 +64633139643864643166623934313839346130333265333465643831383637666536663262633233 +35663335633661323865376565393334356531663232326638643961383532393065303466343531 +30616165643762373538336430616233616435393634626138346564386630323133373562353932 +35343833386331383865333133616138343262666562393062646539666263623732663261333562 +61313639666563333731613464356533366534633937356263346333633437373132373663333731 +38363334653936336462626535333435656462656332363737353834343934613331323739666566 +63386436643666386133353536646262343238363834323838613930663335316533333766366533 +37396532353636383363613631636562383961366333316334386364306233303838326632666566 +31303932343232306166353538396535343835343936663738353838303465333233376530313137 +61306537383634396330313262653139316466656561633734653739323632313237323431663132 +39646462346238333663316362626565393261366132386362313432366630666262653061653064 +37326366346537643562333034303630386166663764343261663239633538346635326132356130 +38326338663933353130383961326461313265663165376462343162353535366135373962353135 +62626366666265643934366361653534633464363430383232373065393533333838303463336466 +32373839396361353866393738363966333932373938613265623439353661653964353039383962 +33653137326337346638373237396565346537343637356137636266616661656532636339396533 +32313737653063623365336263366135333764376631323165646364356534313936623064306137 +63323237373465353862643932393764653465653535643063623433306531383431323533353931 +63643661303636333035623566346365313233386631383537643037343733346435623066383333 +61323534613330323362656633353163353835336263636231316434613665313763656162623762 +31396262356366356439323431626666653763663331343934633661663864663265666631656132 +62343930343165336635366138333334396461633131373038353235313234343939653830653062 +34316134316338323063323432366139306435393930383932376132653765613663346237386363 +62303634643361323964323566373639616131633738343131383139636236313166653964333137 +37663565613837646231343032653138613537343165383236393666613339643065333863333439 +36666633363066313433343661373762383762613939303333633963373338303266623736613336 +62353961316635373666356562393964623237636464646435323237373333646433363966313362 +39346538303637623666303235346639626363636361336465623635663362626432353132333663 +65373439306430663430373037356431653164616166313330666133363065393062613632396434 +30393164343163336264383866393334306335656236363661343132343837326535366638653832 +62333130366130333532373731306362313366383032326439383133323033333437356234343332 +38626565386339323537373239396262333933616166356530313937666362636639383231353933 +38393666663731623561626238643537396339373634623161663931636465346235303364343434 +64343731386336636265343339326137383439656636383133336137366665376361656138353465 +64366534376431616664633235333633666232303261613732666438613464363361346262333238 +30323263313237393961323565316463633134653733636264656630643261626435316531633366 +31383762383139656338666135636530643331653134336532333164373535353764306662646632 +61363339616335396536623362383834363366393962663962666433326234353564363530643331 +34326562386338326561373965393261306162376562353762386433306631613333666532363233 +33613835306130376530623934613431363532636561363261393539366461666361366663313965 +32313061373564656333653266303062343234366534303136663032626632626430383536363635 +34313062613463313461326430393534636132636235626666653830633335306465343137333666 +39333537396336386135613666653566346464363066346465396332343366303133336230366164 +64613531636139643439346161333634623438316439333931393031356537316134656231643338 +35356666343833336135383763313730653830376330623666653331356232663761316163346432 +63613935666430663362316236646238333933663234666139623861333835636231363933633666 +37376563656237323939333834356534323431376238636237326561663431383063616138333163 +39313739666663396536626339333565303065323830313137363037623461346662396535333734 +34383764373034376666656261393536383635323838613865666461386361393662373831626534 +31393735323463313134326631643936333466343134613933616435623130656266633732643734 +64353134616162663135346361643461663136386638626463303138303839623263303937613835 +34363130626334373831343066393536616166346436363839333931323330396234373130336566 +62356533353564373666333138336265653164376364336235653932363863623437656438396237 +61353030393064313162343365343932393533633763623936316265663234353034666134313561 +39616366313836636238343730626663383932346461396566323734386534633238313663376165 +64313738626631666633383835363232333561343535303632313538326235623862626431643964 +33303432373839646131646132306531396663373838633131656332643664343334376137653230 +65613434313139313865383264616238326331663634386536323465613432303630623364326161 +37353930653066366336636431653931333466323763306139643734616563326163653061616134 +35376465663934303163353562623162613863363532636637613762626433323932386566373832 +38383131333163613736373931616262353363313631336437633765666261373335613639633635 +33356639353432383866343932643666376161353536623535373738623463626562336432326364 +33316262393237613437626239666139343938666262386331353537653065393534326562316335 +38626537643161663633366163313464383232343365393437666430353132373131636261336137 +36376331623330663735323366643931636264333463613137383537393632663166306138383231 +63333138666561633837313166346461393463396666646663333937306136623037623761333338 +31633866316336323865363534376666333165316339646161396533316166653030396164653534 +30623465613232386366316136393430643163383533363336643934366139383061643066336437 +38333038346632653964656237326639623233363339626439646465626566333437306339626131 +65653435356461326330363137306137646234663363363430316134306264663537356432396237 +65613864633130643135316530613338353361623466313237313032366163333932323332626561 +39353633643864643663303463653633363266663034656138353463623635656465376562666266 +35393131393963643830326366303331646131336664663735333466376234643661386236616461 +61643834376566343438353939363835326633353534623537626131626136306538303864613364 +30616538626630396166393132306133643133306561396135313765356262346362353362616564 +64393566663734656431323565326233623330666336303630626137336561626533346630366531 +35346137636638353463323932396564653165393533343364313436396436313833353166373731 +32633435343432336633643963623764386230306637343832613633613833623361376435383766 +62336237336464323335383461306331643363393761373765376133306537366665613035636561 +39316563343431616266386135303634633132313432343430363430616439383335393534646364 +33386564623739323239326437373937653830356461613432663430613638316533623264353239 +37633333313238343237363731633237656137643436656132363966613335643166306132643538 +30613931326365616238303464656432333664636532666336363764663331313534363139363364 +31666566636432316139373637373437366566663131643633353730316238626237386432623336 +66616432373534326434613438663966646163656666343063363030623561323239623765326461 +36393637633935313431326663323531616665306162373261383966313038393132616466313538 +37303139383830643133 diff --git a/roles/vm/vars/vault/vm.yml b/roles/vm/vars/vault/vm.yml new file mode 100644 index 0000000..9eca0cc --- /dev/null +++ b/roles/vm/vars/vault/vm.yml @@ -0,0 +1,11 @@ +$ANSIBLE_VAULT;1.1;AES256 +65353035393530383161656337303732396239323936366661316531633130306533303961323661 +3965383136626362333838386138333034303766376139360a343038663133346561363636613161 +31306331623338666264623132663563356265323535653764623165623539363965646330306234 +6337343062343535620a366631363130616330626232343737386432623262396636646162656463 +39303839313461643365396261613666393065653231346237396164333734333561613163366362 +39346530323563333364316331343832623138303339643037373131653065323737333433366535 +65386362323232653935353561643066336334373937333332353435306331363265636265633638 +66643534383262653632396364326234656333623432303964333866386639383331666132643865 +30393435376662383635386264636538323236663832613633373635303865396266396161373561 +3135666134323834646432383663356163306433326133336430 diff --git a/roles/vm/vars/vm.yml b/roles/vm/vars/vm.yml new file mode 100644 index 0000000..d72ae3b --- /dev/null +++ b/roles/vm/vars/vm.yml @@ -0,0 +1,114 @@ +# 2023-09-25 +# Settings: vm +--- + + + +# +# directories +# + +vm_docker_root: "/opt/docker" +vm_include_folder: "_vm" +vm_template_root_vm: "{{ vm_docker_root }}/{{ vm_include_folder }}" +vm_template_scripts_root: "{{ vm_docker_root }}" +vm_docker_work: "/opt/work" +vm_docker_backups: "/opt/backups" + + + +# +# templates +# + +vm_template_hosts: hosts.j2 +vm_template_hosts_distribution: "/etc/hosts" + +vm_template_common: yaml_common.j2 +vm_template_common_name: "common.yml" + +vm_template_host: yaml_host.j2 +vm_template_host_name: "host.yml" + +vm_template_vpn: yaml_vpn.j2 +vm_template_vpn_name: "vpn.yml" + +vm_template_env: yaml_env.j2 +vm_template_env_name: ".env" + +vm_template_script_network: script_network.j2 +vm_template_script_network_name: "networks" + +vm_template_script_rights: script_rights.j2 +vm_template_script_rights_name: "rights" + +vm_template_script_stacks: script_stacks.j2 +vm_template_script_stacks_name: "stacks" + + + +# +# commons +# + +vm_master_name: "omoikane" +vm_main_name: "raijin" + + + +# +# environnment +# + +vm_timezone: "Europe/Paris" + +vm_puid: "1000" +vm_pgid: "1000" + +vm_stack_owner: "Olivier Le Bris" +vm_stack_email: "tech@zogg.fr" +vm_stack_website: "https://zogg.fr" + +vm_puidx: "911" +vm_pgidx: "911" + + + +# +# networks +# + +vm_docker_traefik_network: "traefik" +vm_docker_socketproxy_network: "dockerproxy" + + + +# +# ressources limits +# + +vm_resources_cpu: "0.50" +vm_resources_memory: "64M" +vm_resources_pid: "64" +vm_resources_tmpfs: "64M" + + + +# +# stacks +# + +vm_stack_excluded_template: "excluded_txt.j2" +vm_stack_excluded_template_name: "excluded.txt" + +vm_stack_selector_template: "selector_template.j2" +vm_stack_available: "available.{{ vm_template_script_stacks_name }}" +vm_stack_before: "before.{{ vm_template_script_stacks_name }}" +vm_stack_current: "services.{{ vm_template_script_stacks_name }}" +vm_stack_after: "after.{{ vm_template_script_stacks_name }}" +vm_stack_stop: "stop.{{ vm_template_script_stacks_name }}" +vm_stack_unitary: "unitary.{{ vm_template_script_stacks_name }}" +vm_stack_logfile: "{{ vm_template_script_stacks_name }}.log" +vm_stack_logpath: "/var/log" +vm_stack_backup_header: "vm_" +vm_stack_backup_common: "_docker_stack_"