In between commit development coporate design for flock.town

This commit is contained in:
Kevin Veen-Birkenbach 2025-02-19 20:46:14 +01:00
parent fce9c1a72d
commit fd5c10b103
26 changed files with 222 additions and 83 deletions

View File

@ -73,7 +73,7 @@ Contact me for more details:
## Showcases ## Showcases
The following list showcases the extensive range of solutions that CyMaIS incorporates, each playing a vital role in providing a comprehensive, efficient, and secure IT infrastructure setup: The following list showcases the extensive range of solutions that CyMaIS incorporates, each playing a vital role in providing a comprehensive, efficient, and secure IT infrastructure setup:
[ELK Stack](./roles/docker-elk), [Intel Driver](./roles/driver-intel), [Nginx Docker Reverse Proxy](./roles/nginx-docker-reverse-proxy), [Sudo](./roles/sudo), [Funkwhale](./roles/docker-funkwhale), [MSI Keyboard Color Driver](./roles/driver-msi-keyboard-color), [Nginx Domain Redirect](./roles/nginx-redirect-domain), [GnuCash](./roles/pc-gnucash), [Backup Data to USB](./roles/backup-data-to-usb), [Gitea](./roles/docker-gitea), [Non-Free Driver](./roles/driver-non-free), [Nginx Homepage](./roles/nginx-static-repository), [Jrnl](./roles/pc-jrnl), [Systemd Notifier](./roles/systemd-notifier), [Backup Docker to Local](./roles/backup-docker-to-local), [Jenkins](./roles/docker-jenkins), [Git](./roles/git), [Nginx HTTPS](./roles/nginx-https), [Latex](./roles/pc-latex), [Email Notifier](./roles/systemd-notifier-email), [Remote to Local Backup Solution](./roles/backup-remote-to-local), [Joomla](./roles/docker-joomla), [Heal Defect Docker Installations](./roles/heal-docker), [Nginx Matomo Tracking](./roles/nginx-modifier-matomo), [LibreOffice](./roles/pc-libreoffice), [Telegram Notifier](./roles/systemd-notifier-telegram), [Listmonk](./roles/docker-listmonk), [Btrfs Health Check](./roles/health-btrfs), [Nginx WWW Redirect](./roles/nginx-redirect-www), [Network Analyze Tools](./roles/pc-network-analyze-tools), [System Security](./roles/system-security), [Mailu](./roles/docker-mailu), [Disc Space Health Check](./roles/health-disc-space), [Administrator Tools](./roles/pc-administrator-tools), [Nextcloud Client](./roles/pc-nextcloud), [Swapfile Setup](./roles/system-swapfile), [Backups Cleanup](./roles/cleanup-backups-service), [Mastodon](./roles/docker-mastodon), [Docker Container Health Checker](./roles/health-docker-container), [Blu-ray Player Tools](./roles/pc-bluray-player-tools), [Office](./roles/pc-office), [Update Solutions](./roles/update), [Matomo](./roles/docker-matomo), [Docker Volumes Health Checker](./roles/health-docker-volumes), [Caffeine](./roles/pc-caffeine), [Qbittorrent](./roles/pc-qbittorrent), [Update Apt](./roles/update-apt), [Disc Space Cleanup](./roles/cleanup-disc-space), [Matrix](./roles/docker-matrix), [Health Journalctl](./roles/health-journalctl), [Designer Tools](./roles/pc-designer-tools), [Security Tools](./roles/pc-security-tools), [Update Docker](./roles/update-docker), [Failed Docker Backups Cleanup](./roles/cleanup-failed-docker-backups), [MediaWiki](./roles/docker-mediawiki), [Nginx Health Checker](./roles/health-nginx), [Developer Tools](./roles/pc-developer-tools), [Spotify](./roles/pc-spotify), [Update Pacman](./roles/update-pacman), [Client Wireguard](./roles/client-wireguard), [MyBB](./roles/docker-mybb), [Developer Tools for Arduino](./roles/pc-developer-tools-arduino), [SSH](./roles/pc-ssh), [Update Yay](./roles/update-yay), [Client Setup for Wireguard Behind Firewall](./roles/client-wireguard-behind-firewall), [Nextcloud Server](./roles/docker-nextcloud), [Hunspell](./roles/hunspell), [Developer Tools for Bash](./roles/pc-developer-tools-bash), [Streaming Tools](./roles/pc-streaming-tools), [Administrator](./roles/user-administrator), [Docker](./roles/docker), [Peertube](./roles/docker-peertube), [Java](./roles/java), [Developer Tools for Java](./roles/pc-developer-tools-java), [Tor Browser](./roles/pc-torbrowser), [Video Conference](./roles/pc-video-conference), [Wireguard](./roles/wireguard), [Akaunting](./roles/docker-akaunting), [Pixelfed](./roles/docker-pixelfed), [Journalctl](./roles/journalctl), [Developer Tools for PHP](./roles/pc-developer-tools-php), [Virtual Box](./roles/pc-virtual-box), [Postfix](./roles/postfix), [Attendize](./roles/docker-attendize), [Wordpress](./roles/docker-wordpress), [Locales](./roles/locales), [Docker for End Users](./roles/pc-docker), [Games](./roles/pc-games), [Python Pip](./roles/python-pip), [Discourse](./roles/docker-discourse), [Epson Multiprinter Driver](./roles/driver-epson-multiprinter), [Nginx Certbot](./roles/nginx-certbot), [Git](./roles/pc-git), [SSHD](./roles/sshd), [YOURLS](./roles/docker-yourls), [BigBlueButton](./roles/docker-bigbluebutton),[System Maintenance Lock](./roles/system-maintenance-lock),[Open Project](./roles/docker-openproject)... [ELK Stack](./roles/docker-elk), [Intel Driver](./roles/driver-intel), [Nginx Docker Reverse Proxy](./roles/nginx-docker-reverse-proxy), [Sudo](./roles/sudo), [Funkwhale](./roles/docker-funkwhale), [MSI Keyboard Color Driver](./roles/driver-msi-keyboard-color), [Nginx Domain Redirect](./roles/nginx-redirect-domain), [GnuCash](./roles/pc-gnucash), [Backup Data to USB](./roles/backup-data-to-usb), [Gitea](./roles/docker-gitea), [Non-Free Driver](./roles/driver-non-free), [Nginx Homepage](./roles/nginx-serve-html), [Jrnl](./roles/pc-jrnl), [Systemd Notifier](./roles/systemd-notifier), [Backup Docker to Local](./roles/backup-docker-to-local), [Jenkins](./roles/docker-jenkins), [Git](./roles/git), [Nginx HTTPS](./roles/nginx-https), [Latex](./roles/pc-latex), [Email Notifier](./roles/systemd-notifier-email), [Remote to Local Backup Solution](./roles/backup-remote-to-local), [Joomla](./roles/docker-joomla), [Heal Defect Docker Installations](./roles/heal-docker), [Nginx Matomo Tracking](./roles/nginx-modifier-matomo), [LibreOffice](./roles/pc-libreoffice), [Telegram Notifier](./roles/systemd-notifier-telegram), [Listmonk](./roles/docker-listmonk), [Btrfs Health Check](./roles/health-btrfs), [Nginx WWW Redirect](./roles/nginx-redirect-www), [Network Analyze Tools](./roles/pc-network-analyze-tools), [System Security](./roles/system-security), [Mailu](./roles/docker-mailu), [Disc Space Health Check](./roles/health-disc-space), [Administrator Tools](./roles/pc-administrator-tools), [Nextcloud Client](./roles/pc-nextcloud), [Swapfile Setup](./roles/system-swapfile), [Backups Cleanup](./roles/cleanup-backups-service), [Mastodon](./roles/docker-mastodon), [Docker Container Health Checker](./roles/health-docker-container), [Blu-ray Player Tools](./roles/pc-bluray-player-tools), [Office](./roles/pc-office), [Update Solutions](./roles/update), [Matomo](./roles/docker-matomo), [Docker Volumes Health Checker](./roles/health-docker-volumes), [Caffeine](./roles/pc-caffeine), [Qbittorrent](./roles/pc-qbittorrent), [Update Apt](./roles/update-apt), [Disc Space Cleanup](./roles/cleanup-disc-space), [Matrix](./roles/docker-matrix), [Health Journalctl](./roles/health-journalctl), [Designer Tools](./roles/pc-designer-tools), [Security Tools](./roles/pc-security-tools), [Update Docker](./roles/update-docker), [Failed Docker Backups Cleanup](./roles/cleanup-failed-docker-backups), [MediaWiki](./roles/docker-mediawiki), [Nginx Health Checker](./roles/health-nginx), [Developer Tools](./roles/pc-developer-tools), [Spotify](./roles/pc-spotify), [Update Pacman](./roles/update-pacman), [Client Wireguard](./roles/client-wireguard), [MyBB](./roles/docker-mybb), [Developer Tools for Arduino](./roles/pc-developer-tools-arduino), [SSH](./roles/pc-ssh), [Update Yay](./roles/update-yay), [Client Setup for Wireguard Behind Firewall](./roles/client-wireguard-behind-firewall), [Nextcloud Server](./roles/docker-nextcloud), [Hunspell](./roles/hunspell), [Developer Tools for Bash](./roles/pc-developer-tools-bash), [Streaming Tools](./roles/pc-streaming-tools), [Administrator](./roles/user-administrator), [Docker](./roles/docker), [Peertube](./roles/docker-peertube), [Java](./roles/java), [Developer Tools for Java](./roles/pc-developer-tools-java), [Tor Browser](./roles/pc-torbrowser), [Video Conference](./roles/pc-video-conference), [Wireguard](./roles/wireguard), [Akaunting](./roles/docker-akaunting), [Pixelfed](./roles/docker-pixelfed), [Journalctl](./roles/journalctl), [Developer Tools for PHP](./roles/pc-developer-tools-php), [Virtual Box](./roles/pc-virtual-box), [Postfix](./roles/postfix), [Attendize](./roles/docker-attendize), [Wordpress](./roles/docker-wordpress), [Locales](./roles/locales), [Docker for End Users](./roles/pc-docker), [Games](./roles/pc-games), [Python Pip](./roles/python-pip), [Discourse](./roles/docker-discourse), [Epson Multiprinter Driver](./roles/driver-epson-multiprinter), [Nginx Certbot](./roles/nginx-certbot), [Git](./roles/pc-git), [SSHD](./roles/sshd), [YOURLS](./roles/docker-yourls), [BigBlueButton](./roles/docker-bigbluebutton),[System Maintenance Lock](./roles/system-maintenance-lock),[Open Project](./roles/docker-openproject)...
## License ## License

