From 05014af7442d3dece27b6fde98124240fbdfdecc Mon Sep 17 00:00:00 2001
From: Tobias Reisinger <tobias@msrg.cc>
Date: Sat, 23 Dec 2023 19:25:42 +0100
Subject: [PATCH] Add ntfy service

---
 node002.yml               |  2 ++
 roles/ntfy/tasks/main.yml | 12 +++++++++
 roles/ntfy/vars/main.yml  | 55 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+)
 create mode 100644 roles/ntfy/tasks/main.yml
 create mode 100644 roles/ntfy/vars/main.yml

diff --git a/node002.yml b/node002.yml
index 476c5c3..0a9cb22 100644
--- a/node002.yml
+++ b/node002.yml
@@ -40,6 +40,8 @@
       tags: [influxdb, sensors, monitoring]
     - role: jellyfin
       tags: [jellyfin, media]
+    - role: ntfy
+      tags: [ntfy, notifications, push]
     - role: reitanlage_oranienburg
       tags: [reitanlage-oranienburg, website]
     - role: synapse
diff --git a/roles/ntfy/tasks/main.yml b/roles/ntfy/tasks/main.yml
new file mode 100644
index 0000000..4026612
--- /dev/null
+++ b/roles/ntfy/tasks/main.yml
@@ -0,0 +1,12 @@
+---
+- name: Set common facts
+  ansible.builtin.import_tasks: tasks/set-default-facts.yml
+
+- name: Deploy {{ svc.name }}
+  vars:
+    svc: "{{ ntfy_svc }}"
+    compose: "{{ ntfy_compose }}"
+    env: "{{ ntfy_env }}"
+  block:
+    - name: Import tasks to deploy common service
+      ansible.builtin.import_tasks: tasks/deploy-common-service.yml
diff --git a/roles/ntfy/vars/main.yml b/roles/ntfy/vars/main.yml
new file mode 100644
index 0000000..b881fe4
--- /dev/null
+++ b/roles/ntfy/vars/main.yml
@@ -0,0 +1,55 @@
+---
+ntfy_svc:
+  name: ntfy
+  domain: push.serguzim.me
+  port: 80
+
+ntfy_env:
+  TZ: "{{ timezone }}"
+
+  NTFY_BASE_URL: "https://{{ ntfy_svc.domain }}"
+
+  NTFY_CACHE_FILE: /var/cache/ntfy/cache.db
+  NTFY_CACHE_DURATION: "12h"
+
+  NTFY_BEHIND_PROXY: true
+
+  NTFY_AUTH_FILE: /var/lib/ntfy/user.db
+  NTFY_AUTH_DEFAULT_ACCESS: "deny-all"
+
+  NTFY_ATTACHMENT_CACHE_DIR: "/var/cache/ntfy/attachments"
+  NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT: "5G"
+  NTFY_ATTACHMENT_FILE_SIZE_LIMIT: "15M"
+  NTFY_ATTACHMENT_EXPIRY_DURATION: "3h"
+
+  NTFY_KEEPALIVE_INTERVAL: "45s"
+  NTFY_MANAGER_INTERVAL: "60m"
+
+  NTFY_ENABLE_SIGNUP: false
+  NTFY_ENABLE_LOGIN: true
+  NTFY_ENABLE_RESERVATIONS: true
+
+  NTFY_GLOBAL_TOPIC_LIMIT: 15000
+
+  NTFY_VISITOR_SUBSCRIPTION_LIMIT: 30
+  NTFY_VISITOR_REQUEST_LIMIT_BURST: 60
+  NTFY_VISITOR_REQUEST_LIMIT_REPLENISH: "5s"
+  NTFY_VISITOR_ATTACHMENT_TOTAL_SIZE_LIMIT: "100M"
+  NTFY_VISITOR_ATTACHMENT_DAILY_BANDWIDTH_LIMIT: "500M"
+
+  NTFY_ENABLE_METRICS: true
+
+ntfy_compose:
+  watchtower: true
+  image: binwiederhier/ntfy
+  volumes:
+    - cache:/var/cache/ntfy
+    - data:/var/lib/ntfy
+  file:
+    services:
+      app:
+        command:
+          - serve
+    volumes:
+      cache:
+      data: