Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dreulavelle/iceberg
Plex Debrid Rewrite (WIP)
https://github.com/dreulavelle/iceberg
jackett overseerr plex plex-media-server riven trakt
Last synced: 3 months ago
JSON representation
Plex Debrid Rewrite (WIP)
- Host: GitHub
- URL: https://github.com/dreulavelle/iceberg
- Owner: rivenmedia
- License: gpl-3.0
- Created: 2023-12-08T07:08:11.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-06-28T04:04:12.000Z (4 months ago)
- Last Synced: 2024-06-28T21:45:54.751Z (4 months ago)
- Topics: jackett, overseerr, plex, plex-media-server, riven, trakt
- Language: Python
- Homepage:
- Size: 2.68 MB
- Stars: 163
- Watchers: 9
- Forks: 23
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-debrid - iceberg - an up and coming plex_debrid rewrite (*Arr Stack / Hosting Providers (VPS, Seedbox..))
README
Plex torrent streaming through Real Debrid and 3rd party services like Overseerr, Mdblist, etc.
Services currently supported:
| Service | Supported |
| ------------------ | --------- |
| Real Debrid | ✅ |
| Plex | ✅ |
| Overseerr | ✅ |
| Mdblist | ✅ |
| Trakt | ✅ |
| Jackett | ✅ |
| Plex Watchlist RSS | ✅ |
| Torrentio | ✅ |
| Orionoid | ✅ |
| Jackett | ✅ |
| Listrr | ✅ || and more to come!
Check out out [Project Board](https://github.com/users/dreulavelle/projects/2) to stay informed!
Please add feature requests and issues over on our [Issue Tracker](https://github.com/dreulavelle/iceberg/issues) or join our [Discord](https://discord.gg/wDgVdH8vNM) to chat with us!
We are constantly adding features and improvements as we go along and squashing bugs as they arise.
---
## Table of Contents
- [Table of Contents](#table-of-contents)
- [ElfHosted](#elfhosted)
- [Self Hosted](#self-hosted)
- [Docker Compose](#docker-compose)
- [What is ORIGIN ?](#what-is-origin-)
- [Running outside of Docker](#running-outside-of-docker)
- [First terminal:](#first-terminal)
- [Second terminal:](#second-terminal)
- [Symlinking settings](#symlinking-settings)
- [Development](#development)
- [Prerequisites](#prerequisites)
- [Initial Setup](#initial-setup)
- [Using `make` for Development](#using-make-for-development)
- [Development without `make`](#development-without-make)
- [Additional Tips](#additional-tips)
- [Contributing](#contributing)
- [Submitting Changes](#submitting-changes)
- [Code Formatting](#code-formatting)
- [Dependency Management](#dependency-management)
- [Setting Up Your Environment](#setting-up-your-environment)
- [Adding or Updating Dependencies](#adding-or-updating-dependencies)
- [Running Tests and Linters](#running-tests-and-linters)
- [License](#license)---
## ElfHosted
[ElfHosted](https://elfhosted.com) is a geeky [open-source](https://elfhosted.com/open/) PaaS which provides all the "plumbing" (_hosting, security, updates, etc_) for your self-hosted apps.
> [!IMPORTANT]
> **ElfHosted ❤️ Riven 100%**
>
> [Riven](https://elfhosted.com/app/riven/) is an "Elf-icial" app in the [ElfHosted app catalogue](https://elfhosted.com/apps/) - A whopping :heart_eyes_cat::heart_eyes_cat: 100% :heart_eyes_cat::heart_eyes_cat: of your subscription goes directly to Riven developers, who can usually be found in the [#elf-riven](https://discord.com/channels/396055506072109067/1253110932062601276) channel in the [ElfHosted Discord Server](https://discord.elfhosted.com).Curious how it works? Here's an [explainer video](https://www.youtube.com/watch?v=ZHZAEhLuJqk)!
> [!TIP]
> **ElfHosted "Infinite Streaming" bundles**
>
> Riven is pre-packaged with Plex, Zurg, and symlinks, and ready-to-go, in these convenient bundles:
> * [Starter Kit](https://store.elfhosted.com/product/plex-riven-infinite-streaming-starter-kit) (*quick and easy setup*)
> * [Hobbit Bundle](https://store.elfhosted.com/product/hobbit-riven-real-debrid-infinite-streaming-bundle) (*12.5% dedicated node, with extras*)
> * [Ranger Bundle](https://store.elfhosted.com/product/plex-riven-infinite-streaming-plus-bundle) (*25% dedicated node, with extras*)## Self Hosted
### Docker Compose
Copy over the contents of [docker-compose.yml](docker-compose.yml) to your `docker-compose.yml` file.
> [!NOTE]
> You can check out the [docker-compose-full.yml](docker-compose-full.yml) file to get an idea of how things tie together.Then run `docker compose up -d` to start the container in the background. You can then access the web interface at `http://localhost:3000` or whatever port and origin you set in the `docker-compose.yml` file.
> [!TIP]
> On first run, Riven creates a `settings.json` file in the `data` directory. You can edit the settings from frontend, or manually edit the file and restart the container or use `.env` or docker-compose environment variables to set the settings (see `.env.example` for reference).#### What is ORIGIN ?
`ORIGIN` is the URL of the frontend on which you will access it from anywhere. If you are hosting Riven on a vps with IP address `123.45.67.890` then you will need to set the `ORIGIN` to `http://123.45.67.890:3000` (no trailing slash). Similarly, if using a domain name, you will need to set the `ORIGIN` to `http://riven.example.com:3000` (no trailing slash). If you change the port in the `docker-compose.yml` file, you will need to change it in the `ORIGIN` as well.
### Running outside of Docker
To run outside of docker you will need to have node (v18.13+) and python (3.10+) installed. Then clone the repository
```sh
git clone https://github.com/rivenmedia/riven.git && cd riven
```and open two terminals in the root of the project and run the following commands in each.
#### First terminal:
```sh
cd frontend
npm install
npm run build
ORIGIN=http://localhost:3000 BACKEND_URL=http://127.0.0.1 node build
```Read above for more info on `ORIGIN`.
#### Second terminal:
```sh
pip install poetry
poetry install --without dev
poetry run python backend/main.py
```---
### Symlinking settings
`rclone_path` should point to your rclone mount that has your torrents on your host.
`library_path` should point to the location of the mount in plex container
```json
"symlink": {
"rclone_path": "/mnt/zurg",
"library_path": "/mnt/library"
}
```Plex libraries that are currently required to have sections:
| Type | Categories |
| ------ | ------------------------ |
| Movies | `movies`, `anime_movies` |
| Shows | `shows`, `anime_shows` |> [!NOTE]
> Currently, these Plex library requirements are mandatory. However, we plan to make them customizable in the future to support additional libraries as per user preferences.---
## Development
Welcome to the development section! Here, you'll find all the necessary steps to set up your development environment and start contributing to the project.
### Prerequisites
Ensure you have the following installed on your system:
- **Node.js** (v18.13+)
- **Python** (3.10+)
- **Poetry** (for Python dependency management)
- **Docker** (optional, for containerized development)### Initial Setup
1. **Clone the Repository:**
```sh
git clone https://github.com/rivenmedia/riven.git && cd riven
```2. **Install Backend Dependencies:**
```sh
pip install poetry
poetry install
```3. **Install Frontend Dependencies:**
```sh
cd frontend
npm install
cd ..
```### Using `make` for Development
We provide a `Makefile` to simplify common development tasks. Here are some useful commands:
- **Initialize the Project:**
```sh
make
```- **Start the Development Environment:**
This command stops any previous containers, removes old images, and rebuilds the image using cached layers. Any changes in the code will trigger a rebuild.```sh
make start
```- **Restart the Container:**
```sh
make restart
```- **View Logs:**
```sh
make logs
```### Development without `make`
If you prefer not to use `make` and Docker, you can manually set up the development environment with the following steps:
1. **Start the Backend:**
```sh
poetry run python backend/main.py
```2. **Start the Frontend:**
```sh
cd frontend
npm run dev
```### Additional Tips
- **Environment Variables:**
Ensure you set the `ORIGIN` environment variable to the URL where the frontend will be accessible. For example:```sh
export ORIGIN=http://localhost:3000
```- **Code Formatting:**
We use `Black` for Python and `Prettier` for JavaScript. Make sure to format your code before submitting any changes.- **Running Tests:**
```sh
poetry run pytest
```By following these guidelines, you'll be able to set up your development environment smoothly and start contributing to the project. Happy coding!
---
## Contributing
We welcome contributions from the community! To ensure a smooth collaboration, please follow these guidelines:
### Submitting Changes
1. **Open an Issue**: For major changes, start by opening an issue to discuss your proposed modifications. This helps us understand your intentions and provide feedback early in the process.
2. **Pull Requests**: Once your changes are ready, submit a pull request. Ensure your code adheres to our coding standards and passes all tests. Commits should follow [conventional-commits](https://www.conventionalcommits.org/) specification.### Code Formatting
- **Backend**: We use [Black](https://black.readthedocs.io/en/stable/) for code formatting. Run `black` on your code before submitting.
- **Frontend**: We use [Prettier](https://prettier.io/) for code formatting. Run `prettier` on your code before submitting.
- **Line Endings**: Use CRLF line endings unless the file is a shell script or another format that requires LF line endings.### Dependency Management
We use [Poetry](https://python-poetry.org/) for managing dependencies. Poetry simplifies dependency management by automatically handling package versions and resolving conflicts, ensuring consistency across all environments.
#### Setting Up Your Environment
1. **Install Poetry**: If you haven't already, install Poetry using `pip install poetry`.
2. **Install Dependencies**: After cloning the repository, navigate to the project's root directory and run `poetry install`. This command installs all necessary dependencies as defined in the `pyproject.toml` file and creates an isolated virtual environment.
3. **Activate Virtual Environment**: You can activate the virtual environment using `poetry shell` or run commands directly using `poetry run `.#### Adding or Updating Dependencies
- **Add a Dependency**: Use `poetry add ` to add a new dependency.
- **Update a Dependency**: Use `poetry update ` to update an existing dependency.### Running Tests and Linters
Before submitting a pull request, ensure your changes are compatible with the project's dependencies and coding standards. Use the following commands to run tests and linters:
- **Run Tests**: `poetry run pytest`
- **Run Linters**: `poetry run ruff check backend` and `poetry run isort --check-only backend`By following these guidelines, you help us maintain a high-quality codebase and streamline the review process. Thank you for contributing!
---
---
## License
This project is licensed under the GNU GPLv3 License - see the [LICENSE](LICENSE) file for details