From 11eae035d900a6c07592e8b6d5a41e11248e8a5d Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Thu, 28 Dec 2023 14:24:21 +0000 Subject: [PATCH] readme: cleanup and up-to-dateness --- CONTRIBUTING.md | 39 +-------------------------------------- README.md | 43 ++++++++++++++----------------------------- 2 files changed, 15 insertions(+), 67 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2d753cc..5ba4e01 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,42 +3,5 @@ title: "Building/Contributing for developers" date: 2021-07-25T00:33:36+01:00 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. - -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=`: Alternative path to go executable. Useful for testing with unstable go releases. -* `VERSION=v`: Alternative verision number, useful to test update functionality. -* `COMMIT=`: Self explanatory. -* `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=`: Passed to `go build -tags`. -* `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. +[See the wiki page](https://wiki.jfa-go.com/docs/dev/). diff --git a/README.md b/README.md index 30d799f..986ce9c 100644 --- a/README.md +++ b/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. * [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. - -a rewrite of [jellyfin-accounts](https://github.com/hrfee/jellyfin-accounts) (original naming for both, ik -😂). +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. #### 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. - * 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. * 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. - * 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. -* 🔗 Ombi Integration: Automatically creates Ombi accounts for new users using their email address and login details, and your own defined set of permissions. -* Account management: Apply settings to your users individually or en masse, and delete users, optionally sending them an email notification with a reason. +* 🔗 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: 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. -* "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. -* Referrals: Users can be given special invites to send to their friends and families. -* 📨 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 +* "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, similar to some invite-only services like Bluesky. * 🔑 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. * 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 * Customize emails with variables and markdown * Specify contact and help messages to appear in emails and pages @@ -72,7 +65,7 @@ docker create \ -p 8056:8056 \ # -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/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 hrfee/jfa-go # hrfee/jfa-go:unstable for latest build from git ``` @@ -80,7 +73,7 @@ docker create \ ##### [Debian/Ubuntu](https://apt.hrfee.dev) ```sh 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 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 Download precompiled binaries from: * [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. * 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. -pprof Exposes pprof profiler on /debug/pprof. + -restore string + path to database backup to restore. -swagger Enable swagger at /swagger/index.html ``` @@ -154,18 +149,9 @@ Usage of jfa-go: #### 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. ---- - -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 -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 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: [](https://sponsors-endpoint.hrfee.pw/sponsor/profile/0) -[](https://sponsors-endpoint.hrfee.pw/sponsor/profile/0)