- Motivation
- Features
- Installation
- Configuration
- Setup Dev Environment
- Add Message Examples
- Building
- Tests
- Versioning
- License
We wanted a simple server for sending and receiving messages (in real time per web socket). For this, not many open source projects existed and most of the existing ones were abandoned. Also, a requirement was that it can be self-hosted. We know there are many free and commercial push services out there.
- REST-API for
- sending messages
- receiving messages per websocket
- user management
- client/device & application management
- REST-API Documentation (also available at
/docs
) - Web-UI
- Android-App -> gotify/android
Google Play and the Google Play logo are trademarks of Google LLC.
The docker image is available on docker hub at gotify/server.
$ docker run -p 80:80 gotify/server
Also there is a specific docker image for arm-7 processors (raspberry pi), named gotify/server-arm7.
$ docker run -p 80:80 gotify/server-arm7
Visit the releases page and download the zip for your OS.
server:
port: 80 # the port for the http server
ssl:
enabled: false # if https should be enabled
redirecttohttps: true # redirect to https if site is accessed by http
port: 443 # the https port
certfile: # the cert file (leave empty when using letsencrypt)
certkey: # the cert key (leave empty when using letsencrypt)
letsencrypt:
enabled: false # if the certificate should be requested from letsencrypt
accepttos: false # if you accept the tos from letsencrypt
cache: data/certs # the directory of the cache from letsencrypt
hosts: # the hosts for which letsencrypt should request certificates
- mydomain.tld
- myotherdomain.tld
database: # for database see (configure database section)
dialect: sqlite3
connection: data/gotify.db
defaultuser: # on database creation, gotify creates an admin user
name: admin # the username of the default user
pass: admin # the password of the default user
passstrength: 10 # the bcrypt password strength (higher = better but also slower)
uploadedimagesdir: data/images # the directory for storing uploaded images
GOTIFY_SERVER_PORT=80
GOTIFY_SERVER_SSL_ENABLED=false
GOTIFY_SERVER_SSL_REDIRECTTOHTTPS=true
GOTIFY_SERVER_SSL_PORT=443
GOTIFY_SERVER_SSL_CERTFILE=
GOTIFY_SERVER_SSL_CERTKEY=
GOTIFY_SERVER_SSL_LETSENCRYPT_ENABLED=false
GOTIFY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS=false
GOTIFY_SERVER_SSL_LETSENCRYPT_CACHE=certs
# lists are a little weird but do-able (:
GOTIFY_SERVER_SSL_LETSENCRYPT_HOSTS=- mydomain.tld\n- myotherdomain.tld
GOTIFY_DATABASE_DIALECT=sqlite3
GOTIFY_DATABASE_CONNECTION=gotify.db
GOTIFY_DEFAULTUSER_NAME=admin
GOTIFY_DEFAULTUSER_PASS=admin
GOTIFY_PASSSTRENGTH=10
GOTIFY_UPLOADEDIMAGESDIR=images
You can obtain an application-token from the apps tab inside the UI or using the REST-API (GET /application
).
NOTE: Assuming Gotify is running on http://localhost:8008
.
curl
curl -X POST "http://localhost:8008/message?token=<token-from-application>" -F "title=My Title" -F "message=This is my message"
More examples can be found here
Dialect | Connection |
---|---|
sqlite3 | path/to/database.db |
mysql | gotify:secret@/gotifydb?charset=utf8&parseTime=True&loc=Local |
postgres | host=localhost port=3306 user=gotify dbname=gotify password=secret |
Download go dependencies with golang/dep.
$ dep ensure
Run golang server.
$ go run app.go
Commands must be executed inside the ui directory.
Download dependencies with npm.
$ npm install
Star the UI development server.
$ npm start
Open http://localhost:3000
inside your favorite browser.
The UI requires a Gotify server running on localhost:80
this can be adjusted inside the ui/src/index.tsx.
$ go build app.go
$ npm run build
The project has a CGO reference (because of sqlite3), therefore a GCO cross compiler is needed for compiling for other platforms. See .travis.yml on how we do that.
The tests can be executed with:
$ make test
# or
$ go test ./...
We use SemVer for versioning. For the versions available, see the tags on this repository.
This project is licensed under the MIT License - see the LICENSE file for details