mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-29 15:06:26 +02:00
Shortened service- to svc-
This commit is contained in:
38
roles/web-svc-html/README.md
Normal file
38
roles/web-svc-html/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Nginx Static HTML Server
|
||||
|
||||
## 🔥 Description
|
||||
|
||||
This role configures an [Nginx](https://nginx.org/) server to host a static HTML homepage securely over HTTPS. It automates domain configuration, SSL/TLS certificate retrieval using [Let's Encrypt](https://letsencrypt.org/), and ensures your site is ready for production with minimal setup.
|
||||
|
||||
## 📖 Overview
|
||||
|
||||
Optimized for Archlinux environments, this role provides a lightweight, reliable solution for serving static websites. It automatically configures Nginx to serve files from a predefined directory, sets up secure HTTPS connections, and includes support for `.well-known` paths required by ACME challenges.
|
||||
|
||||
### Key Features
|
||||
- **Static Site Hosting:** Serves HTML, CSS, JavaScript, and other static files.
|
||||
- **Let's Encrypt Integration:** Automatically requests and installs SSL/TLS certificates.
|
||||
- **Simple Root Configuration:** Defines a clean webroot with `index.html` support.
|
||||
- **Secure by Default:** Includes modern SSL headers and best practices via Nginx.
|
||||
- **.well-known Support:** Ensures full ACME challenge compatibility.
|
||||
|
||||
## 🎯 Purpose
|
||||
|
||||
The Nginx Static HTML Server role provides a simple and efficient method to publish static websites with HTTPS, perfect for personal homepages, landing pages, or small projects.
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
- **Automatic HTTPS Certificates:** Handles secure certificate issuance via Let's Encrypt.
|
||||
- **Minimal Nginx Setup:** Clean and optimized default configurations.
|
||||
- **Highly Portable:** Works out-of-the-box with minimal variables.
|
||||
- **Local Time Support:** Properly displays directory listing timestamps when needed.
|
||||
|
||||
## 🔗 Learn More
|
||||
|
||||
- [Nginx Official Website](https://nginx.org/)
|
||||
- [Let's Encrypt](https://letsencrypt.org/)
|
||||
- [Static Web Page (Wikipedia)](https://en.wikipedia.org/wiki/Static_web_page)
|
||||
- [HTTPS (Wikipedia)](https://en.wikipedia.org/wiki/HTTPS)
|
||||
|
||||
## 🧑💻 Author Information
|
||||
|
||||
Created in 2023 by [Kevin Veen-Birkenbach](https://www.veen.world/)
|
7
roles/web-svc-html/config/main.yml
Normal file
7
roles/web-svc-html/config/main.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
features:
|
||||
matomo: true
|
||||
css: true
|
||||
portfolio_iframe: true
|
||||
domains:
|
||||
canonical:
|
||||
- "html.{{ primary_domain }}"
|
31
roles/web-svc-html/meta/main.yml
Normal file
31
roles/web-svc-html/meta/main.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
galaxy_info:
|
||||
author: "Kevin Veen-Birkenbach"
|
||||
description: |
|
||||
Configures an Nginx server to host static HTML websites with HTTPS support, automatic SSL certificate retrieval via Let's Encrypt, and secure default settings.
|
||||
license: "CyMaIS NonCommercial License (CNCL)"
|
||||
license_url: "https://s.veen.world/cncl"
|
||||
company: |
|
||||
Kevin Veen-Birkenbach
|
||||
Consulting & Coaching Solutions
|
||||
https://www.veen.world
|
||||
min_ansible_version: "2.9"
|
||||
platforms:
|
||||
- name: Archlinux
|
||||
versions:
|
||||
- rolling
|
||||
galaxy_tags:
|
||||
- nginx
|
||||
- https
|
||||
- static
|
||||
- html
|
||||
- letsencrypt
|
||||
- ssl
|
||||
- homepage
|
||||
- automation
|
||||
repository: "https://s.veen.world/cymais"
|
||||
issue_tracker_url: "https://s.veen.world/cymaisissues"
|
||||
documentation: "https://s.veen.world/cymais"
|
||||
dependencies:
|
||||
- srv-web-https
|
||||
- gen-git
|
13
roles/web-svc-html/tasks/main.yml
Normal file
13
roles/web-svc-html/tasks/main.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
- name: "include role for {{application_id}} to receive certs & do modification routines"
|
||||
include_role:
|
||||
name: srv-web-composer
|
||||
vars:
|
||||
domain: "{{domains | get_domain(application_id)}}"
|
||||
http_port: "{{ ports.localhost.http[application_id] }}"
|
||||
|
||||
- name: "generate {{domains | get_domain(application_id)}}.conf"
|
||||
template:
|
||||
src: "nginx.conf.j2"
|
||||
dest: "{{nginx.directories.http.servers}}{{domains | get_domain(application_id)}}.conf"
|
||||
notify: restart nginx
|
24
roles/web-svc-html/templates/nginx.conf.j2
Normal file
24
roles/web-svc-html/templates/nginx.conf.j2
Normal file
@@ -0,0 +1,24 @@
|
||||
server
|
||||
{
|
||||
server_name {{domains | get_domain(application_id)}};
|
||||
|
||||
{% include 'roles/net-letsencrypt/templates/ssl_header.j2' %}
|
||||
|
||||
{% include 'roles/srv-web-injector-core/templates/global.includes.conf.j2'%}
|
||||
|
||||
{% include 'roles/srv-web-proxy-core/templates/headers/content_security_policy.conf.j2' %}
|
||||
charset utf-8;
|
||||
|
||||
location /
|
||||
{
|
||||
root {{nginx.directories.data.html}};
|
||||
index index.html index.htm;
|
||||
}
|
||||
|
||||
location /.well-known/ {
|
||||
alias {{nginx.directories.data.well_known}};
|
||||
allow all;
|
||||
default_type "text/plain";
|
||||
autoindex on;
|
||||
}
|
||||
}
|
4
roles/web-svc-html/vars/main.yml
Normal file
4
roles/web-svc-html/vars/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
application_id: "html-server"
|
||||
domain: "{{domains | get_domain(application_id)}}"
|
||||
features:
|
||||
portfolio_iframe: true # Necessary for imprint loading
|
Reference in New Issue
Block a user