|
4 | 4 |
|
5 | 5 | # iGotify |
6 | 6 |
|
7 | | -A small Gotify server notification assistent that decrypt the message and trigger a Push Notifications to iOS Devices via Apple's APNs with my service SecNtfy |
| 7 | +A notification assistant that bridges [Gotify](https://gotify.net/) with iOS devices via Apple's APNs using the SecNtfy service. |
8 | 8 |
|
9 | | -Download Link to iGotify down below |
| 9 | +> **Important:** This project is **not** Gotify itself. iGotify is a companion service that enables push notifications for iOS devices. The notification payload is only forwarded through SecNtfy to Apple's APNs - **no message content is stored** on any intermediate server. |
10 | 10 |
|
11 | | - |
12 | | -## ⭐ Features |
| 11 | +## Features |
13 | 12 |
|
14 | | -* show received notifications with markdown |
15 | | -* decrypted the message with a public key that is generated from the iGotify device |
16 | | -* sending the decrypted message to SecNtfy and forwarded it to Apple's APN service, without saving the payload |
17 | | -* multiuser support |
| 13 | +- End-to-end encrypted push notifications |
| 14 | +- Seamless Gotify integration |
| 15 | +- Native iOS app with FaceID support |
| 16 | +- Multi-user & multi-instance support |
18 | 17 |
|
19 | | - |
20 | | -## 🔧 How to Install Gotify & iGotify-Notification-Assist |
| 18 | +## Installation |
21 | 19 |
|
22 | | -### 🐳 Docker `docker-compose.yaml` |
| 20 | +There are two ways to deploy iGotify: |
23 | 21 |
|
24 | | -### Installation |
| 22 | +### Option 1: Docker (Recommended) |
25 | 23 |
|
26 | | -1. Create a file with the name `docker-compose.yaml` or clone this repo and go to step 3 |
27 | | -2. Please use the latest and recommended version of docker and docker compose |
28 | | -3. Copy the code down below in the yaml file |
29 | | -4. change environment variables in the compose file |
30 | | -5. execute `docker compose up -d` to start the docker compose |
31 | | - |
32 | | - |
33 | | -### Needed environment variables |
34 | | - |
35 | | -* `GOTIFY_DEFAULTUSER_PASS` = the user password for the defaultuser |
36 | | - |
37 | | -### Optional environment variables |
38 | | - |
39 | | -* `GOTIFY_URLS` = the local gotify sever URL e.g.: `http://gotify` |
40 | | -* `GOTIFY_CLIENT_TOKENS` = the client token from the Gotify Client e.g.: `cXXXXXXXX` |
41 | | -* `SECNTFY_TOKENS` = the SecNtfy Token that you get from the app after configure it e.g.: `NTFY-DEVICE-XXXXXX` |
42 | | - |
43 | | -*These three environment variables above aren't required when the Gotify & iGotify Instances available over a domain!* |
44 | | - |
45 | | -* `ENABLE_CONSOLE_LOG` = you can disable unnecessary console logs (default: true) |
46 | | -* `ENABLE_SCALAR_UI` = you can now disable the Endpoint page (default: true) |
47 | | - |
48 | | -*please write the boolean variables (true, false) in single quotes 'true'* |
49 | | - |
50 | | -#### All these configuration can be found after configure the app. It will display it for you |
51 | | -#### Please note you can configure multiple instances of local gotify server by adding a semicolon `;` after each environment value e.g.: |
52 | | - |
53 | | -* `GOTIFY_URLS: 'http://gotify;http://gotify2;http://gotify3;...'` |
54 | | -* `GOTIFY_CLIENT_TOKENS: 'cXXXXXXXX1;cXXXXXXXX2;cXXXXXXXX3;...'` |
55 | | -* `SECNTFY_TOKENS: 'NTFY-DEVICE-XXXXXX1;NTFY-DEVICE-XXXXXX2;NTFY-DEVICE-XXXXXX3;...'` |
56 | | - |
57 | | - |
| 24 | +The Docker stack includes both Gotify and iGotify. |
58 | 25 |
|
59 | 26 | ```bash |
60 | | -services: |
61 | | - gotify: |
62 | | - container_name: gotify |
63 | | - hostname: gotify |
64 | | - image: gotify/server |
65 | | - restart: unless-stopped |
66 | | - security_opt: |
67 | | - - no-new-privileges:true |
68 | | - networks: |
69 | | - - net |
70 | | - ports: |
71 | | - - "8680:80" |
72 | | - volumes: |
73 | | - - data:/app/data |
74 | | - environment: |
75 | | - GOTIFY_DEFAULTUSER_PASS: 'my-very-strong-password' # Change me!!!!! |
76 | | - |
77 | | - igotify: |
78 | | - container_name: igotify |
79 | | - hostname: igotify |
80 | | - image: ghcr.io/androidseb25/igotify-notification-assist:latest |
81 | | - restart: unless-stopped |
82 | | - security_opt: |
83 | | - - no-new-privileges:true |
84 | | - pull_policy: always |
85 | | - healthcheck: |
86 | | - test: [ "CMD", "curl", "-f", "http://localhost:8080/Version" ] |
87 | | - interval: "3s" |
88 | | - timeout: "3s" |
89 | | - retries: 5 |
90 | | - networks: |
91 | | - - net |
92 | | - ports: |
93 | | - - "8681:8080" |
94 | | - volumes: |
95 | | - - api-data:/app/data |
96 | | - #environment: # option environment see above note |
97 | | - # GOTIFY_URLS: '' |
98 | | - # GOTIFY_CLIENT_TOKENS: '' |
99 | | - # SECNTFY_TOKENS: '' |
100 | | - |
101 | | -networks: |
102 | | - net: |
103 | | - |
104 | | -volumes: |
105 | | - data: |
106 | | - api-data: |
107 | | -``` |
108 | | -*Thank you The_Think3r for the compose file and @herrpandora* |
109 | | - |
110 | | - |
111 | | -### (Optional) NGINX Proxy Manager |
| 27 | +# Clone the repository |
| 28 | +git clone https://github.com/androidseb25/iGotify-Notification-Assistent.git |
| 29 | +cd iGotify-Notification-Assistent |
112 | 30 |
|
113 | | -When someone have problem's with incoming notifications on the app, please try this options under Advance Settings for the setuped proxies |
| 31 | +# Configure environment |
| 32 | +cp .env.example .env |
| 33 | +# Edit .env and set GOTIFY_DEFAULTUSER_PASS |
114 | 34 |
|
115 | | -```bash |
116 | | -proxy_set_header Host $http_host; |
117 | | -proxy_connect_timeout 1m; |
118 | | -proxy_send_timeout 1m; |
119 | | -proxy_read_timeout 1m; |
| 35 | +# Start the stack |
| 36 | +docker compose up -d |
120 | 37 | ``` |
121 | 38 |
|
122 | | -Also **don't** check the boxes which say "HTTP/2 Support" and "HSTS enabled". |
123 | | - |
124 | | -*Thank you to @TBT-TBT for sharing this notice* |
125 | | - |
126 | | - |
127 | | -### Traefik Config |
| 39 | +### Option 2: Linux Service |
128 | 40 |
|
129 | 41 | ```bash |
130 | | -services: |
131 | | - gotify: |
132 | | - container_name: gotify |
133 | | - hostname: gotify |
134 | | - image: gotify/server |
135 | | - restart: unless-stopped |
136 | | - security_opt: |
137 | | - - no-new-privileges:true |
138 | | - volumes: |
139 | | - - data:/app/data |
140 | | - environment: |
141 | | - GOTIFY_DEFAULTUSER_PASS: 'my-very-strong-password' # Change me!!!!! |
142 | | - GOTIFY_REGISTRATION: 'false' |
143 | | - labels: |
144 | | - traefik.docker.network: proxy |
145 | | - traefik.enable: "true" |
146 | | - traefik.http.routers.gotify-secure.entrypoints: websecure |
147 | | - traefik.http.routers.gotify-secure.middlewares: default@file |
148 | | - traefik.http.routers.gotify-secure.rule: Host(`gotify.domain-name.de`) |
149 | | - traefik.http.routers.gotify-secure.service: gotify |
150 | | - traefik.http.routers.gotify-secure.tls: "true" |
151 | | - traefik.http.routers.gotify-secure.tls.certresolver: http_resolver |
152 | | - traefik.http.routers.gotify.entrypoints: web |
153 | | - traefik.http.routers.gotify.rule: Host(`gotify.domain-name.de`) |
154 | | - traefik.http.services.gotify.loadbalancer.server.port: "80" |
155 | | - networks: |
156 | | - default: null |
157 | | - proxy: null |
158 | | - |
159 | | - igotify-notification: # (iGotify-Notification-Assistent) |
160 | | - container_name: igotify |
161 | | - hostname: igotify |
162 | | - image: ghcr.io/androidseb25/igotify-notification-assist:latest |
163 | | - restart: always |
164 | | - security_opt: |
165 | | - - no-new-privileges:true |
166 | | - pull_policy: always |
167 | | - healthcheck: |
168 | | - test: [ "CMD", "curl", "-f", "http://localhost:8080/Version" ] |
169 | | - interval: "3s" |
170 | | - timeout: "3s" |
171 | | - retries: 5 |
172 | | - volumes: |
173 | | - - api-data:/app/data |
174 | | - |
175 | | - #environment: # option environment see above note |
176 | | - # GOTIFY_URLS: '' |
177 | | - # GOTIFY_CLIENT_TOKENS: '' |
178 | | - # SECNTFY_TOKENS: '' |
179 | | - |
180 | | - labels: |
181 | | - traefik.docker.network: proxy |
182 | | - traefik.enable: "true" |
183 | | - traefik.http.routers.igotify-secure.entrypoints: websecure |
184 | | - traefik.http.routers.igotify-secure.middlewares: default@file |
185 | | - traefik.http.routers.igotify-secure.rule: Host(`igotify.domain-name.de`) |
186 | | - traefik.http.routers.igotify-secure.service: igotify |
187 | | - traefik.http.routers.igotify-secure.tls: "true" |
188 | | - traefik.http.routers.igotify-secure.tls.certresolver: http_resolver |
189 | | - traefik.http.routers.igotify.entrypoints: web |
190 | | - traefik.http.routers.igotify.rule: Host(`igotify.domain-name.de`) |
191 | | - traefik.http.services.igotify.loadbalancer.server.port: "8080" |
192 | | - networks: |
193 | | - default: null |
194 | | - proxy: null |
195 | | - |
196 | | -networks: |
197 | | - default: |
198 | | - proxy: |
199 | | - external: true |
200 | | -volumes: |
201 | | - data: |
202 | | - api-data: |
| 42 | +curl -sSL https://raw.githubusercontent.com/androidseb25/iGotify-Notification-Assistent/main/install.sh | bash |
203 | 43 | ``` |
204 | | -*Thank you to @majo1989 for sharing this config* |
205 | | - |
206 | | - |
207 | | -## 🔧 Install iGotify app |
208 | 44 |
|
209 | | -Download from [AppStore](https://apps.apple.com/de/app/igotify/id6473452512?itsct=apps_box_badge&itscg=30200) |
| 45 | +### Default Ports |
210 | 46 |
|
211 | | -[](https://apps.apple.com/de/app/igotify/id6473452512?itsct=apps_box_badge&itscg=30200) |
| 47 | +| Service | Port | |
| 48 | +|---------|------| |
| 49 | +| Gotify | 8680 | |
| 50 | +| iGotify | 8681 | |
212 | 51 |
|
213 | | -For Bugs or feedback please send me a PM in Discord under the name sebakaderangler or fill out the issue formular here on GitHub. |
| 52 | +## Documentation |
214 | 53 |
|
215 | | -On the login screen you need to enter the Gotify Server URL and the URL from the Notification Assist, if you use the URL with a port please enter it, too! (Image 1) |
| 54 | +For detailed documentation, visit the **[Wiki](https://github.com/androidseb25/iGotify-Notification-Assistent/wiki)**: |
216 | 55 |
|
217 | | -After the checks for the URL are finished and correct you need to login with your login credentials. (Image 2) |
| 56 | +- [How it works](https://github.com/androidseb25/iGotify-Notification-Assistent/wiki#how-it-works) - Architecture and token explanation |
| 57 | +- [Docker Installation](https://github.com/androidseb25/iGotify-Notification-Assistent/wiki#docker) - Full Docker setup with environment variables |
| 58 | +- [Linux Service](https://github.com/androidseb25/iGotify-Notification-Assistent/wiki#linux-service) - Native installation guide |
| 59 | +- [Reverse Proxy](https://github.com/androidseb25/iGotify-Notification-Assistent/wiki#reverse-proxy) - NGINX Proxy Manager configuration |
| 60 | +- [First Start](https://github.com/androidseb25/iGotify-Notification-Assistent/wiki#first-start) - First Start guide |
| 61 | +- [Roadmap](https://github.com/androidseb25/iGotify-Notification-Assistent/wiki#roadmap) - Planned features |
218 | 62 |
|
219 | | - |
| 63 | +## iOS App |
220 | 64 |
|
221 | | - |
222 | | - |
| 65 | +[](https://apps.apple.com/app/igotify/id6473452512) |
223 | 66 |
|
224 | | - |
225 | | - |
226 | | -And if everythink is ok, you're logged in 🎉 |
| 67 | +## Bugs & Feedback |
227 | 68 |
|
228 | | -Now you receive background notifications when Gotify receives a message. |
| 69 | +For bugs or feedback please send me a PM in Discord under the name [**sebakaderangler**](https://discord.com/users/432049343802114048) or fill out the [issue form](https://github.com/androidseb25/iGotify-Notification-Assistent/issues) here on GitHub. |
229 | 70 |
|
230 | | -## Translation |
231 | | -If you want to be a part of the translation team please create a issue: |
| 71 | +## SecNtfy Status |
232 | 72 |
|
233 | | -**Title: Translation: *language*** |
| 73 | +[Service Status](https://ipv64.net/status/secntfy) |
234 | 74 |
|
235 | | -**Description: crowdin username and why you would be a part of the translation team** |
| 75 | +## Contributing |
236 | 76 |
|
237 | | -maybe you've been invited soon |
| 77 | +See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. |
238 | 78 |
|
239 | | -The link to the crowdin project: [https://de.crowdin.com/project/igotify](https://de.crowdin.com/project/igotify) |
| 79 | +## License |
240 | 80 |
|
241 | | -## SecNtfy Status |
242 | | -Here you can find the online status of the service [Status](https://ipv64.net/status/secntfy) |
| 81 | +[MIT License](LICENSE) |
0 commit comments