Complete API-only mode implementation#5406
Closed
hellosunghyun wants to merge 1 commit intoiv-org:masterfrom
Closed
Complete API-only mode implementation#5406hellosunghyun wants to merge 1 commit intoiv-org:masterfrom
hellosunghyun wants to merge 1 commit intoiv-org:masterfrom
Conversation
This commit completes the API-only mode feature that allows Invidious to be built and run without GUI/frontend components, significantly reducing the binary size and dependencies. Changes include: - Add conditional compilation flags throughout the codebase to exclude frontend-specific code - Create stub implementations for database operations in API-only mode - Update Docker configurations to support API-only builds - Refactor require statements for better modularity - Add DummyDB and stub types for API-only mode - Ensure all routes work correctly without frontend dependencies The API-only mode can be enabled by: - Using -Dapi_only flag during compilation - Setting API_ONLY=1 when using make - Using --build-arg api_only=1 with Docker builds This is particularly useful for: - Microservice architectures where only the API is needed - Reducing resource usage in containerized environments - Creating lightweight API servers for mobile/desktop applications
b1afe1a to
0b2ec10
Compare
Member
|
What you propose here is much more than an "API only" mode. It's a whole "no database" and "no users" mode. Be aware that the API-only mode is meant to be a clipious/freetube backend (primarily a cloud account server) rather than a pure content proxy (for scrapping, yt-dlp might be more adapted). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR completes the API-only mode implementation for Invidious, allowing it to be built and run without GUI/frontend components. This significantly reduces the binary size and dependencies, making it ideal for API-focused deployments.
Motivation
The API-only mode was partially implemented but had several missing pieces that prevented it from working correctly. This PR fills those gaps and ensures the API-only build works seamlessly.
Changes
{% if flag?(:api_only) %}) throughout the codebase to exclude frontend-specific codeDummyDB,VideoNotification, etc.)requires.crfile for better modularityHow to use
Using Crystal directly:
Using Make:
Using Docker:
Benefits
Testing
Breaking changes
None. This change is fully backward compatible. The default build still includes all frontend components.