View File

@ -19,7 +19,7 @@ Focuses on web server roles and applications, covering SSL certificates, Nginx c
- **[Letsencrypt](./roles/letsencrypt/)**: Configures Let's Encrypt for SSL certificates. - **[Letsencrypt](./roles/letsencrypt/)**: Configures Let's Encrypt for SSL certificates.
- **[Nginx](./roles/nginx/)**: Installs and configures Nginx web server. - **[Nginx](./roles/nginx/)**: Installs and configures Nginx web server.
- **[Nginx-Docker-Reverse-Proxy](./roles/nginx-docker-reverse-proxy/)**: Sets up a reverse proxy for Docker containers. - **[Nginx-Docker-Reverse-Proxy](./roles/nginx-docker-reverse-proxy/)**: Sets up a reverse proxy for Docker containers.
- **[nginx-static-repository](./roles/nginx-static-repository/)**: Configures a homepage for Nginx. - **[nginx-serve-html](./roles/nginx-serve-html/)**: Configures a homepage for Nginx.
- **[Nginx-Https](./roles/nginx-https/)**: Enables HTTPS configuration for Nginx. - **[Nginx-Https](./roles/nginx-https/)**: Enables HTTPS configuration for Nginx.
- **[nginx-modifier-matomo](./roles/nginx-modifier-matomo/)**: Integrates Matomo tracking with Nginx. - **[nginx-modifier-matomo](./roles/nginx-modifier-matomo/)**: Integrates Matomo tracking with Nginx.
- **[nginx-redirect-domain](./roles/nginx-redirect-domain/)**: Manages URL redirects in Nginx. - **[nginx-redirect-domain](./roles/nginx-redirect-domain/)**: Manages URL redirects in Nginx.

