Document v0.2.0

This commit is contained in:
Lukas Kreussel
2025-12-01 17:51:22 +01:00
parent 2c417ba806
commit 0aa158f906
12 changed files with 78 additions and 51 deletions

6
Cargo.lock generated
View File

@@ -1588,7 +1588,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "jellyfin-api"
version = "0.1.0"
version = "0.2.0"
dependencies = [
"reqwest",
"serde",
@@ -1602,7 +1602,7 @@ dependencies = [
[[package]]
name = "jellyswarrm-macros"
version = "0.1.5"
version = "0.2.0"
dependencies = [
"proc-macro2",
"quote",
@@ -1614,7 +1614,7 @@ dependencies = [
[[package]]
name = "jellyswarrm-proxy"
version = "0.1.5"
version = "0.2.0"
dependencies = [
"aes-gcm",
"anyhow",

View File

@@ -7,7 +7,7 @@ members = [
resolver = "2"
[workspace.package]
version = "0.1.5"
version = "0.2.0"
edition = "2021"
authors = ["lukaskreussel@gmail.com"]
repository = "https://github.com/LLukas22/Jellyswarrm"

View File

@@ -26,7 +26,8 @@ Jellyswarrm is a reverse proxy that lets you combine multiple Jellyfin servers i
<p align="center">
<!-- Side-by-side smaller views, same height -->
<img src="./media/servers.png" alt="Server Selection" height="250px" style="margin-right:10px;">
<img src="./media/users.png" alt="User Mappings" height="250px">
<img src="./media/users.png" alt="User Mappings" height="250px" style="margin-right:10px;">
<img src="./media/user_page.png" alt="Settings" height="250px">
</p>
## Features
@@ -40,17 +41,16 @@ Jellyswarrm is a reverse proxy that lets you combine multiple Jellyfin servers i
* **Direct Playback** Play content straight from the original server without extra overhead.
* **User Mapping** Link accounts across servers for a consistent user experience.
* **API Compatibility** Appears as a normal Jellyfin server, so existing apps and tools still work.
* **Server Federation** Automatically sync users across connected servers.
* **User Page** Personal dashboard for managing credentials and libraries.
### ⚠️ In Progress
- **QuickConnect** This feature isnt available yet. Please log in using your **username & password** for now.
* **QuickConnect** This feature isnt available yet. Please log in using your **username & password** for now.
* **Websocket Support** Needed for real-time features like SyncPlay (not fully reliable yet).
* **Audio Streaming** May not function correctly (still untested in many cases).
* **Automatic Bitrate Adjustment** Stream quality based on network conditions isnt supported yet.
### 🚫 Not Planned
* **Admin Functions** Server administration (user management, settings, etc.) wont be supported through Jellyswarrm.
* **Media Management** Features like adding or deleting media libraries through Jellyswarrm are not implemented yet.
---

View File

@@ -1,7 +1,9 @@
[package]
name = "jellyfin-api"
version = "0.1.0"
edition = "2021"
version.workspace = true
edition.workspace = true
authors.workspace = true
repository.workspace = true
[dependencies]
reqwest = { workspace = true }

View File

@@ -73,7 +73,8 @@ impl FederatedUserService {
};
let config = self.config.read().await;
let admin_password = &config.password;
let admin_password = config.password.clone();
drop(config);
for server in servers {
// Check if we have admin credentials for this server
@@ -90,7 +91,7 @@ impl FederatedUserService {
} {
// Decrypt admin password
let decrypted_admin_password =
match decrypt_password(&admin.password, admin_password) {
match decrypt_password(&admin.password, &admin_password) {
Ok(p) => p,
Err(e) => {
error!(

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 221 KiB

BIN
docs/images/federated.png Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 383 KiB

View File

@@ -1,6 +1,10 @@
# Jellyswarrm UI Documentation
## Adding Servers
## Admin Interface Overview
The Admin Interface is displayed when you log in with an administrator account. It provides tools to manage connected Jellyfin servers, user accounts, and global settings for your Jellyswarrm instance.
### Adding Servers
<p align="center">
<img src="./images/servers.png" alt="Servers" width="90%">
@@ -24,58 +28,78 @@ To connect your Jellyfin servers to Jellyswarrm, follow these steps:
To remove a server, simply click the **Delete** button next to the one you want to remove.
## User Mappings
Jellyswarrm allows you to link users across multiple Jellyfin servers into a single unified account. This way, users can log in once and access media from all their connected servers seamlessly.
---
### Adding Users
#### Automatic Mapping
If a user already exists on one or more connected servers, they can log in directly with their existing Jellyfin credentials. Jellyswarrm will automatically create a local user and set up the necessary server mappings.
If the same username and password exist on multiple servers, Jellyswarrm will link those accounts together automatically. This provides a smooth experience, giving the user unified access to all linked servers.
---
#### Manual Mapping
#### Federarated Servers
<p align="center">
<img src="./images/add_user.png" alt="Add User" width="90%">
</p>
<img src="./images/federated.png" alt="Add User with Federation" width="90%">
</p>
To manually create a user in Jellyswarrm:
1. Open the Jellyswarrm Web UI in your browser:
`http://[JELLYSWARRM_HOST]:[JELLYSWARRM_PORT]/ui`
2. Log in with the admin credentials you set during deployment.
3. Navigate to the **Users** section.
4. Define a **username** and **password** for the new user.
5. Click **Add** to create the user.
After you add a server, you can optionally provide admin credentials. This allows Jellyswarrm to create and manage user accounts on that server automatically when using the federation features. Simply press the admin icon next to the server entry and enter the admin username and password for that Jellyfin instance.
### User Management & Federation
Jellyswarrm allows you to link users across multiple Jellyfin servers into a single unified account. This way, users can log in once and access media from all their connected servers seamlessly.
---
### Adding Server Mappings to a User
### Adding Users
#### Federation (Recommended)
When creating a new user in Jellyswarrm via the Admin UI, you can check the **Enable Federation** option.
<p align="center">
<img src="./images/add_user.png" alt="Add User with Federation" width="90%">
</p>
This will automatically:
1. Create the user on all connected Jellyfin servers (requires Admin credentials to be configured for those servers).
2. Set the same password for all of them.
3. Automatically create the server mappings in Jellyswarrm.
This ensures that the user exists everywhere and is ready to use immediately without manual configuration.
#### Automatic Mapping (Login)
If a user already exists on one or more connected servers, they can log in directly with their existing Jellyfin credentials. Jellyswarrm will automatically create a local user and set up the necessary server mappings.
If the same username and password exist on multiple servers, Jellyswarrm will link those accounts together automatically. This provides a smooth experience, giving the user unified access to all linked servers.
#### Manual Creation
To manually create a user in Jellyswarrm without federation:
1. Open the Jellyswarrm Web UI in your browser:
`http://[JELLYSWARRM_HOST]:[JELLYSWARRM_PORT]/ui`
2. Log in with the admin credentials you set during deployment.
3. Navigate to the **Users** section.
4. Define a **username** and **password** for the new user.
5. Uncheck **Enable Federation** if you only want to create the user locally in Jellyswarrm.
6. Click **Add** to create the user.
---
### Adding Server Mappings to a User
<p align="center">
<img src="./images/add_mapping.png" alt="Add Mapping" width="90%">
</p>
</p>
To link a user to additional server accounts:
To manually link a user to additional server accounts (e.g. if they have different passwords or usernames on different servers):
1. In the **Users** section, find the user you want to extend with server mappings.
2. If the user does not yet have a mapping for a server, a dropdown menu will appear under their entry.
3. Select the target server from the dropdown.
4. Enter the **username** and **password** for the Jellyfin account on that server.
5. Click **Add** to save the mapping.
1. In the **Users** section, find the user you want to extend with server mappings.
2. If the user does not yet have a mapping for a server, a dropdown menu will appear under their entry.
3. Select the target server from the dropdown.
4. Enter the **username** and **password** for the Jellyfin account on that server.
5. Click **Add** to save the mapping.
---
### Removing Users or Mappings
### Removing Users or Mappings
To remove a user or unlink a specific server mapping, simply press the **Delete** button next to the entry you want to remove.
To remove a user or unlink a specific server mapping, simply press the **Delete** button next to the entry you want to remove.
When deleting a user, you can optionally choose to **Delete from all servers**, which will attempt to remove the user account from all connected Jellyfin instances where the admin has access.
## Global Settings

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 327 KiB

BIN
media/user_page.png Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 237 KiB