Go to file
Jannis Mattheis 9f5ed344f4 [#34] Add key to react list
The list cached the height while switching between applications.
We fix this with the use of the key property, that means that react will
not reuse the component and make a new one.

see https://reactjs.org/docs/reconciliation.html
2018-04-13 18:56:11 +02:00
api [#34] Adjust message api to be paged 2018-04-13 18:56:11 +02:00
auth Add UploadApplicationImage API 2018-03-31 18:44:49 +02:00
config Add UploadedImagesDir config setting 2018-03-31 18:44:49 +02:00
database [#34] Add db calls for paged message api 2018-04-13 18:56:11 +02:00
docker Add docker & build on tags 2018-02-23 19:01:06 +01:00
docs [#34] Update update api documentation & Increase api version 2018-04-13 18:56:11 +02:00
error [#34] Add error messages for min and max 2018-04-13 18:56:11 +02:00
mode Use gofmt -s 2018-03-25 19:33:29 +02:00
model [#34] Adjust message api to be paged 2018-04-13 18:56:11 +02:00
router [#34] Update update api documentation & Increase api version 2018-04-13 18:56:11 +02:00
runner Remove unnecessary println 2018-03-31 18:44:49 +02:00
test [#34] Add db calls for paged message api 2018-04-13 18:56:11 +02:00
ui [#34] Add key to react list 2018-04-13 18:56:11 +02:00
.gitignore Add images folder to gitignore 2018-03-31 18:44:49 +02:00
.travis.yml Add js lint & building to make file 2018-03-31 18:44:49 +02:00
CODE_OF_CONDUCT.md Add code of conduct 2018-03-02 21:04:51 +01:00
Gopkg.lock Add UploadApplicationImage API 2018-03-31 18:44:49 +02: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 Add js lint & building to make file 2018-03-31 18:44:49 +02:00
README.md Add UploadedImagesDir config setting 2018-03-31 18:44:49 +02:00
app.go Create image folder with right permission 2018-03-31 18:44:49 +02:00
docker-push.sh Add docker & build on tags 2018-02-23 19:01:06 +01:00
logo.png Add logo 2018-03-18 19:22:27 +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)
uploadedimagesdir: images # the directory for storing uploaded images

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
GOTIFY_UPLOADEDIMAGESDIR=images

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