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: