mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-04-28 18:30:24 +02:00
Compare commits
5 Commits
9095b00cfb
...
efd1b5775e
Author | SHA1 | Date | |
---|---|---|---|
efd1b5775e | |||
e94bcc3049 | |||
fb4cc305c2 | |||
b42fb280eb | |||
12e272af22 |
@ -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-domain-redirect), [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-homepage), [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-matomo-tracking), [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-www-redirect), [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-domain-redirect), [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-matomo-tracking), [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-www-redirect), [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
|
||||||
|
|
||||||
|
@ -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-Homepage](./roles/nginx-homepage/)**: Configures a homepage for Nginx.
|
- **[nginx-static-repository](./roles/nginx-static-repository/)**: 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-Matomo-Tracking](./roles/nginx-matomo-tracking/)**: Integrates Matomo tracking with Nginx.
|
- **[Nginx-Matomo-Tracking](./roles/nginx-matomo-tracking/)**: Integrates Matomo tracking with Nginx.
|
||||||
- **[Nginx-Domain-Redirect](./roles/nginx-domain-redirect/)**: Manages URL redirects in Nginx.
|
- **[Nginx-Domain-Redirect](./roles/nginx-domain-redirect/)**: Manages URL redirects in Nginx.
|
||||||
|
@ -146,7 +146,7 @@ domain_friendica: "friendica.{{top_domain}}"
|
|||||||
domain_funkwhale: "music.{{top_domain}}"
|
domain_funkwhale: "music.{{top_domain}}"
|
||||||
domain_gitea: "git.{{top_domain}}"
|
domain_gitea: "git.{{top_domain}}"
|
||||||
domain_gitlab: "gitlab.{{top_domain}}"
|
domain_gitlab: "gitlab.{{top_domain}}"
|
||||||
domain_landingpage: "{{top_domain}}"
|
domain_portfolio: "{{top_domain}}"
|
||||||
domain_listmonk: "newsletter.{{top_domain}}"
|
domain_listmonk: "newsletter.{{top_domain}}"
|
||||||
domain_mailu: "{{system_email_host}}"
|
domain_mailu: "{{system_email_host}}"
|
||||||
domain_mastodon: "microblog.{{top_domain}}"
|
domain_mastodon: "microblog.{{top_domain}}"
|
||||||
|
@ -277,21 +277,21 @@
|
|||||||
domain: "{{domain_friendica}}"
|
domain: "{{domain_friendica}}"
|
||||||
http_port: 8028
|
http_port: 8028
|
||||||
|
|
||||||
- name: setup landingpage
|
- name: setup portfolio
|
||||||
hosts: landingpage
|
hosts: portfolio
|
||||||
become: true
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- role: docker-landingpage
|
- role: docker-portfolio
|
||||||
vars:
|
vars:
|
||||||
domain: "{{domain_landingpage}}"
|
domain: "{{domain_portfolio}}"
|
||||||
http_port: 8029
|
http_port: 8029
|
||||||
|
|
||||||
# Native Webserver Roles
|
# Native Webserver Roles
|
||||||
- name: setup nginx-homepages
|
- name: setup nginx-static-repositorys
|
||||||
hosts: homepage
|
hosts: nginx-static-repositorys
|
||||||
become: true
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- role: nginx-homepage
|
- role: nginx-static-repository
|
||||||
vars:
|
vars:
|
||||||
domain: "{{top_domain}}"
|
domain: "{{top_domain}}"
|
||||||
|
|
||||||
|
@ -10,10 +10,17 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{http_port}}:80"
|
- "127.0.0.1:{{http_port}}:80"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
# This health check ensures the test email is sent only once to prevent
|
||||||
|
# hitting SMTP rate limits due to multiple health check executions.
|
||||||
|
# The logic checks for a temporary file (/tmp/email_sent) to determine
|
||||||
|
# if the email has already been sent. If the file exists, the email
|
||||||
|
# is skipped, but the health check continues by verifying the HTTP service.
|
||||||
|
# Refer to the conversation with ChatGPT (https://chatgpt.com/share/67898c3f-2c1c-800f-861c-47dcbe109135)
|
||||||
|
# on January 16, 2025, for the background behind this complexity.
|
||||||
test:
|
test:
|
||||||
[
|
[
|
||||||
"CMD-SHELL",
|
"CMD-SHELL",
|
||||||
"(echo 'Subject: testmessage from {{domain}}\n\nSUCCESSFULL' | msmtp -t {{test_email}} && curl -f http://127.0.0.1:80) || exit 1"
|
"(if [ ! -f /tmp/email_sent ]; then echo 'Subject: testmessage from {{domain}}\n\nSUCCESSFULL' | msmtp -t {{test_email}} && touch /tmp/email_sent; fi && curl -f http://127.0.0.1:80) || exit 1"
|
||||||
]
|
]
|
||||||
interval: 1m
|
interval: 1m
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
# role docker-landingpage
|
|
||||||
create a landingpage with flask. Uses https://github.com/kevinveenbirkenbach/landingpage
|
|
11
roles/docker-portfolio/README.md
Normal file
11
roles/docker-portfolio/README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Docker Role: Flask-based Portfolio Setup 🚀
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Features ✨
|
||||||
|
|
||||||
|
- **Automated Setup**: Quickly deploy a portfolio using Docker.
|
||||||
|
- **Customizable Content**: Modify the portfolio using a YAML file.
|
||||||
|
- **Responsive Design**: Built with Bootstrap for optimal viewing on any device.
|
||||||
|
- **Dynamic Navigation**: Multi-level menus using nested YAML configurations.
|
||||||
|
- **Cache Management**: Efficient asset caching for improved performance.
|
@ -8,6 +8,12 @@
|
|||||||
- name: "include tasks update-repository-with-docker-compose.yml"
|
- name: "include tasks update-repository-with-docker-compose.yml"
|
||||||
include_tasks: update-repository-with-docker-compose.yml
|
include_tasks: update-repository-with-docker-compose.yml
|
||||||
|
|
||||||
|
- name: create {{docker_compose_instance_directory}}/app/config.yaml
|
||||||
|
copy:
|
||||||
|
src: "{{ inventory_dir }}/files/{{ inventory_hostname }}/docker/portfolio/config.yaml"
|
||||||
|
dest: "{{docker_compose_instance_directory}}/app/config.yaml"
|
||||||
|
notify: docker compose project setup
|
||||||
|
|
||||||
- name: add docker-compose.yml
|
- name: add docker-compose.yml
|
||||||
template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml
|
template: src=docker-compose.yml.j2 dest={{docker_compose_instance_directory}}docker-compose.yml
|
||||||
notify: docker compose project setup
|
notify: docker compose project setup
|
@ -1,10 +1,10 @@
|
|||||||
services:
|
services:
|
||||||
landingpage:
|
portfolio:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
image: application-landingpage
|
image: application-portfolio
|
||||||
container_name: landingpage
|
container_name: portfolio
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:{{http_port}}:5000
|
- 127.0.0.1:{{http_port}}:5000
|
||||||
volumes:
|
volumes:
|
@ -1,2 +1,2 @@
|
|||||||
docker_compose_project_name: "landingpage"
|
docker_compose_project_name: "portfolio"
|
||||||
repository_address: "https://github.com/kevinveenbirkenbach/landingpage"
|
repository_address: "https://github.com/kevinveenbirkenbach/portfolio"
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
- name: "pull homepage from {{nginx_homepage_repository_address}}"
|
|
||||||
git:
|
|
||||||
repo: "{{nginx_homepage_repository_address}}"
|
|
||||||
dest: "{{nginx_homepage_root}}"
|
|
||||||
update: yes
|
|
||||||
ignore_errors: true
|
|
@ -26,7 +26,7 @@ This Ansible role configures an Nginx server to serve a static homepage. It hand
|
|||||||
```yaml
|
```yaml
|
||||||
- hosts: servers
|
- hosts: servers
|
||||||
roles:
|
roles:
|
||||||
- { role: nginx-homepage, domain: 'example.com', administrator_email: 'admin@example.com' }
|
- { role: nginx-static-repository, domain: 'example.com', administrator_email: 'admin@example.com' }
|
||||||
```
|
```
|
||||||
|
|
||||||
## Author Information
|
## Author Information
|
16
roles/nginx-static-repository/tasks/main.yml
Normal file
16
roles/nginx-static-repository/tasks/main.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
- name: "pull homepage from {{nginx_homepage_repository_address}}"
|
||||||
|
git:
|
||||||
|
repo: "{{nginx_homepage_repository_address}}"
|
||||||
|
dest: "{{nginx_homepage_root}}"
|
||||||
|
update: yes
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: configure {{top_domain}}.conf
|
||||||
|
template:
|
||||||
|
src: "static.nginx.conf.j2"
|
||||||
|
dest: "{{nginx_servers_directory}}{{top_domain}}.conf"
|
||||||
|
vars:
|
||||||
|
domain: "{{top_domain}}"
|
||||||
|
notify: restart nginx
|
||||||
|
when: run_once_nginx is not defined
|
@ -36,15 +36,6 @@
|
|||||||
domain: "{{top_domain}}"
|
domain: "{{top_domain}}"
|
||||||
when: run_once_nginx is not defined
|
when: run_once_nginx is not defined
|
||||||
|
|
||||||
- name: configure {{top_domain}}.conf
|
|
||||||
template:
|
|
||||||
src: "homepage.nginx.conf.j2"
|
|
||||||
dest: "{{nginx_servers_directory}}{{top_domain}}.conf"
|
|
||||||
vars:
|
|
||||||
domain: "{{top_domain}}"
|
|
||||||
notify: restart nginx
|
|
||||||
when: run_once_nginx is not defined
|
|
||||||
|
|
||||||
- name: flush nginx service
|
- name: flush nginx service
|
||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
when: run_once_nginx is not defined
|
when: run_once_nginx is not defined
|
||||||
|
Loading…
x
Reference in New Issue
Block a user