mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-22 00:50:12 +00:00
readme: cleanup and up-to-dateness
This commit is contained in:
parent
66e6b68b8c
commit
11eae035d9
@ -3,42 +3,5 @@ title: "Building/Contributing for developers"
|
|||||||
date: 2021-07-25T00:33:36+01:00
|
date: 2021-07-25T00:33:36+01:00
|
||||||
draft: false
|
draft: false
|
||||||
---
|
---
|
||||||
# Code
|
|
||||||
I use 4 spaces for indentation. Go should ideally be formatted with `goimports` and/or `gofmt`. I don't use a formatter on typescript, so don't worry about that.
|
|
||||||
|
|
||||||
Code in Go should ideally use `PascalCase` for exported values, and `camelCase` for non-exported, JSON for transferring data should use `snake_case`, and Typescript should use `camelCase`. Forgive me for my many inconsistencies in this, and feel free to fix them if you want.
|
[See the wiki page](https://wiki.jfa-go.com/docs/dev/).
|
||||||
|
|
||||||
Functions in Go that need to access `*appContext` should be generally be receivers, except when the behaviour could be seen as somewhat independent from it (`email.go` is the best example, its behaviour is broadly independent from the main app except from a couple config values).
|
|
||||||
|
|
||||||
|
|
||||||
# Compiling
|
|
||||||
|
|
||||||
The Makefile is more suited towards development than other build methods, and provides separate build stages to speed up compilation when only making changes to specific aspects of the project.
|
|
||||||
|
|
||||||
Prefix each of these with `make DEBUG=on `:
|
|
||||||
* `all` will download deps and build everything. The executable and data will be placed in `build`. This is only necessary the first time.
|
|
||||||
* `npm` will download all node.js build-time dependencies.
|
|
||||||
* `compile` will only compile go code into the `build/jfa-go` executable.
|
|
||||||
* `typescript` will compile typescript w/ sourcemaps into `build/data/web/js`.
|
|
||||||
* `bundle-css` will bundle CSS and place it in `build/data/web/css`.
|
|
||||||
* `inline` will inline the css and javascript used in the single-file crash report webpage.
|
|
||||||
* `configuration` will generate the `config-base.json` (used to render settings in the web ui) and `config-default.ini` and put them in `build/data`.
|
|
||||||
* `email` will compile email mjml, and copy the text versions in to `build/data`.
|
|
||||||
* `swagger`: generates swagger documentation for the API.
|
|
||||||
* `copy` will copy iconography, html, language files and static data into `build/data`.
|
|
||||||
|
|
||||||
## Environment variables
|
|
||||||
|
|
||||||
* `DEBUG=on/off`: If on, compiles with type-checking for typescript, sourcemaps, non-minified css and no symbol stripping.
|
|
||||||
* `INTERNAL=on/off`: Whether or not to embed file assets into the binary itself, or store them separately beside the binary.
|
|
||||||
* `UPDATER=on/off/docker`: Enable/Disable the updater, or set a special update type (currently only docker, which disables self-updating the binary).
|
|
||||||
* `TRAY=on/off`: Enable/disable the tray icon, which lets you start/stop/autostart on login. For linux, requires `libappindicator3-dev` for debian or the equivalent on other distributions.
|
|
||||||
* `GOESBUILD=on`: Use a locally installed `esbuild` binary. NPM doesn't provide builds for all os/architectures, so `npx esbuild` might not work for you, so the binary is compiled/installed with `go get`.
|
|
||||||
* `GOBINARY=<path to go>`: Alternative path to go executable. Useful for testing with unstable go releases.
|
|
||||||
* `VERSION=v<semver>`: Alternative verision number, useful to test update functionality.
|
|
||||||
* `COMMIT=<short commit>`: Self explanatory.
|
|
||||||
* `LDFLAGS=<ldflags>`: Passed to `go build -ldflags`.
|
|
||||||
* `E2EE=on/off`: Enable/disable end-to-end encryption support for Matrix, which is currently very broken. Must subsequently be enabled (with Advanced settings enabled) in Settings > Matrix.
|
|
||||||
* `TAGS=<tags>`: Passed to `go build -tags`.
|
|
||||||
* `OS=<os>`: Unrelated to GOOS, if set to `windows`, `-H=windowsgui` is passed to ldflags, which stops a windows terminal popping up when run.
|
|
||||||
* `RACE=on/off`: If on, compiles with the go race detector included.
|
|
||||||
|
43
README.md
43
README.md
@ -22,32 +22,25 @@ If you want a bit more of a guarantee of support, I've seen these projects menti
|
|||||||
* [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) is a fork of Overseerr, which can manage users and mainly acts as an Ombi alternative.
|
* [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) is a fork of Overseerr, which can manage users and mainly acts as an Ombi alternative.
|
||||||
* [Organizr](https://github.com/causefx/Organizr) doesn't focus on Jellyfin, but allows putting self-hosted services into "tabs" on a central page, and allows creating users, which lets one control who can access what.
|
* [Organizr](https://github.com/causefx/Organizr) doesn't focus on Jellyfin, but allows putting self-hosted services into "tabs" on a central page, and allows creating users, which lets one control who can access what.
|
||||||
---
|
---
|
||||||
jfa-go is a user management app for [Jellyfin](https://github.com/jellyfin/jellyfin) (and now [Emby](https://emby.media/)) that provides invite-based account creation as well as other features that make one's instance much easier to manage.
|
jfa-go is a user management app for [Jellyfin](https://github.com/jellyfin/jellyfin) (and [Emby](https://emby.media/) as 2nd class) that provides invite-based account creation as well as other features that make one's instance much easier to manage.
|
||||||
|
|
||||||
a rewrite of [jellyfin-accounts](https://github.com/hrfee/jellyfin-accounts) (original naming for both, ik
|
|
||||||
😂).
|
|
||||||
|
|
||||||
#### Features
|
#### Features
|
||||||
* 🧑 Invite based account creation: Send invites to your friends or family, and let them choose their own username and password without relying on you.
|
* 🧑 Invite based account creation: Send invites to your friends or family, and let them choose their own username and password without relying on you.
|
||||||
* Send invites via a link and/or email
|
* Send invites via a link and/or email, discord, telegram or matrix
|
||||||
* Granular control over invites: Validity period as well as number of uses can be specified.
|
* Granular control over invites: Validity period as well as number of uses can be specified.
|
||||||
* Account profiles: Assign settings profiles to invites so new users have your predefined permissions, homescreen layout, etc. applied to their account on creation.
|
* Account profiles: Assign settings profiles to invites so new users have your predefined permissions, homescreen layout, etc. applied to their account on creation.
|
||||||
* Password validation: Ensure users choose a strong password.
|
* Password validation: Ensure users choose a strong password.
|
||||||
* CAPTCHAs can be enabled to avoid bots
|
* CAPTCHAs and contact method verificatoin can be enabled to avoid bots.
|
||||||
* ⌛ User expiry: Specify a validity period, and new users accounts will be disabled/deleted after it. The period can be manually extended too.
|
* ⌛ User expiry: Specify a validity period, and new users accounts will be disabled/deleted after it. The period can be manually extended too.
|
||||||
* 🔗 Ombi Integration: Automatically creates Ombi accounts for new users using their email address and login details, and your own defined set of permissions.
|
* 🔗 Ombi Integration: Automatically creates Ombi accounts for new users using their email address and login details, and your own defined set of permissions. See [wiki](https://wiki.jfa-go.com/docs/ombi/) for a warning on this one.
|
||||||
* Account management: Apply settings to your users individually or en masse, and delete users, optionally sending them an email notification with a reason.
|
* Account management: Bulk or individually; apply settings, delete, disable/enable, send messages and much more.
|
||||||
|
* 📣 Announcements: Bulk message your users with announcements about your server.
|
||||||
* Telegram/Discord/Matrix Integration: Verify users via a chat bot, and send Password Resets, Announcements, etc. through it.
|
* Telegram/Discord/Matrix Integration: Verify users via a chat bot, and send Password Resets, Announcements, etc. through it.
|
||||||
* "My Account" Page: Allows users to reset their password, manage contact details, view their account expiry date, and send referrals. Custom messages can be added, with markdown.
|
* "My Account" Page: Allows users to reset their password, manage contact details, view their account expiry date, and send referrals. Can be customized with markdown.
|
||||||
* Referrals: Users can be given special invites to send to their friends and families.
|
* Referrals: Users can be given special invites to send to their friends and families, similar to some invite-only services like Bluesky.
|
||||||
* 📨 Email storage: Add your existing users email addresses through the UI, and jfa-go will ask new users for them on account creation.
|
|
||||||
* Email addresses can optionally be used instead of usernames
|
|
||||||
* 🔑 Password resets: When users forget their passwords and request a change in Jellyfin, jfa-go reads the PIN from the created file and sends it straight to them via email/telegram.
|
* 🔑 Password resets: When users forget their passwords and request a change in Jellyfin, jfa-go reads the PIN from the created file and sends it straight to them via email/telegram.
|
||||||
* Can also be done through the "My Account" page if enabled.
|
* Can also be done through the "My Account" page if enabled.
|
||||||
* Admin Notifications: Get notified when someone creates an account, or an invite expires.
|
* Admin Notifications: Get notified when someone creates an account, or an invite expires.
|
||||||
* 📣 Announcements: Bulk message your users with announcements about your server.
|
|
||||||
* Authentication via Jellyfin: Instead of using separate credentials for jfa-go and Jellyfin, jfa-go can use it as the authentication provider.
|
|
||||||
* Enables the usage of jfa-go by multiple people
|
|
||||||
* 🌓 Customizations
|
* 🌓 Customizations
|
||||||
* Customize emails with variables and markdown
|
* Customize emails with variables and markdown
|
||||||
* Specify contact and help messages to appear in emails and pages
|
* Specify contact and help messages to appear in emails and pages
|
||||||
@ -72,7 +65,7 @@ docker create \
|
|||||||
-p 8056:8056 \
|
-p 8056:8056 \
|
||||||
# -p 8057:8057 if using tls
|
# -p 8057:8057 if using tls
|
||||||
-v /path/to/.config/jfa-go:/data \ # Path to wherever you want to store the config file and other data
|
-v /path/to/.config/jfa-go:/data \ # Path to wherever you want to store the config file and other data
|
||||||
-v /path/to/jellyfin:/jf \ # Path to Jellyfin config directory, ignore if using Emby
|
-v /path/to/jellyfin:/jf \ # Only needed for password resets through Jellyfin, ignore if not using or using Emby
|
||||||
-v /etc/localtime:/etc/localtime:ro \ # Makes sure time is correct
|
-v /etc/localtime:/etc/localtime:ro \ # Makes sure time is correct
|
||||||
hrfee/jfa-go # hrfee/jfa-go:unstable for latest build from git
|
hrfee/jfa-go # hrfee/jfa-go:unstable for latest build from git
|
||||||
```
|
```
|
||||||
@ -80,7 +73,7 @@ docker create \
|
|||||||
##### [Debian/Ubuntu](https://apt.hrfee.dev)
|
##### [Debian/Ubuntu](https://apt.hrfee.dev)
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get update && sudo apt-get install curl apt-transport-https gnupg
|
sudo apt-get update && sudo apt-get install curl apt-transport-https gnupg
|
||||||
curl https://apt.hrfee.dev/hrfee.pubkey.gpg | sudo apt-key add -
|
curl https://apt.hrfee.dev/hrfee.pubkey.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.hrfee.dev.gpg
|
||||||
|
|
||||||
# For stable releases
|
# For stable releases
|
||||||
echo "deb https://apt.hrfee.dev trusty main" | sudo tee /etc/apt/sources.list.d/hrfee.list
|
echo "deb https://apt.hrfee.dev trusty main" | sudo tee /etc/apt/sources.list.d/hrfee.list
|
||||||
@ -108,7 +101,7 @@ Available on the AUR as:
|
|||||||
##### Other platforms
|
##### Other platforms
|
||||||
Download precompiled binaries from:
|
Download precompiled binaries from:
|
||||||
* [The releases section](https://github.com/hrfee/jfa-go/releases) (stable)
|
* [The releases section](https://github.com/hrfee/jfa-go/releases) (stable)
|
||||||
* [Buildrone](https://builds.hrfee.dev/view/hrfee/jfa-go) (nightly)
|
* [dl.jfa-go.com](https://dl.jfa-go.com) (nightly)
|
||||||
|
|
||||||
unzip the `jfa-go`/`jfa-go.exe` executable to somewhere useful.
|
unzip the `jfa-go`/`jfa-go.exe` executable to somewhere useful.
|
||||||
* For \*nix/macOS users, `chmod +x jfa-go` then place it somewhere in your PATH like `/usr/bin`.
|
* For \*nix/macOS users, `chmod +x jfa-go` then place it somewhere in your PATH like `/usr/bin`.
|
||||||
@ -147,6 +140,8 @@ Usage of jfa-go:
|
|||||||
alternate port to host web ui on.
|
alternate port to host web ui on.
|
||||||
-pprof
|
-pprof
|
||||||
Exposes pprof profiler on /debug/pprof.
|
Exposes pprof profiler on /debug/pprof.
|
||||||
|
-restore string
|
||||||
|
path to database backup to restore.
|
||||||
-swagger
|
-swagger
|
||||||
Enable swagger at /swagger/index.html
|
Enable swagger at /swagger/index.html
|
||||||
```
|
```
|
||||||
@ -154,18 +149,9 @@ Usage of jfa-go:
|
|||||||
#### Systemd
|
#### Systemd
|
||||||
jfa-go does not run as a daemon by default. Run `jfa-go systemd` to create a systemd `.service` file in your current directory, which you can copy into `~/.config/systemd/user` or somewhere else.
|
jfa-go does not run as a daemon by default. Run `jfa-go systemd` to create a systemd `.service` file in your current directory, which you can copy into `~/.config/systemd/user` or somewhere else.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
If you're switching from jellyfin-accounts, copy your existing `~/.jf-accounts` to:
|
|
||||||
|
|
||||||
* `XDG_CONFIG_DIR/jfa-go` (usually ~/.config/jfa-go) on \*nix systems,
|
|
||||||
* `%AppData%/jfa-go` on Windows,
|
|
||||||
* `~/Library/Application Support/jfa-go` on macOS.
|
|
||||||
|
|
||||||
(or specify config/data path with `-config/-data` respectively.)
|
|
||||||
|
|
||||||
#### Contributing
|
#### Contributing
|
||||||
See [the wiki page](https://wiki.jfa-go.com/docs/dev/) or [CONTRIBUTING.md](https://github.com/hrfee/jfa-go/blob/main/CONTRIBUTING.md).
|
See [the wiki page](https://wiki.jfa-go.com/docs/dev/).
|
||||||
##### Translation
|
##### Translation
|
||||||
[![Translation status](https://weblate.jfa-go.com/widgets/jfa-go/-/multi-auto.svg)](https://weblate.jfa-go.com/engage/jfa-go/)
|
[![Translation status](https://weblate.jfa-go.com/widgets/jfa-go/-/multi-auto.svg)](https://weblate.jfa-go.com/engage/jfa-go/)
|
||||||
|
|
||||||
@ -175,4 +161,3 @@ For translations, use the weblate instance [here](https://weblate.jfa-go.com/eng
|
|||||||
Big thanks to those who sponsor me. You can see them below:
|
Big thanks to those who sponsor me. You can see them below:
|
||||||
|
|
||||||
[<img src="https://sponsors-endpoint.hrfee.pw/sponsor/avatar/0" width="35">](https://sponsors-endpoint.hrfee.pw/sponsor/profile/0)
|
[<img src="https://sponsors-endpoint.hrfee.pw/sponsor/avatar/0" width="35">](https://sponsors-endpoint.hrfee.pw/sponsor/profile/0)
|
||||||
[<img src="https://sponsors-endpoint.hrfee.pw/sponsor/avatar/1" width="35">](https://sponsors-endpoint.hrfee.pw/sponsor/profile/0)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user