Explain configuration in README.md

This commit is contained in:
eikendev 2021-01-16 00:17:58 +01:00
parent 51c2e94f0a
commit 9f930a0292
No known key found for this signature in database
GPG key ID: A1BDB1B28C8EF694
2 changed files with 89 additions and 12 deletions

View file

@ -27,11 +27,18 @@ For now, only Matrix is supported, but support for different services like [Tele
I am myself experimenting with Matrix currently because I like the idea of a federated, synchronized but still end-to-end encrypted protocol. I am myself experimenting with Matrix currently because I like the idea of a federated, synchronized but still end-to-end encrypted protocol.
If you haven't tried it yet, I suggest you to check it out. If you haven't tried it yet, I suggest you to check it out.
## Usage ## Configuration
PushBits is meant to be self-hosted. PushBits is meant to be self-hosted.
You are advised to install PushBits behind a reverse proxy and enable TLS. You are advised to install PushBits behind a reverse proxy and enable TLS.
To see what can be configured, have a look at the `config.sample.yml` file inside the root of the repository.
Settings can optionally be provided via the environment.
The name of the environment variable is composed of a starting `PUSHBITS_`, followed by the keys of the setting, all
joined with `_`.
As an example, the HTTP port can be provided as an environment variable called `PUSHBITS_HTTP_PORT`.
To get started, here is a Docker Compose file you can use. To get started, here is a Docker Compose file you can use.
```yaml ```yaml
version: '2' version: '2'
@ -42,17 +49,23 @@ services:
ports: ports:
- 8080:8080 - 8080:8080
environment: environment:
PUSHBITS_DATABASE_DIALECT: 'sqlite3' # Can use either 'sqlite3' or 'mysql'. PUSHBITS_DATABASE_DIALECT: 'sqlite3'
PUSHBITS_ADMIN_MATRIXID: '@your/matrix/username:matrix.org' # The matrix account on which the admin will receive their notifications. PUSHBITS_ADMIN_MATRIXID: '@your/matrix/username:matrix.org' # The Matrix account on which the admin will receive their notifications.
PUSHBITS_ADMIN_PASSWORD: 'your/matrix/password' # The login password of the admin for PushBits. Default username is 'admin'. PUSHBITS_ADMIN_PASSWORD: 'your/pushbits/password' # The login password of the admin account. Default username is 'admin'.
PUSHBITS_MATRIX_USERNAME: 'your/pushbits/username' # The matrix account from which PushBits notifications are sent to users. PUSHBITS_MATRIX_USERNAME: 'your/matrix/username' # The Matrix account from which notifications are sent to all users.
PUSHBITS_MATRIX_PASSWORD: 'your/pushbits/password' # The password of the above account. PUSHBITS_MATRIX_PASSWORD: 'your/matrix/password' # The password of the above account.
volumes: volumes:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- ./mount/data:/data - ./data:/data
``` ```
In this example, the configuration file would be located at `./data/config.yml` on the host.
The SQLite database would be written to `./data/pushbits.db`.
**Don't forget to adjust the permissions** of the `./data` directory, otherwise PushBits will fail to operate.
## Usage
Now, how can you interact with the server? Now, how can you interact with the server?
At the time of writing, there is no fancy GUI built-in. At the time of writing, there is no fancy GUI built-in.
I don't do much front end development myself, so if you want to contribute in this regard I'm happy if you reach out! I don't do much front end development myself, so if you want to contribute in this regard I'm happy if you reach out!
@ -61,6 +74,21 @@ Anyway, I wrote [a little CLI tool](https://github.com/PushBits/cli) to make bas
It helps you to create new users and applications. It helps you to create new users and applications.
You will find further instructions in the linked repository. You will find further instructions in the linked repository.
After you have setup a user and an application, you can use the API to send a push notification to your Matrix account.
```bash
curl \
--header "Content-Type: application/json" \
--request POST \
--data '{"message":"my message","title":"my title"}' \
"https://pushbits.example.com/message?token=$TOKEN"
```
## Acknowledgments
The idea for this software and most parts of the initial source are heavily inspired by [Gotify](https://gotify.net/).
Many thanks to [jmattheis](https://jmattheis.de/) for his well-structured code.
## Development ## Development
The source code is located on [GitHub](https://github.com/eikendev/pushbits). The source code is located on [GitHub](https://github.com/eikendev/pushbits).
@ -69,8 +97,3 @@ You can retrieve it by checking out the repository as follows.
```bash ```bash
git clone https://github.com/eikendev/pushbits.git git clone https://github.com/eikendev/pushbits.git
``` ```
## Acknowledgments
The idea for this software and most parts of the initial source are heavily inspired by [Gotify](https://gotify.net/).
Many thanks to [jmattheis](https://jmattheis.de/) for his well-structured code.

54
config.example.yml Normal file
View file

@ -0,0 +1,54 @@
# A sample configuration for PushBits.
# Populated fields contain their default value.
# Required fields are marked with [required].
debug: false
http:
# The address to listen on. If empty, listens on all available IP addresses of the system.
listenaddress: ''
# The port to listen on.
port: 8080
database:
# Currently sqlite3 and mysql are supported.
dialect: 'sqlite3'
# For sqlite3, specifies the database file. For mysql, specifies the connection string. Check out
# https://github.com/go-sql-driver/mysql#dsn-data-source-name for details.
connection: 'pushbits.db'
admin:
# The username of the initial admin.
name: 'admin'
# The password of the initial admin.
password: 'admin'
# The Matrix ID of the initial admin, where notifications for that admin are sent to.
# [required]
matrixid: ''
matrix:
# The Matrix server to use for sending notifications.
homeserver: 'https://matrix.org'
# The username of the Matrix account to send notifications from.
# [required]
username: ''
# The password of the Matrix account to send notifications from.
# [required]
password: ''
crypto:
# Configuration of the KDF for password storage. Do not change unless you know what you are doing!
argon2:
memory: 131072
iterations: 4
parallelism: 4
saltlength: 16
keylength: 32