Skip to content

Commit 8061100

Browse files
authored
Merge pull request #215 from nicedevil007/main
Readme/Wiki/Installer script added
2 parents 729727e + 0320f85 commit 8061100

5 files changed

Lines changed: 406 additions & 222 deletions

File tree

.env.example

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# iGotify Notification Assistant - Environment Configuration
2+
#
3+
# Copy this file to .env and configure the values
4+
# Documentation: https://github.com/androidseb25/iGotify-Notification-Assistent/wiki#environment-variables
5+
6+
# ─── Required ───────────────────────────────────────────────────────
7+
# Password for the default Gotify user
8+
GOTIFY_DEFAULTUSER_PASS=my-very-strong-password
9+
10+
# ─── Connection Settings ────────────────────────────────────────────
11+
# These are ONLY required when Gotify & iGotify are NOT accessible via a public domain.
12+
# If both services are available over a domain, leave these empty.
13+
#
14+
# WARNING: If you set any of these three variables, you MUST set ALL THREE.
15+
#
16+
# Examples:
17+
# Internal: http://gotify (container name / local DNS)
18+
# External: https://mygotify.domain.tld
19+
#
20+
# For multiple instances, separate with semicolons:
21+
# GOTIFY_URLS='http://gotify;http://gotify2'
22+
# GOTIFY_CLIENT_TOKENS='cXXXXXXXX1;cXXXXXXXX2'
23+
# SECNTFY_TOKENS='NTFY-DEVICE-XXXXXX1;NTFY-DEVICE-XXXXXX2'
24+
25+
GOTIFY_URLS=
26+
GOTIFY_CLIENT_TOKENS=
27+
SECNTFY_TOKENS=
28+
29+
# ─── Optional Settings ──────────────────────────────────────────────
30+
# Enable/disable console logging (default: true)
31+
ENABLE_CONSOLE_LOG='true'
32+
33+
# Enable/disable the API endpoint page (default: true)
34+
ENABLE_SCALAR_UI='true'

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
bin
22
obj
33
.DS_Store
4+
.env

README.md

Lines changed: 44 additions & 205 deletions
Original file line numberDiff line numberDiff line change
@@ -4,239 +4,78 @@
44

55
# iGotify
66

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.
88

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.
1010
11-
 
12-
## ⭐ Features
11+
## Features
1312

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
1817

19-
 
20-
## 🔧 How to Install Gotify & iGotify-Notification-Assist
18+
## Installation
2119

22-
### 🐳 Docker `docker-compose.yaml`
20+
There are two ways to deploy iGotify:
2321

24-
### Installation
22+
### Option 1: Docker (Recommended)
2523

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.
5825

5926
```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
11230

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
11434

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
12037
```
12138

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
12840

12941
```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
20343
```
204-
*Thank you to @majo1989 for sharing this config*
205-
206-
 
207-
## 🔧 Install iGotify app
20844

209-
Download from [AppStore](https://apps.apple.com/de/app/igotify/id6473452512?itsct=apps_box_badge&itscg=30200)
45+
### Default Ports
21046

211-
[![Download on the App Store](https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/de-de?size=350&releaseDate=1702425600)](https://apps.apple.com/de/app/igotify/id6473452512?itsct=apps_box_badge&itscg=30200)
47+
| Service | Port |
48+
|---------|------|
49+
| Gotify | 8680 |
50+
| iGotify | 8681 |
21251

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
21453

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)**:
21655

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
21862

219-
 
63+
## iOS App
22064

221-
![](https://raw.githubusercontent.com/androidseb25/iGotify-Notification-Assistent/main/login_screen_1.png)
222-
![](https://raw.githubusercontent.com/androidseb25/iGotify-Notification-Assistent/main/login_screen_2.png)
65+
[![Download on the App Store](https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250&releaseDate=1702425600)](https://apps.apple.com/app/igotify/id6473452512)
22366

224-
 
225-
226-
And if everythink is ok, you're logged in 🎉
67+
## Bugs & Feedback
22768

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.
22970

230-
## Translation
231-
If you want to be a part of the translation team please create a issue:
71+
## SecNtfy Status
23272

233-
**Title: Translation: *language***
73+
[Service Status](https://ipv64.net/status/secntfy)
23474

235-
**Description: crowdin username and why you would be a part of the translation team**
75+
## Contributing
23676

237-
maybe you've been invited soon
77+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
23878

239-
The link to the crowdin project: [https://de.crowdin.com/project/igotify](https://de.crowdin.com/project/igotify)
79+
## License
24080

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

Comments
 (0)