View File

@ -10,10 +10,12 @@ defaults_domains:
bluesky_web: "bskyweb.{{primary_domain}}" bluesky_web: "bskyweb.{{primary_domain}}"
discourse: "forum.{{primary_domain}}" discourse: "forum.{{primary_domain}}"
elk: "elk.{{primary_domain}}" elk: "elk.{{primary_domain}}"
file_server: "files.{{primary_domain}}"
friendica: "friendica.{{primary_domain}}" friendica: "friendica.{{primary_domain}}"
funkwhale: "music.{{primary_domain}}" funkwhale: "music.{{primary_domain}}"
gitea: "git.{{primary_domain}}" gitea: "git.{{primary_domain}}"
gitlab: "gitlab.{{primary_domain}}" gitlab: "gitlab.{{primary_domain}}"
html_server: "html.{{primary_domain}}"
keycloak: "auth.{{primary_domain}}" keycloak: "auth.{{primary_domain}}"
ldap: "ldap.{{primary_domain}}" ldap: "ldap.{{primary_domain}}"
listmonk: "newsletter.{{primary_domain}}" listmonk: "newsletter.{{primary_domain}}"

View File

@ -10,12 +10,10 @@ nginx:
maps: "/etc/nginx/conf.d/http/maps/" # Contains mappings maps: "/etc/nginx/conf.d/http/maps/" # Contains mappings
streams: "/etc/nginx/conf.d/streams/" # Contains streams configuration e.g. for ldaps streams: "/etc/nginx/conf.d/streams/" # Contains streams configuration e.g. for ldaps
well_known: "/usr/share/nginx/well-known/" # Path where well-known files are stored well_known: "/usr/share/nginx/well-known/" # Path where well-known files are stored
homepage: "/usr/share/nginx/homepage/" # Path where the static homepage files are stored. @todo Move this variable to the role html: "/var/www/public_html/" # Path where the static homepage files are stored
files: "/var/www/public_files/" # Path where the web accessable files are stored
global: "/var/www/global/" # Directory containing files which will be globaly accessable global: "/var/www/global/" # Directory containing files which will be globaly accessable
user: "http" # Default nginx user in ArchLinux user: "http" # Default nginx user in ArchLinux
## Nginx static repository
nginx_static_repository_address: NULL # This should contain the url to an git repository which has a static homepage included and an index.html file. @todo move this variable to the role
# @todo Move this to the dedicated role configuration
## Matomo Tracking ## Matomo Tracking
global_matomo_tracking_enabled: false # Activates matomo tracking on all html pages. Change this in inventory. global_matomo_tracking_enabled: false # Activates matomo tracking on all html pages. Change this in inventory.

View File

@ -4,7 +4,7 @@ person:
type: "legal" # Accepted Values: natural, legal type: "legal" # Accepted Values: natural, legal
name: "CyMaIS Demo Instance" name: "CyMaIS Demo Instance"
description: description:
subtitel: "Infrastructure Demo solutions" # Should be the length of su subtitel: "Infrastructure Demo solutions"
summary: "We offer infrastructure solutions for the world" summary: "We offer infrastructure solutions for the world"
detailed: "" detailed: ""
address: address:
@ -20,5 +20,8 @@ person:
peertube: "@{{administrator_username}}@{{domains.peertube}}" peertube: "@{{administrator_username}}@{{domains.peertube}}"
pixelfed: "@{{administrator_username}}@{{domains.pixelfed}}" pixelfed: "@{{administrator_username}}@{{domains.pixelfed}}"
phone: "+0 000 000 404" phone: "+0 000 000 404"
wordpress: "@{{administrator_username}}@{{domains.wordpress}}[0]" wordpress: "@{{administrator_username}}@{{domains.wordpress[0]}}"
code: "https://github.com/kevinveenbirkenbach/cymais" legal:
editorial_responsible: "Johannes Gutenberg"
source_code: "https://github.com/kevinveenbirkenbach/cymais"
imprint: "https://{{domains.html_server}}/imprint.html"

