Sign inSign up

mcpringle/dukeops

By mcpringle

•Updated 5 months ago

DukeOps: iJUG Self-Service Portal

Image
0

747

mcpringle/dukeops repository overview

⁠DukeOps

All Tests

iJUG Self-Service Portal

⁠Table of Contents

⁠About

DukeOps is a self-service portal for iJUG members.

⁠Versioning

DukeOps follows Semantic Versioning 2.0.0⁠. Version numbers are structured as MAJOR.MINOR.PATCH:

  • MAJOR versions introduce incompatible API or data changes,
  • MINOR versions add functionality in a backwards-compatible manner,
  • PATCH versions include backwards-compatible bug fixes.

This versioning scheme applies to the public API, database schema, and plugin interfaces. We aim to keep upgrades predictable and manageable. Breaking changes, new features, and fixes are documented in the CHANGELOG.md⁠ and in the release notes⁠.

⁠Contributing

You can find a lot of information on how you can contribute to DukeOps in the separate file CONTRIBUTING.md⁠. A curated list of contributors is available in the file CONTRIBUTORS.md⁠.

⁠Communication

⁠Matrix Chat

There is a channel at Matrix for quick and easy communication. This is publicly accessible for everyone. For developers as well as users. The communication in this chat is to be regarded as short-lived and has no documentary character.

You can find our Matrix channel here: @dukeops:ijug.eu⁠

⁠GitHub Discussions

We use the corresponding GitHub function for discussions. The discussions held here are long-lived and divided into categories for the sake of clarity. One important category, for example, is that for questions and answers.

Discussions on GitHub: https://github.com/ijug-ev/dukeops/discussions⁠
Questions and Answers: https://github.com/ijug-ev/dukeops/discussions/categories/q-a⁠

⁠Configuration

The file application.properties contains only some default values. To override the default values and to specify other configuration options, just set them as environment variables. The following sections describe all available configuration options. You only need to specify these options if your configuration settings differ from the defaults.

⁠Server Configuration

The server runs on port 8080 by default. If you don't like it, change it using an environment variable:

DUKEOPS_PORT=8080
⁠Instance Configuration
⁠Admin

When starting DukeOps, the system can automatically create instance admins. To enable this, set the following environment variable to a comma separated list of the email addresses of the admins:

If no user with the admin role is found in the database, a new instance admin will be created with the email address given.

Warning

This mechanism runs once on each start! It will nominate existing users with the same email address as admin. If there is no user with the specified email address, it will crate a new one. Existing admins are skipped.
⁠Mail Configuration

DukeOps supports sending email notifications. Configuration is done via environment variables using the DUKEOPS_MAIL_* naming scheme.

⁠Available Environment Variables
VariableDefaultDescription
DUKEOPS_MAIL_FROMnoreply@localhostSender address shown in outgoing emails (e.g. [email protected]⁠).
DUKEOPS_MAIL_REPLY_TO(empty)Optional reply-to address (e.g. [email protected]).
DUKEOPS_MAIL_HOSTlocalhostMail server address. Use a local MTA or external SMTP provider.
DUKEOPS_MAIL_PORT25Port for the SMTP server (e.g., 587 for STARTTLS or 465 for SSL).
DUKEOPS_MAIL_PROTOCOLsmtpProtocol used for sending email. Usually smtp.
DUKEOPS_MAIL_USERNAME(empty)Username for SMTP authentication, if required.
DUKEOPS_MAIL_PASSWORD(empty)Password for SMTP authentication, if required.
DUKEOPS_MAIL_SMTP_AUTHfalseWhether SMTP authentication is enabled.
DUKEOPS_MAIL_STARTTLS_ENABLEfalseEnable STARTTLS encryption (recommended for port 587).
DUKEOPS_MAIL_STARTTLS_REQUIREDfalseRequire STARTTLS (connection will fail if not supported).
DUKEOPS_MAIL_SSL_ENABLEfalseEnable SSL encryption (typically for port 465).
DUKEOPS_MAIL_CONNECTION_TIMEOUT5000Timeout in milliseconds for establishing the SMTP connection.
DUKEOPS_MAIL_TIMEOUT5000Timeout in milliseconds for waiting on SMTP server responses.
DUKEOPS_MAIL_WRITE_TIMEOUT5000Timeout in milliseconds for writing data to the SMTP server.
DUKEOPS_MAIL_ENCODINGUTF-8Default encoding for email subject and content.
⁠Example Configuration

In a .env file, CI system, or Docker environment:

[email protected]
[email protected]
[email protected]
DUKEOPS_MAIL_HOST=smtp.example.com
DUKEOPS_MAIL_PORT=587
DUKEOPS_MAIL_USERNAME=myuser
DUKEOPS_MAIL_PASSWORD=secret
DUKEOPS_MAIL_SMTP_AUTH=true
DUKEOPS_MAIL_STARTTLS_ENABLE=true

Tip

If you are using a local mail relay (e.g., [Nullmailer](https://untroubled.org/nullmailer/) or [Postfix](https://www.postfix.org/)), you can often omit authentication and encryption settings.
⁠Database Configuration

DukeOps needs a database to store the business data. By default, DukeOps comes with MariaDB⁠ drivers. MariaDB is recommended because we are using it during development, and it is highly tested with DukeOps. All free and open source JDBC compatible databases are supported, but you need to configure the JDBC driver dependencies accordingly. Please make sure that your database is using a Unicode character set to avoid problems storing data containing Unicode characters. The database user to access the DukeOps database executes automatic schema migrations and needs ALL PRIVILEGES.

Please configure the database connection using the following environment variables:

DUKEOPS_DB_URL=jdbc:mariadb://localhost:3306/dukeops?serverTimezone\=Europe/Zurich&allowMultiQueries=true
DUKEOPS_DB_USER=johndoe
DUKEOPS_DB_PASS=verysecret

The database schema will be migrated automatically by DukeOps.

⁠Important MySQL and MariaDB configuration

MySQL and MariaDB have a possible silent truncation problem with the GROUP_CONCAT command. To avoid this it is necessary, to configure these two databases to allow multi queries. Just add allowMultiQueries=true to the JDBC database URL like in this example (you may need to scroll the example code to the right):

DUKEOPS_DB_URL=jdbc:mariadb://localhost:3306/dukeops?serverTimezone\=Europe/Zurich&allowMultiQueries=true

AGPL License⁠

Copyright (C) Marcus Fihlon and the individual contributors to DukeOps.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/⁠.

Tag summary

Content type

Image

Digest

sha256:87581036d…

Size

213 MB

Last updated

5 months ago

docker pull mcpringle/dukeops:nightly