Invidious fork with features exclusive to inv.nadeko.net https://inv.nadeko.net
Find a file
Fijxu e76867aaba
Some checks failed
Invidious CI / build (push) Failing after 38s
feat(Database::Videos): built-in video cache and support for multiple caching backends
I did this to get rid of Redis compatible DBs and for speed purposes.
This is considered experimental, but everything works fine from
what I have tested.

Here are some benchmarks using the built-in benchmark library of
crystal:

\# built-in release
cache get  19.79M ( 50.54ns) (± 4.12%)  32.0B/op  fastest
cache insert   7.88k (126.86µs) (± 2.20%)  65.5kB/op  fastest
cache get   4.31k (232.11µs) (± 5.50%)  104kB/op  fastest

\# redis release
cache get  22.27k ( 44.90µs) (± 6.40%)  264B/op  fastest
cache insert   4.74k (211.01µs) (± 4.72%)  65.7kB/op  fastest
cache get   2.51k (399.11µs) (±13.15%)  129kB/op  fastest

---

OP/s are way higher, and memory usage per call is lower, so it's a win
win.
2025-02-26 17:51:54 -03:00
.forgejo/workflows ci: update CI file 2025-02-18 02:40:30 -03:00
.github CI: Drop support for versions prior to 1.12 and add 1.15.0 (#5148) 2025-01-22 11:28:38 -08:00
assets Revert "fix(player.js): set client side XHR timeout" 2025-02-19 01:10:47 -03:00
config Merge remote-tracking branch 'upstream/master' 2025-01-25 11:51:05 -03:00
docker ci: update crystal compiler to 1.15.1 2025-02-18 02:43:34 -03:00
kubernetes limit feeds and delete materialized views 2024-07-21 13:00:26 -04:00
locales Channels: Fix community tab 2025-02-19 01:10:47 -03:00
mocks@b55d58dea9 update submodule 2024-10-13 23:57:29 +02:00
screenshots Rework the README (#2135) 2021-07-24 20:48:30 +02:00
scripts Deps: Use the right source path when copying .min.css files 2023-01-21 19:52:14 +01:00
spec update the mocks with the latest updated data 2024-10-13 21:18:21 +02:00
src feat(Database::Videos): built-in video cache and support for multiple caching backends 2025-02-26 17:51:54 -03:00
.ameba.yml Ameba: Disable Style/RedundantNext rule 2024-08-28 23:49:10 -07:00
.editorconfig Initial commit 2017-11-23 01:48:55 -06:00
.gitattributes Only ignore the videojs libraries 2021-05-23 17:59:02 +00:00
.gitignore Add the docs/ folder to gitignore (#3694) 2023-03-19 20:03:15 +01:00
.gitmodules Add mocks as a submodule 2022-06-08 23:56:40 +02:00
CHANGELOG.md Prepare for next release 2024-11-10 21:40:32 +01:00
CHANGELOG_legacy.md Rename legacy changelog file 2024-04-27 00:14:46 +02:00
crystal_formatters.py Tokens: Server side generated tokens. 2024-10-17 23:44:30 -03:00
docker-compose.yml Use Docker Valkey instead of passing a socket 2024-07-21 13:00:27 -04:00
invidious.service Add logfile to systemd service and fix path 2019-01-23 21:31:52 +01:00
LICENSE Change license 2018-01-28 11:32:40 -06:00
Makefile Merge remote-tracking branch 'upstream/master' into master 2024-10-31 20:25:33 -03:00
nginx.conf docker-compose.yml for my instances 2024-07-21 13:00:26 -04:00
README.md docs(readme): update readme with information of this fork 2025-02-19 01:10:47 -03:00
shard.lock Merge remote-tracking branch 'upstream/master' 2024-11-09 23:42:52 -03:00
shard.yml Merge remote-tracking branch 'upstream/master' 2024-11-13 21:14:26 -03:00
TRANSLATION TRANSLATION file for l10n 2020-05-26 18:02:21 +00:00
videojs-dependencies.yml Bump videojs to 7.12.1 (#3011) 2022-04-22 22:37:45 +02:00

nadeko.net Invidious fork

This is a fork of Invidious with features that I have done for my own instance. If you want to maintain an instance, feel free to use this fork and it's container images (they are also compatible with Podman, not just docker!)

https://git.nadeko.net/Fijxu/-/packages/container/invidious/latest

Caution

If you already have an Invidious instance running the upstream code, moving it to this fork will not work for you! This is due to the "Removal of materialized views on PostgreSQL" pull request that requires a migration of the database using it.

If you don't have an instance already, you can use this fork safely, but you will not be able to switch to upstream Invidious.

Features and changes of this fork:

It can be set using this on config.yml:

redis_url: tcp://127.0.0.1:6379

It can be set using this on config.yml:

external_videoplayback_proxy: "https://inv-proxy.example.com"

Note

If you setup this, Invidious will check if the proxy is alive doing a request to https://inv-proxy.example.com/health, and if it doesn't get a response code of 200, Invidious will fallback to the local videoplayback proxy! This is only currently supported by https://git.nadeko.net/Fijxu/http3-ytproxy

  • Limit the DASH resolution sent to the clients: It can be set using max_dash_resolution on the config. Example: max_dash_resolution: 1080

  • Limit requests made to Youtube API when pulling subscriptions (feeds): Due to the recent changes of Youtube ("This helps protect out community", "Sign in to confirm you are not a bot"), subscriptions now have limited information, this is because Invidious by default, makes a video request to youtube to be able to get more information about the video, like length_seconds, live_now, premiere_timestamp, and views. If you have a lot of users with a ton of subscriptions, Invidious will basically spam youtube API all the time, resulting in a block from youtube.

It can be set using this on config.yml:

use_innertube_for_feeds: false

There is more things that I added to this fork, but those are the most important ones. I also regularly merge unmerged pull requests from https://github.com/iv-org/invidious and random fixes as well. Is not the most stable codebase, but you can't really make something stable when youtube is trying to destroy every third party client out there.