feat: add Gotify notification server with iGotify iOS support

Add comprehensive push notification infrastructure with:
- Gotify server for push notifications with admin password configuration
- iGotify Assistant service for iOS notification relay via Apple Push Notifications
- Dual subdomain setup (gotify.* and gotify-assistant.*)
- Proper service dependencies and container communication via hairpinning
- Caddy reverse proxy configuration for both services
- DNS A records for both subdomains
- Added to monitoring services category
- Tested with successful notification delivery

Services accessible at:
- https://gotify.thesatelliteoflove.com (main server)
- https://gotify-assistant.thesatelliteoflove.com (iOS assistant)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-06-19 12:46:51 -06:00
parent a338186a77
commit ff89683038
7 changed files with 83 additions and 2 deletions

View File

@ -83,6 +83,14 @@ home.thesatelliteoflove.com {
reverse_proxy authentik-server-1:9000
}
gotify.thesatelliteoflove.com {
reverse_proxy gotify-gotify-1:80
}
gotify-assistant.thesatelliteoflove.com {
reverse_proxy gotify-igotify-assistant-1:8080
}
repair.nerder.land {
root * /srv/repair

View File

@ -0,0 +1,19 @@
- name: Create gotify directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
loop:
- /opt/stacks/gotify
- name: Template out the gotify compose file
ansible.builtin.template:
src: gotify-compose.yml.j2
dest: /opt/stacks/gotify/compose.yml
owner: root
mode: 644
- name: Deploy gotify stack
community.docker.docker_compose_v2:
project_src: /opt/stacks/gotify
files:
- compose.yml

View File

@ -11,4 +11,8 @@
- name: Install appriseapi
import_tasks: appriseapi.yml
tags: appriseapi
tags: appriseapi
- name: Install gotify
import_tasks: gotify.yml
tags: gotify

View File

@ -0,0 +1,44 @@
services:
gotify:
image: gotify/server:latest
restart: unless-stopped
volumes:
- gotify_data:/app/data
environment:
- GOTIFY_DEFAULTUSER_PASS={{ vault_gotify.admin_password }}
- TZ=America/Denver
labels:
glance.name: Gotify
glance.icon: si:gotify
glance.url: "https://{{ subdomains.gotify }}/"
glance.description: Push notification server
extra_hosts:
- "{{ subdomains.auth }}:{{ docker.hairpin_ip }}"
- "{{ subdomains.gotify_assistant }}:{{ docker.hairpin_ip }}"
igotify-assistant:
image: ghcr.io/androidseb25/igotify-notification-assist:latest
restart: unless-stopped
volumes:
- igotify_data:/app/data
environment:
- TZ=America/Denver
depends_on:
- gotify
labels:
glance.name: iGotify Assistant
glance.icon: si:apple
glance.url: "https://{{ subdomains.gotify_assistant }}/"
glance.description: iOS notification assistant
extra_hosts:
- "{{ subdomains.auth }}:{{ docker.hairpin_ip }}"
- "{{ subdomains.gotify }}:{{ docker.hairpin_ip }}"
volumes:
gotify_data:
igotify_data:
networks:
default:
external: true
name: "{{ docker.network_name }}"