View File

@ -13,28 +13,28 @@
- health-btrfs - health-btrfs
- system-btrfs-auto-balancer - system-btrfs-auto-balancer
- name: "setup corporate identity"
hosts: corporate_identity
become: true
roles:
- role: corporate-identity
######################################################################### #########################################################################
### Docker Roles ### ### Docker Roles ###
######################################################################### #########################################################################
# Priority: 1
# Almost all other roles depend on the Matomo tracking
- name: "setup matomo" - name: "setup matomo"
hosts: matomo hosts: matomo
become: true become: true
roles: roles:
- role: docker-matomo - role: docker-matomo
# Priority: 2
# Much other roles rely on a working ldap setup
- name: setup ldap - name: setup ldap
hosts: ldap hosts: ldap
become: true become: true
roles: roles:
- role: docker-ldap - role: docker-ldap
# Priority: 3
# Much other roles use OICD via Keycloak
- name: setup keycloak - name: setup keycloak
hosts: keycloak hosts: keycloak
become: true become: true
@ -231,11 +231,11 @@
- role: docker-snipe_it - role: docker-snipe_it
# Native Webserver Roles # Native Webserver Roles
- name: setup nginx-static-repositorys - name: setup nginx-serve-htmls
hosts: nginx-static-repositorys hosts: nginx-serve-htmls
become: true become: true
roles: roles:
- role: nginx-static-repository - role: nginx-serve-html
vars: vars:
domain: "{{primary_domain}}" domain: "{{primary_domain}}"

View File

@ -0,0 +1,2 @@
# Corporate Identity
Loads the roles to setup a corporate identity

View File

@ -0,0 +1,3 @@
dependencies:
- nginx-serve-html-legal
- docker-portfolio

View File

@ -2,6 +2,10 @@
This Ansible role facilitates setting up a Flask-based [portfolio application](https://github.com/kevinveenbirkenbach/portfolio) in a Docker container. It allows you to showcase your projects, services, or online presence using a customizable YAML configuration file. This Ansible role facilitates setting up a Flask-based [portfolio application](https://github.com/kevinveenbirkenbach/portfolio) in a Docker container. It allows you to showcase your projects, services, or online presence using a customizable YAML configuration file.
## Attention
The default template creates the links based on ``group_names``. If you run this script seperate, may not all necessary menu items are generated.
## Features ✨ ## Features ✨
- **Automated Setup**: Quickly deploy a portfolio using Docker. - **Automated Setup**: Quickly deploy a portfolio using Docker.
@ -9,3 +13,7 @@ This Ansible role facilitates setting up a Flask-based [portfolio application](h
- **Responsive Design**: Built with Bootstrap for optimal viewing on any device. - **Responsive Design**: Built with Bootstrap for optimal viewing on any device.
- **Dynamic Navigation**: Multi-level menus using nested YAML configurations. - **Dynamic Navigation**: Multi-level menus using nested YAML configurations.
- **Cache Management**: Efficient asset caching for improved performance. - **Cache Management**: Efficient asset caching for improved performance.
## Author
This role was developed by [Kevin Veen-Birkenbach](https://www.veen.world).

View File

@ -0,0 +1,25 @@
class FilterModule(object):
'''Custom filters for Ansible'''
def filters(self):
return {
'any_in': self.any_in,
}
def any_in(self, list1, list2):
"""
Checks if at least one element from list1 is found in list2.
:param list1: List of elements to check.
:param list2: Target list in which to search for elements.
:return: True if at least one element is found, otherwise False.
"""
# If either parameter is not a list, return False.
if not isinstance(list1, list) or not isinstance(list2, list):
return False
# Iterate over list1 and check if an element exists in list2.
for element in list1:
if element in list2:
return True
return False

View File

@ -56,22 +56,22 @@ accounts:
identifier: "{{person.contact.wordpress}}" identifier: "{{person.contact.wordpress}}"
url: "https://{{ person.contact.wordpress.split('@')[2] }}/@{{ person.contact.wordpress.split('@')[1] }}" url: "https://{{ person.contact.wordpress.split('@')[2] }}/@{{ person.contact.wordpress.split('@')[1] }}"
{% endif %} {% endif %}
{% if person.contact.code is defined %} {% if person.legal.source_code is defined %}
- name: Code - name: Our Code
description: Explore {{ 'our' if person.type == 'legal' else 'my' }} code. description: Explore {{ 'our' if person.type == 'legal' else 'my' }} code.
icon: icon:
class: fa-solid fa-code class: fa-solid fa-code
url: "{{person.code}}" url: "{{person.legal.source_code}}"
{% endif %} {% endif %}
{% if person.contact.friendica is defined %} {% if person.contact.friendica is defined %}
- name: Social Networks - name: Social Network
description: Visit {{ 'our' if person.type == 'legal' else 'my' }} friendica profile description: Visit {{ 'our' if person.type == 'legal' else 'my' }} friendica profile
icon: icon:
class: fas fa-network-wired class: fas fa-network-wired
identifier: "{{person.contact.friendica}}" identifier: "{{person.contact.friendica}}"
url: "https://{{ person.contact.friendica.split('@')[2] }}/@{{ person.contact.friendica.split('@')[1] }}" url: "https://{{ person.contact.friendica.split('@')[2] }}/@{{ person.contact.friendica.split('@')[1] }}"
{% endif %} {% endif %}
- link: navigation.header.contact.messenger - link: navigation.header.contact
cards: cards:
- icon: - icon:
@ -114,13 +114,12 @@ company:
favicon: favicon:
source: https://cloud.veen.world/s/veen_world_favicon/download source: https://cloud.veen.world/s/veen_world_favicon/download
address: address:
{{ person.address | to_nice_yaml(indent=4) | indent(2) }} {{ person.address | to_nice_yaml(indent=4) | indent(4, true) }}
imprint_url: https://s.veen.world/imprint imprint_url: https://s.veen.world/imprint
navigation: navigation:
header: header:
children: children:
- link: accounts.publishingchannels.children - link: accounts.publishingchannels.children
- link: accounts.socialnetworks
- name: Contact - name: Contact
description: Get in touch with {{ 'us' if person.type == 'legal' else 'me' }} description: Get in touch with {{ 'us' if person.type == 'legal' else 'me' }}
icon: icon:
@ -133,8 +132,6 @@ navigation:
class: fa-solid fa-envelope class: fa-solid fa-envelope
url: mailto:{{person.contact.email}} url: mailto:{{person.contact.email}}
identifier: {{person.contact.email}} identifier: {{person.contact.email}}
alternatives:
- link: navigation.header.contact.messenger.matrix
{% endif %} {% endif %}
{% if person.contact.phone is defined %} {% if person.contact.phone is defined %}
- name: Mobile - name: Mobile
@ -155,12 +152,14 @@ navigation:
footer: footer:
children: children:
- link: accounts - link: accounts
{% if ["discourse","moodle","listmonk","openproject","taiga","snipe_it","matrix","bigbluebutton","mailu", "matomo","phpadmin","keycloak", "ldap", "baserow","yourls","nextcloud"] | any_in(group_names) %}
- name: Solution Hub - name: Solution Hub
description: Curated collection of self hosted tools description: Curated collection of self hosted tools
icon: icon:
class: fa-solid fa-network-wired class: fa-solid fa-network-wired
url: url:
children: children:
{% if ["discourse","moodle","listmonk"] | any_in(group_names) %}
- name: Community - name: Community
description: Tools to manage the community description: Tools to manage the community
icon: icon:
@ -187,6 +186,8 @@ navigation:
class: fa-solid fa-envelope-open-text class: fa-solid fa-envelope-open-text
url: https://{{domains.listmonk}}/subscription/form url: https://{{domains.listmonk}}/subscription/form
{% endif %} {% endif %}
{% endif %}
{% if ["openproject","taiga","snipe_it"] | any_in(group_names) %}
- name: Project Management - name: Project Management
description: Project Management Tools description: Project Management Tools
icon: icon:
@ -213,6 +214,8 @@ navigation:
class: fas fa-box-open class: fas fa-box-open
url: https://{{domains.snipe_it}}/ url: https://{{domains.snipe_it}}/
{% endif %} {% endif %}
{% endif %}
{% if ["matrix","bigbluebutton","mailu"] | any_in(group_names) %}
- name: Communication - name: Communication
icon: icon:
class: fa-solid fa-comments class: fa-solid fa-comments
@ -238,6 +241,8 @@ navigation:
class: fa-solid fa-envelope class: fa-solid fa-envelope
url: https://{{domains.mailu}}/ url: https://{{domains.mailu}}/
{% endif %} {% endif %}
{% endif %}
{% if ["matomo","phpadmin","keycloak", "ldap"] | any_in(group_names) %}
- name: Administration - name: Administration
icon: icon:
class: fas fa-building class: fas fa-building
@ -270,6 +275,8 @@ navigation:
class: fas fa-key class: fas fa-key
url: https://{{domains.ldap}}/ url: https://{{domains.ldap}}/
{% endif %} {% endif %}
{% endif %}
{% if ["baserow","yourls","nextcloud"] | any_in(group_names) %}
- name: Tools - name: Tools
icon: icon:
class: fas fa-tools class: fas fa-tools
@ -295,9 +302,12 @@ navigation:
class: fa-solid fa-cloud class: fa-solid fa-cloud
url: https://{{domains.nextcloud}}/ url: https://{{domains.nextcloud}}/
{% endif %} {% endif %}
{% endif %}
{% endif %}
- name: Imprint - name: Imprint
description: Check out the imprint information description: Check out the imprint information
icon: icon:
class: fa-solid fa-scale-balanced class: fa-solid fa-scale-balanced
url: https://s.veen.world/imprint url: "{{person.legal.imprint}}"

View File

@ -0,0 +1,6 @@
# Nginx Homepage Role
This Ansible role configures an Nginx server to serve files. It handles domain configuration, SSL certificate retrieval with Let's Encrypt.
## Author Information
This role was created in 2023 by [Kevin Veen Birkenbach](https://www.veen.world/).

View File

@ -0,0 +1,5 @@
---
- name: generate {{domains[application_id]}}.conf
template:
src: "nginx.conf.j2"
dest: "{{nginx.directories.http.servers}}{{domains[application_id]}}.conf"

View File

@ -0,0 +1,24 @@
server
{
server_name {{domains[application_id]}};
{% include 'roles/letsencrypt/templates/ssl_header.j2' %}
{% include 'roles/nginx-modifier-all/templates/global.includes.conf.j2'%}
charset utf-8;
location /
{
alias {{nginx.directories.homepage.files}}; {# Path to your file directory #}
autoindex on; {# Enable directory listing #}
autoindex_exact_size off; {# Display sizes in a human-readable format #}
autoindex_localtime on; {# Show local time #}
}
location /.well-known/ {
alias {{nginx.directories.well_known}};
allow all;
default_type "text/plain";
autoindex on;
}
}

View File

@ -0,0 +1 @@
application_id: "file_server"

View File

@ -1,6 +1,6 @@
# Nginx Homepage Role # Nginx Homepage Role
This Ansible role configures an Nginx server to serve a static homepage. It handles domain configuration, SSL certificate retrieval with Let's Encrypt, and cloning the homepage content from a Git repository. This Ansible role configures an Nginx server to serve a static homepage. It handles domain configuration, SSL certificate retrieval with Let's Encrypt.
## Author Information ## Author Information
This role was created in 2023 by [Kevin Veen Birkenbach](https://www.veen.world/). This role was created in 2023 by [Kevin Veen Birkenbach](https://www.veen.world/).

View File

@ -0,0 +1,2 @@
dependencies:
- nginx-serve-html

View File

@ -0,0 +1,5 @@
---
- name: copy imprint.html
template:
src: "imprint.html.j2"
dest: "{{nginx.directories.html}}imprint.html"

View File

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Imprint</title>
</head>
<body>
<h1>Imprint</h1>
<h2>Information in accordance with § 5 TMG</h2>
<p>
<strong>{{ person.name }}</strong><br>
{{ person.description.subtitel }}<br>
<br>
<strong>Address:</strong><br>
{{ person.address.street }}<br>
{{ person.address.postal_code }} {{ person.address.city }}<br>
{{ person.address.country }}
</p>
<h2>Contact</h2>
<p>
Telephone: {{ person.contact.phone }}<br>
Email: <a href="mailto:{{ person.contact.email }}">{{ person.contact.email }}</a>
</p>
<h2>Editorial Responsibility</h2>
<p>
{{ person.legal.editorial_responsible }}
</p>
<h2>Source Code</h2>
<p>
Code repository available at: <a href="{{ person.legal.source_code }}">{{ person.legal.source_code }}</a>
</p>
<h2>Consumer Dispute Resolution / Universal Arbitration Board</h2>
<p>
Federal Universal Arbitration Board<br>
Center for Arbitration e.V.<br>
Straßburger Straße 8<br>
77694 Kehl am Rhein
</p>
</body>
</html>

View File

@ -0,0 +1,6 @@
# Nginx Homepage Role
This Ansible role configures an Nginx server to serve a static homepage. It handles domain configuration, SSL certificate retrieval with Let's Encrypt.
## Author Information
This role was created in 2023 by [Kevin Veen Birkenbach](https://www.veen.world/).

View File

@ -0,0 +1,3 @@
dependencies:
- nginx-https
- git

View File

@ -0,0 +1,6 @@
---
- name: generate {{domains[application_id]}}.conf
template:
src: "nginx.conf.j2"
dest: "{{nginx.directories.http.servers}}{{domains[application_id]}}.conf"
notify: restart nginx

View File

@ -1,7 +1,6 @@
#default
server server
{ {
server_name {{domain}}; server_name {{domains[application_id]}};
{% include 'roles/letsencrypt/templates/ssl_header.j2' %} {% include 'roles/letsencrypt/templates/ssl_header.j2' %}
@ -10,7 +9,7 @@ server
location / location /
{ {
root {{nginx.directories.homepage}}; root {{nginx.directories.homepage.html}};
index index.html index.htm; index index.html index.htm;
} }

View File

@ -0,0 +1 @@
application_id: "html_server"

View File

@ -1,16 +0,0 @@
---
- name: "pull homepage from {{nginx_static_repository_address}}"
git:
repo: "{{nginx_static_repository_address}}"
dest: "{{nginx.directories.homepage}}"
update: yes
ignore_errors: true
- name: configure {{primary_domain}}.conf
template:
src: "static.nginx.conf.j2"
dest: "{{nginx.directories.http.servers}}{{primary_domain}}.conf"
vars:
domain: "{{primary_domain}}"
notify: restart nginx
when: run_once_nginx is not defined