Go to file
Jannis Mattheis d931dfc696 Remove hardcoded url & use absolute url to make requests 2018-03-18 17:29:15 +01:00
api Use mode in all tests 2018-03-18 17:29:15 +01:00
auth Use mode in all tests 2018-03-18 17:29:15 +01:00
config Make password strength configurable 2018-02-23 19:39:34 +01:00
database Adjust message database impl 2018-03-11 17:58:44 +01:00
docker Add docker & build on tags 2018-02-23 19:01:06 +01:00
docs Use mode in all tests 2018-03-18 17:29:15 +01:00
error Use mode in all tests 2018-03-18 17:29:15 +01:00
mode Add mode constant 2018-03-18 17:29:15 +01:00
model Add ID to model.Client & model.Application 2018-03-11 17:58:44 +01:00
router Use uigo in router 2018-03-18 17:29:15 +01:00
runner Add some logging & version info building 2018-02-21 19:27:31 +01:00
stream Check origin on web socket requests in prod mode 2018-03-18 17:29:15 +01:00
ui Remove hardcoded url & use absolute url to make requests 2018-03-18 17:29:15 +01:00
uigo Add serve func for uigo 2018-03-18 17:29:15 +01:00
.gitignore Add packr file pattern to gitignore 2018-03-10 13:00:55 +01:00
.travis.yml Add eslint to travis build 2018-03-18 17:29:15 +01:00
CODE_OF_CONDUCT.md Add code of conduct 2018-03-02 21:04:51 +01:00
Gopkg.lock Add support for ssl. 2018-02-19 17:40:05 +01:00
Gopkg.toml Add support for ssl. 2018-02-19 17:40:05 +01:00
LICENSE Add license 2018-02-08 19:52:58 +01:00
Makefile Remove packr step in makefile 2018-03-10 13:00:55 +01:00
README.md Adjust README for UI config/building 2018-03-18 17:29:15 +01:00
app.go Add radix param & remove unused import 2018-03-18 17:29:15 +01:00
docker-push.sh Add docker & build on tags 2018-02-23 19:01:06 +01:00

README.md

Gotify Server

Build Status codecov Go Report Card Swagger Valid Api Docs latest release version

Motivation

We wanted a simple server for sending and receiving messages (in real time per websocket). 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.

Features

  • API (see api docs) for
    • sending messages
    • receiving messages per websocket
    • user management
    • client/device & application management
  • [In Progress] Web-UI
  • [In Progress] Android-App -> gotify/android

Installation

Docker

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

Binary

Visit the releases page and download the zip for your OS.

Configuration

File

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

Environment

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

Database

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

Setup Dev Environment

Setup Server

Download go dependencies with golang/dep.

$ dep ensure

Run golang server.

$ go run app.go

Setup UI

Commands must be executed inside the ui directory.

Download dependencies with npm.

$ npm install

Star the UI development server.

$ npm start

Open http://localhost:3030 inside your favorite browser.

The UI requires a Gotify server running on localhost:80 this can be adjusted inside the ui/src/index.js.

Building

Build Server

$ go build app.go

Build UI

$ npm run build

Cross-Platform

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.

Tests

The tests can be executed with:

$ make test
# or
$ go test ./...

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details