From 2b18152e54a7a5aae866bb51a70fe7de23687cd7 Mon Sep 17 00:00:00 2001
From: Elizabeth Hunt <elizabeth.hunt@simponic.xyz>
Date: Sun, 15 Dec 2024 04:01:11 -0500
Subject: [PATCH] uptime stuff

---
 inventory                                     |  3 +-
 .../http.uptime.internal.simponic.xyz.conf    |  0
 .../http.uptimeplugins.internal.simponic.xyz  | 13 ++++++++
 .../https.uptime.internal.simponic.xyz.conf   |  0
 .../https.uptimeplugins.internal.simponic.xyz | 32 +++++++++++++++++++
 roles/uptime/tasks/main.yml                   |  7 ++++
 roles/uptime/templates/docker-compose.yml.j2  | 16 ++++++++++
 7 files changed, 70 insertions(+), 1 deletion(-)
 rename roles/private/files/{johan => raspberrypi}/http.uptime.internal.simponic.xyz.conf (100%)
 create mode 100644 roles/private/files/raspberrypi/http.uptimeplugins.internal.simponic.xyz
 rename roles/private/files/{johan => raspberrypi}/https.uptime.internal.simponic.xyz.conf (100%)
 create mode 100644 roles/private/files/raspberrypi/https.uptimeplugins.internal.simponic.xyz

diff --git a/inventory b/inventory
index f47a49c..5f9f6c1 100644
--- a/inventory
+++ b/inventory
@@ -16,6 +16,7 @@ mail.simponic.xyz ansible_user=root ansible_connection=ssh
 [private]
 johan  ansible_user=root ansible_connection=ssh
 europa  ansible_user=root ansible_connection=ssh
+raspberrypi ansible_user=root ansible_connection=ssh
 
 [webservers]
 levi  ansible_user=root ansible_connection=ssh
@@ -83,4 +84,4 @@ johan  ansible_user=root ansible_connection=ssh
 johan  ansible_user=root ansible_connection=ssh
 
 [uptime]
-johan  ansible_user=root ansible_connection=ssh
+raspberrypi  ansible_user=root ansible_connection=ssh
diff --git a/roles/private/files/johan/http.uptime.internal.simponic.xyz.conf b/roles/private/files/raspberrypi/http.uptime.internal.simponic.xyz.conf
similarity index 100%
rename from roles/private/files/johan/http.uptime.internal.simponic.xyz.conf
rename to roles/private/files/raspberrypi/http.uptime.internal.simponic.xyz.conf
diff --git a/roles/private/files/raspberrypi/http.uptimeplugins.internal.simponic.xyz b/roles/private/files/raspberrypi/http.uptimeplugins.internal.simponic.xyz
new file mode 100644
index 0000000..b901c7c
--- /dev/null
+++ b/roles/private/files/raspberrypi/http.uptimeplugins.internal.simponic.xyz
@@ -0,0 +1,13 @@
+server {
+  listen 80;
+  server_name uptimeplugins.internal.simponic.xyz;
+
+  location /.well-known/acme-challenge {
+    root /var/www/letsencrypt;
+    try_files $uri $uri/ =404;
+  }
+
+  location / {
+    rewrite ^ https://uptimeplugins.internal.simponic.xyz$request_uri? permanent;
+  }
+}
diff --git a/roles/private/files/johan/https.uptime.internal.simponic.xyz.conf b/roles/private/files/raspberrypi/https.uptime.internal.simponic.xyz.conf
similarity index 100%
rename from roles/private/files/johan/https.uptime.internal.simponic.xyz.conf
rename to roles/private/files/raspberrypi/https.uptime.internal.simponic.xyz.conf
diff --git a/roles/private/files/raspberrypi/https.uptimeplugins.internal.simponic.xyz b/roles/private/files/raspberrypi/https.uptimeplugins.internal.simponic.xyz
new file mode 100644
index 0000000..9e13968
--- /dev/null
+++ b/roles/private/files/raspberrypi/https.uptimeplugins.internal.simponic.xyz
@@ -0,0 +1,32 @@
+server {
+  listen 443 ssl;
+  server_name uptimeplugins.internal.simponic.xyz;
+
+  ssl_certificate         /etc/letsencrypt/live/uptimeplugins.internal.simponic.xyz/fullchain.pem;
+  ssl_certificate_key     /etc/letsencrypt/live/uptimeplugins.internal.simponic.xyz/privkey.pem;
+  ssl_trusted_certificate /etc/letsencrypt/live/uptimeplugins.internal.simponic.xyz/fullchain.pem;
+
+  ssl_session_cache shared:SSL:50m;
+  ssl_session_timeout 5m;
+  ssl_stapling on;
+  ssl_stapling_verify on;
+
+  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+  ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
+
+  ssl_dhparam /etc/nginx/dhparams.pem;
+  ssl_prefer_server_ciphers on;
+
+  location / {
+    proxy_pass http://127.0.0.1:9923;
+    proxy_http_version 1.1;
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "upgrade";
+    proxy_set_header Host $server_name;
+    proxy_buffering off;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
+    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+  }
+}
diff --git a/roles/uptime/tasks/main.yml b/roles/uptime/tasks/main.yml
index 8104bea..b656040 100644
--- a/roles/uptime/tasks/main.yml
+++ b/roles/uptime/tasks/main.yml
@@ -1,4 +1,11 @@
 ---
+- name: Download internal cert
+  ansible.builtin.get_url:
+    url: https://ca.internal.simponic.xyz/roots.pem
+    validate_certs: false
+    dest: /etc/roots.pem
+    checksum: sha256:12a1d52af6f4073c339946e8c67bdd48fa85590480385fcce7f16b6b60d40831
+
 - name: ensure uptimekuma docker/compose exist
   file:
     path: /etc/docker/compose/uptimekuma
diff --git a/roles/uptime/templates/docker-compose.yml.j2 b/roles/uptime/templates/docker-compose.yml.j2
index 64f980e..0f1cd8e 100644
--- a/roles/uptime/templates/docker-compose.yml.j2
+++ b/roles/uptime/templates/docker-compose.yml.j2
@@ -2,11 +2,27 @@ version: '3'
 
 services:
   uptime-kuma:
+    container_name: uptime-kuma
+    networks:
+      - uptime
     image: louislam/uptime-kuma:1
     volumes:
       - ./data:/app/data
+      - /etc/roots.pem:/roots.pem
     ports:
       - 127.0.0.1:9922:3001
     dns:
       - {{ nameserver_ip }}
     restart: unless-stopped
+    environment:
+      - NODE_EXTRA_CA_CERTS=/roots.pem
+  uptime-plugins:
+    container_name: uptime-plugins
+    networks:
+      - uptime
+    image: git.simponic.xyz/simponic/uptime:arm
+    restart: unless-stopped
+    ports:
+      - 127.0.0.1:9923:3000
+networks:
+  uptime: