Self Hosted Movie, Series and Anime Watch List

Overview

Flox

Build Status

Flox is a self hosted Movie, Series and Animes watch list. It's build on top of Laravel and Vue.js and uses The Movie Database API. The rating based on an 3-Point system for good, medium and bad.

Try live demo and login with demo / demo to add new stuff or change ratings.

flox

Requirements

Install

git clone https://github.com/devfake/flox
cd flox/backend
composer install
php artisan flox:init # Enter here your database credentials

Enter your TMDb API-Key in backend/.env. Then run:

php artisan flox:db # Running migrations and enter your admin credentials for the site
  • Give backend/storage, public/assets and public/exports recursive write access.
  • Set the correct APP_URL in backend/.env.
  • Set your CLIENT_URI in backend/.env.
# CLIENT_URI=/flox/public
https://localhost:8888/flox/public

# CLIENT_URI=/subfolder/for/flox/public
https://mydomain.com/subfolder/for/flox/public

# CLIENT_URI=/
https://mydomain.com

Features

  • API for Plex.
    • Sync movies, shows and watched episodes from Plex to Flox.
  • Episode Tracking.
  • Suggestions.
  • Watchlist.
  • Popular Movies and Shows, Upcoming and Current Movies.
    • This lists are updated daily.
  • Calendar.
    • A simple calendar for your episodes and movies.
    • Movies and tv shows have different colors for better differentiation. You can also use the arrow keys to jump months forward or backward.
  • Reminders.

Plex

To enable the sync from Plex to Flox, you first need to generate an API-Key in Flox in the settings page. Then enter the Flox API-URL to the webhooks section in Plex.

https://YOUR-FLOX-URL/api/plex?token=YOUR-TOKEN

If you start a tv show or movie in Plex, Flox will search the item via the title from TMDb and add them into the Flox database. If you rate a movie or tv show in Plex, Flox will also rate the item. Note that rating for seasons or episodes are not supported in Flox. If you rate an movie or tv show, which is not in the Flox database, Flox will also fetch them from TMDb first. If you complete an episode (passing the 90% mark), Flox will also check this episode as seen.

Queue

To import or refresh any of your entries you need to have at least one worker running.

# spawn a single worker
php artisan queue:work --daemon --tries=3

# Alternatively install it as a systemctl service:

# The script uses the current directory as Flox root path. To override
# use the first argument and set a new absolute Flox (root) path.
# A second argument takes the php path (defaults to /usr/bin)
bash ./bin/install_worker_service.sh
# bash ./bin/install_worker_service.sh $HOME/flox /custom/path/to/php/

The default queue driver is set to database. All your jobs will be stored in the jobs table. If you need some better performance and more reliability, consider to choose redis.

Check the documentation for more informations.

Cron Job

To utilize the queues to update automatically you have to set up a cron task once manually on your server.

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

You can use crontab -e to add this new Cron task.

Make sure Cron is running and you are good to go.

sudo service cron status

This Cron will call the Laravel command scheduler every minute. Then, Laravel evaluates your scheduled tasks and runs the tasks that are due.

Currently in Flox defined tasks (which you can activate in the settings):

When Description
Daily Update all Entities from TMDb
Daily Send a daily reminder via mail
Weekly Send a weekly summary via mail

You can change the time for daily and weekly reminder in your .env.

Export / Import

Also you can make a backup of all your movies and shows in the settings page. If you click the EXPORT button, there will be an download for an json file. This file contains all your movies and shows from your database. This backup file will also be automatically saved in your public/exports folder.

If you import an backup, all movies and shows in your database will be deleted and replaced. Be sure to make an current backup before you import. The import will download all poster images.

Refresh data

To keep your entries up to date (e.g. ratings, episodes, images) you need to refresh them. In the settings there is the possibility to refresh the data manually or via a cron job (you need the queue worker for this). If you want to refresh only a single entry, there is a button on the subpage of this item.

Reminders

Flox can send you a daily reminder of episodes or movies coming out today via mail. Or a weekly summary of episodes and movies coming out in the last 7 days. There are options in the settings page for this.

Make sure you tweak the DATE_FORMAT_PATTERN config in your .env file.

Translation

All titles are in english by default. You can change your language by setting TRANSLATION in backend/.env. The most commons are DE, IT, FR, ES and RU. You can try to use your language code.

This will also affect the language of you website. See in client/resources/languages if your language is supported. Pull requests are welcome :)

If there isn't a translation for your language, english will be used.

Settings

You can edit your admin account (username and password) in the settings page (link is in footer).

You can also set options to display release date and/or genre of your own list. Both will still display on search, trending and upcoming. If you want to hide your ratings (or show only on hover) there is also an option for this.

There is an option to enable or disable spoiler protection for episode names.

Troubleshooting

Import does not work

  • Your import file is probably to big. In default php.ini the max upload file is 2MB. Set the number higher and try again.
  • Make sure that the queue worker is active! Otherwise flox will tell you the import is running, but nothing happens!

Development

  • Run npm install or yarn in your /client folder.
  • Run npm run dev.

Contribution

Like this project? Want to contribute? Awesome! Feel free to open some pull requests or just open an issue.

Changelog

Detailed changes for each release are documented in the release notes.

License

Flox is published under the MIT license. See LICENSE for more information.

Comments
  • Delete item?

    Delete item?

    I can, even after solid searching most pixels of the interface, not find a delete button to remove added media from Flox. Anyone have a screenshot of where to find it, if it's there? :)

    opened by AndLindemann 8
  • Deploying Flox on Ubuntu

    Deploying Flox on Ubuntu

    I find this project very interesting and want to deploy it on a home Ubuntu machine but I have very little knowledge about php, composer and nginx. I was able to follow alone up until database migrations. I think I messed up on the CLIENT_URI part as I can't access the site at the CLIENT_URI. Is it possible to make a installation guide for Ubuntu? I am using Ubuntu 16.04. Thanks in advance !

    help wanted 
    opened by fazlerabbi37 6
  • is it possible to input/read movies & tv from a directory / file structure ?

    is it possible to input/read movies & tv from a directory / file structure ?

    for example, if i got: ~/Movies/Example.Movie.2016.bla.bla.bla.mkv in a folder, along with a ton of others, is there a way for Flox to watch this folder and build my movie db from the names of the folders and files inside of it ?

    This feature would make this super useful to me. Anyway, good work keep it up!

    opened by saveyour 6
  • Feature: Multi-User Support

    Feature: Multi-User Support

    Hi,

    is support for multiple users on one installation something you would consider? I would like to host a Flox instance for my friends and family, each which his own watchlist and rankings.

    enhancement 
    opened by crono 5
  • 404's with attempted api calls

    404's with attempted api calls

    Hi, I just tried to get Flox working on a VPS. It seems that it worked, since I am now presented with the flox main page, however it loads forever because it can't make some API calls for some reason. relevant logs:

    vendor.js:13 GET http://localhost/flox/public/api/settings 404 (Not Found)
    (anonymous) @ vendor.js:13
    e.exports @ vendor.js:13
    e.exports @ vendor.js:13
    vendor.js:13 Uncaught (in promise) Error: Request failed with status code 404
        at e.exports (http://localhost/flox/public/assets/vendor.js:13:21191)
        at e.exports (http://localhost/flox/public/assets/vendor.js:13:26983)
        at XMLHttpRequest.p.(anonymous function) (http://localhost/flox/public/assets/vendor.js:13:19950)
    e.exports @ vendor.js:13
    e.exports @ vendor.js:13
    p.(anonymous function) @ vendor.js:13
    vendor.js:13 GET http://localhost/flox/public/api/items/home/rating 404 (Not Found)
    

    any idea? the call itself is strange, since the public folder is not restful.

    I am running on nginx with php7 and mariadb, all stable.

    opened by kschamplin 5
  • Synology web server - site loads, nothing works, blinking eye icon

    Synology web server - site loads, nothing works, blinking eye icon

    Browser console gives me "Error: Request failed with status code 404 vendor.js:17:36334". Not sure how to get more debug information. Server runs on Nginx and PHP 7.2.

    This is probably related to something misconfigured, perhaps in built-in PHP in Synology — it is quite... limited. Installation went without errors, though. Should I provide phpinfo output?

    Hm. Docker image from theryecatcher/flox fork works. But it is an additional overhead.

    I understand that this is an edge case, sorry.

    opened by AlexFullmoon 4
  • Mixed Content issue. Https

    Mixed Content issue. Https

    Hey, first of all, thank you so much for making this awesome application.

    I wanted to install this in docker, and luckily i found a fork, that already implemented this. So i spun up the container, i just added my traefik labels to make it accessible publicly. When i tried to reach it locally through 192.168.1.178:6030 it worked, but, when i tried to access it through my domain https://flox.mydomain.com i got an empty page, and when i looked at the console with F12 it gave me these errors: https://i.stack.imgur.com/pYk2t.png

    Then i went ahead and changed the APP_URL from http://localhost to https://flox.mydomain.com in the .env file which gave me the same result.

    Then after doing some research i tried to force https by editing /backend/app/Providers/AppServiceProvider.php

    I added use Illuminate\Support\Facades\URL; at the beginning of the file and URL::forceScheme('https'); inside the boot function.

    This helped resolve all the above mentioned Errors and the Application finally loaded and i thought this would be the end of it. But that's not how the cookie crumbled.

    I added a few movies to my watchlist, and then later when i looked at the list, not all movies loaded but there is a "Load more" button at the end of the website, and when i click that button, the old familliar "mixed content" error came back. https://i.stack.imgur.com/KbVZZ.png https://i.stack.imgur.com/2Wswd.png

    I have no Idea why this is not served over https. Any help would be greatly appreciated! Thanks

    opened by calgara12 4
  • Remove requirement for user authentication?

    Remove requirement for user authentication?

    It seems most modifications/additions in the app can only be made when the admin user is logged in. Is there an option to remove that requirement? I don't really need users to be logged in to do anything, don't think most users would expose this to the internet and for home-internal use it probably doesn't really need user auth/password? It's not like someone accidentally stumbling onto the app could cause any serious trouble - and if yes, you shouldn't really let him into your home network anyway. ;)

    opened by AndLindemann 4
  • Database on separate host

    Database on separate host

    Not familiar with artisan/laraval, but I assume it should be easy to change the init script to add a question for "DB_HOST" for those of us with MYSQL running on a separate host? I added the "DB_HOST=192.168.1.1" line to my .env file manually but might be something you could add to the install process.

    opened by deranjer 4
  • Add short notes to media items

    Add short notes to media items

    It'd be nice if we could add short notes to items while on the detail media screen. The wife asked for this, just so that she can add short remarks to an item. Guess a simple text field would do, 3-4 lines, just to add some quick additional data like for items that she liked and I didn't or so.

    enhancement 
    opened by AndLindemann 3
  • Support for view timestamps

    Support for view timestamps

    Thanks a ton for the awesome work. :+1:

    I am unsure of the whole architecture of the app. But was just wondering if the app could have support for timestamps (time and date of the view/rating). Not sure if it's a general requirement but I like to see when and how many times I have viewed a particular episode or a movie just for stat nerds :). I currently use trakt exclusively for this and was looking to replace that with a self hosted service.

    enhancement 
    opened by theryecatcher 3
  • Please Help : 404's with attempted api calls

    Please Help : 404's with attempted api calls

    I am trying to run Flox on a rasdberry pi but i am getting the same issue like these

    https://github.com/devfake/flox/issues/87 https://github.com/devfake/flox/issues/166

    I am running it on Apache with PHP 7 and MariaDB.

    can anyone help please ?

    opened by Devilshz 1
  • PackageManifest error

    PackageManifest error

    Hello,

    While doing composer install I keep getting the following error:

    In PackageManifest.php line 122:

    Undefined index: name

    Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

    I have tried deleting the composer.lock and composer update or composer install, no change at all.

    Any idea how to solve this ?

    Thanks

    opened by GregTroar 2
  • Found a possible security concern

    Found a possible security concern

    Hey there!

    I belong to an open source security research community, and a member (@hdvinnie) has found an issue, but doesn’t know the best way to disclose it.

    If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

    Thank you for your consideration, and I look forward to hearing from you!

    (cc @huntr-helper)

    opened by zidingz 0
  • Reverse Proxy Support

    Reverse Proxy Support

    I had trouble getting Flox to run using a reverse proxy, especially over https. I'm not a php developer but I did some researching and found a solution that worked for me. The documentation says it introduces a security risk so I feel there should be a better solution. Has anyone else run into this issue?

    Here's an article on the Laravel website that explains the issue. On that article they mention an external php package (fideloper/proxy) that allows for easy configuration of trusted proxies. I haven't tried setting that up because I'm not familiar enough with php.

    The solution I had success with is mentioned on this page. I added the following code to public/index.php and it loaded successfully. I tried replacing 'REMOTE_ADDR' with '127.0.0.1' but that didn't work.

    Request::setTrustedProxies(
        ['REMOTE_ADDR'],
        Request::HEADER_X_FORWARDED_PROTO
    );
    
    help wanted 
    opened by Protinon 4
  • Jellyfin

    Jellyfin

    I am looking for someone who could build a simple Jellyfin API for Flox.

    There is already one for Plex (https://github.com/devfake/flox/issues/127). However, I don't think there is any simple webhook functionality built in for Jellyfin?

    The required data for Flox are very simple. The class must inherit from the abstract api class and implement the necessary methods. Example from Plex: https://github.com/devfake/flox/blob/master/backend/app/Services/Api/Plex.php.

    Or is it necessary to request the API of Jellyfin itself? For example via a cronjob.

    help wanted 
    opened by devfake 1
Releases(2.0.0)
  • 2.0.0(Dec 22, 2019)

  • 1.2.2(Dec 15, 2016)

    • Increase timeout for bigger imports
    • Allow null value for original_title in items table

    To upgrade, run:

    git fetch
    git checkout 1.2.2
    cd backend
    composer install
    php artisan migrate
    
    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Dec 14, 2016)

    • Fix migration problem for episode protection

    To upgrade, run:

    git fetch
    git checkout 1.2.1
    cd backend
    composer install
    php artisan migrate
    
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Dec 12, 2016)

  • 1.1.0(Nov 30, 2016)

    • Add translations for update messages
    • Fix episode number if it > 99
    • Toggle button to check or uncheck all episodes of an season once

    To upgrade, run:

    git fetch
    git checkout 1.1.0
    cd backend
    composer install
    php artisan migrate
    
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Nov 30, 2016)

    After this update, flox will automatically check for new updates if you go to the settings page.

    To upgrade, run:

    git fetch
    git checkout 1.0.0
    cd backend
    composer install
    php artisan migrate
    
    Source code(tar.gz)
    Source code(zip)
listmonk is a standalone, self-hosted, newsletter and mailing list manager

High performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.

Kailash Nadh 8.6k Sep 29, 2022
Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family

Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor

Hayden 2.5k Sep 29, 2022
a simple self-hosted bookmarking app that can import bookmarks from delicious and chrome

bookmarks app a simple self-hosted bookmarking app that can import bookmarks from delicious and chrome Quickstart mkdir -p target/standalone && cd tar

David Yu 143 Sep 13, 2022
Self-hosted audiobook server for managing and playing your audiobooks

AudioBookshelf AudioBookshelf is a self-hosted audiobook server for managing and playing your audiobooks. Currently in Beta - Free & open source Andro

null 1.6k Oct 2, 2022
AudioBookshelf is a self-hosted audiobook server for managing and playing your audiobooks.

Audiobookshelf Mobile App AudioBookshelf is a self-hosted audiobook server for managing and playing your audiobooks. Get the Android app on the Google

null 196 Sep 30, 2022
It is a self-hosted monitoring tool like "Uptime Robot".

Uptime Kuma It is a self-hosted monitoring tool like "Uptime Robot". Features Monitoring uptime for HTTP(s) / TCP / Ping. Fancy, Reactive, Fast UI/UX.

Louis Lam 21.8k Oct 3, 2022
🚀 A self-hosted cloud platform application.

Dynamo [IN DEV] You are most likely tired of large corporates selling your data or charging you a lot of money for small cloud services? This is where

Jareer Abdullah 8 Sep 7, 2022
Yukino lets you read manga or stream anime ad-free from multiple sources for free! Available for Windows, Linux, MacOS and Android.

Yukino lets you read manga or stream anime ad-free from multiple sources for free! Available for Windows, Linux, MacOS and Android.

ZYROUGE 197 Sep 24, 2022
A simple and easy to use Website for streaming Anime without ads

Inu's Stream A simple and easy to use Website for streaming Anime without ads. Explore the docs » View Demo · Report Bug · Request Feature Table of Co

InumakiEU 7 Sep 15, 2022
另一个 Anime-API 的前端,「整合第三方网站的视频和弹幕资源, 提供最舒适的看番追剧体验」。

另一个 Anime-API 的前端 整合第三方网站的视频和弹幕资源,提供最舒适的看番追剧体验。 上游项目 zaxtyson/AnimeSearcher zaxtyson/Anime-API 特性 使用 Vue.js + TypeScript 开发; 使用 NPlayer 代替 DPlayer; 支持

居正 2 Jul 1, 2022
Yukino lets you read manga or stream anime ad-free from multiple sources.

Yukino Yukino lets you read manga or stream anime ad-free from multiple sources. The project's name "Yukino" meaning "Snow" named after the character

tj 26 Sep 7, 2022
Check trending anime based on anitrendz.net site. Built using nuxt

animetrend Demo: here Build Setup # install dependencies $ npm install # serve with hot reload at localhost:3000 $ npm run dev # build for productio

Ricko Veriyanto 2 Aug 10, 2022
Anime.js Vue Particle Explosion

AVPE Anime.js Vue Particle Explosion Prop Type Function amount Number Amount of particles per emit. color String Starting color, do not use literal va

Robert Kowalski 2 Jan 19, 2022
Charly Escalona 0 Mar 9, 2022
A collection of anime image search engines, based on Cloudflare Pages Function

A collection of anime image search engines, based on Cloudflare Pages Function

Mix Technology 43 Sep 27, 2022
Full-stack project - Website review Anime, Manga. MEVN Stack (Mongo-Express-Vue-Node).

Project Animan Lab Frontend stack: VueJS 3 VueX Axios Tailwind CSS SASS Editor: Quill Upload Image: Filepond Cloudinary Swiper Backend stack: NodeJS E

Lee - Triết Lý 4 Apr 23, 2022
OSL is a simple shared list web-application based on Node. Typical uses include shopping lists of course, and any other small todo-list that needs to be used collaboratively.

Our Shopping List OSL is a simple shared list application. Typical uses include shopping lists of course, and any other small todo-list that needs to

Anaël Ollier 12 Sep 29, 2022
Vue3-todo-list - A frontend ToDo list made with: Vue 3 + Vuex 4 + Quasar

Vue 3 ToDo list This is a simple ToDo list made with Vue 3 (composition API) and Vuex 4 Installation Just clone this repo and install packages with np

null 1 Feb 3, 2022