Document v0.2.0
6
Cargo.lock
generated
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
12
README.md
@@ -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 isn’t available yet. Please log in using your **username & password** for now.
|
||||
* **QuickConnect** – This feature isn’t 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 isn’t supported yet.
|
||||
|
||||
### 🚫 Not Planned
|
||||
|
||||
* **Admin Functions** – Server administration (user management, settings, etc.) won’t be supported through Jellyswarrm.
|
||||
* **Media Management** – Features like adding or deleting media libraries through Jellyswarrm are not implemented yet.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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!(
|
||||
|
||||
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 221 KiB |
BIN
docs/images/federated.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 383 KiB |
98
docs/ui.md
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 327 KiB |
BIN
media/user_page.png
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
media/users.png
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 237 KiB |