|
|
|
@ -47,21 +47,21 @@ subgraph VideoPipeline[Video Pipeline]
@@ -47,21 +47,21 @@ subgraph VideoPipeline[Video Pipeline]
|
|
|
|
|
RTMPService[fa:fa-video RTMP Service] |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph ChatService[fa:fa-comment Chat Service] |
|
|
|
|
subgraph ChatService[fa:fa-comment Chat\nService] |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph Dependencies |
|
|
|
|
OutboundWebhooks[Outbound] |
|
|
|
|
|
|
|
|
|
App{Application} |
|
|
|
|
App{AppController} |
|
|
|
|
ChatService--->App |
|
|
|
|
Webhooks--->App |
|
|
|
|
ActivityPubOutboundHandlers[fa:fa-hashtag ActivityPub\nOutbound]--->App |
|
|
|
|
|
|
|
|
|
ConfigRepository(fa:fa-hard-drive Config Repository)--->App |
|
|
|
|
UserRepository(fa:fa-hard-drive User Repository)--->App |
|
|
|
|
APRepository(fa:fa-hard-drive ActivityPub Repository)--->App |
|
|
|
|
NotificationsRepository(fa:fa-hard-drive Notifications Repository)--->App |
|
|
|
|
ChatRepository(fa:fa-hard-drive Chat Repository) |
|
|
|
|
ConfigRepository(fa:fa-hard-drive Config\nRepository)--->App |
|
|
|
|
UserRepository(fa:fa-hard-drive User\nRepository)--->App |
|
|
|
|
NotificationsRepository(fa:fa-hard-drive Notifications\nRepository)--->App |
|
|
|
|
ChatRepository(fa:fa-hard-drive Chat\nRepository) |
|
|
|
|
APRepository(fa:fa-hard-drive ActivityPub\nRepository) |
|
|
|
|
|
|
|
|
|
Database(fa:fa-hard-drive Database)--->ConfigRepository |
|
|
|
|
Database--->UserRepository |
|
|
|
@ -70,33 +70,30 @@ subgraph Dependencies
@@ -70,33 +70,30 @@ subgraph Dependencies
|
|
|
|
|
|
|
|
|
|
ChatRepository-->ChatService |
|
|
|
|
|
|
|
|
|
ApplicationState(fa:fa-list Application State)--->App |
|
|
|
|
GeoIP(fa:fa-globe GeoIP Lookup)--->App |
|
|
|
|
ApplicationState(fa:fa-list Application\nState)--->App |
|
|
|
|
GeoIP(fa:fa-globe GeoIP\nLookup)--->App |
|
|
|
|
Statistics(fa:fa-list Statistics)--->App |
|
|
|
|
end |
|
|
|
|
OutboundWebhooks[Outbound\nWebhooks]--->App |
|
|
|
|
|
|
|
|
|
subgraph VideoStorageProviders[Video Storage Providers] |
|
|
|
|
LocalStorage((fa:fa-hard-drive Local Storage)) |
|
|
|
|
S3Storage((fa:fa-hard-drive S3 Storage)) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph ActivityPub |
|
|
|
|
ActivityPubInboundHandlers[fa:fa-hashtag Inbound] |
|
|
|
|
ActivityPubOutboundHandlers[fa:fa-hashtag Outbound] |
|
|
|
|
subgraph VideoStorageProviders[Video Storage Providers] |
|
|
|
|
LocalStorage((fa:fa-hard-drive Local\nStorage)) |
|
|
|
|
S3Storage((fa:fa-hard-drive S3\nStorage)) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph Authentication |
|
|
|
|
subgraph Authentication[Chat Authentication] |
|
|
|
|
IndieAuth[fa:fa-key IndieAuth] |
|
|
|
|
FediAuth[fa:fa-key FediAuth] |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph Notifications |
|
|
|
|
subgraph Notifications[External Notifications] |
|
|
|
|
DiscordNotifier[fa:fa-comment Discord] |
|
|
|
|
BrowserNotifier[fa:fa-browser Browser] |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph WebServer[Web Server] |
|
|
|
|
ActivityPubHandlers[fa:fa-file ActivityPub Handlers] |
|
|
|
|
ActivityPubHandlers[fa:fa-file ActivityPub\nHandlers] |
|
|
|
|
|
|
|
|
|
subgraph WebAssets[Web Assets] |
|
|
|
|
EmbeddedStaticFiles((fa:fa-file Embedded\nStatic Assets)) |
|
|
|
@ -106,31 +103,31 @@ subgraph WebServer[Web Server]
@@ -106,31 +103,31 @@ subgraph WebServer[Web Server]
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph HTTPHandlers[fa:fa-browser HTTP Handlers] |
|
|
|
|
AdminAPIs[Admin APIs] |
|
|
|
|
ThirdPartyAPIs[3rd Party APIs] |
|
|
|
|
AdminAPIs[Admin\nAPIs] |
|
|
|
|
ThirdPartyAPIs[3rd Party\nAPIs] |
|
|
|
|
WebSocket[WebSocket] |
|
|
|
|
subgraph ChatAPIs[Chat APIs] |
|
|
|
|
ChatUserRegistration[Chat User Registration] |
|
|
|
|
subgraph ChatAPIs[Chat\nAPIs] |
|
|
|
|
ChatUserRegistration[Chat User\nRegistration] |
|
|
|
|
Emoji[Emojis] |
|
|
|
|
subgraph ChatAuthAPIs[Chat Authentication] |
|
|
|
|
subgraph ChatAuthAPIs[Chat\nAuthentication] |
|
|
|
|
FediAuth |
|
|
|
|
IndieAuth |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
subgraph VideoAPIs[fa:fa-video Video APIs] |
|
|
|
|
ViewerPing[Viewer Ping] |
|
|
|
|
PlaybackMetrics[Playback health metrics] |
|
|
|
|
ViewerPing[Viewer\nPing] |
|
|
|
|
PlaybackMetrics[Playback\nHealth Metrics] |
|
|
|
|
end |
|
|
|
|
ActivityPubHandlers |
|
|
|
|
ApplicationConfig[Application Config] |
|
|
|
|
ApplicationStatus[Application Status] |
|
|
|
|
Directory[Directory API] |
|
|
|
|
ApplicationConfig[Application\nConfig] |
|
|
|
|
ApplicationStatus[Application\nStatus] |
|
|
|
|
Directory[Directory\nAPI] |
|
|
|
|
Followers[Followers] |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
subgraph Streamer |
|
|
|
|
BroadcastingSoftware>fa:fa-video BroadcastingSoftware] |
|
|
|
|
BroadcastingSoftware>fa:fa-video Broadcasting\nSoftware] |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
%% All the services and packages require access |
|
|
|
@ -139,25 +136,21 @@ App-.->HTTPHandlers
@@ -139,25 +136,21 @@ App-.->HTTPHandlers
|
|
|
|
|
App-.->VideoPipeline |
|
|
|
|
App-.->ActivityPub |
|
|
|
|
App-.->Authentication |
|
|
|
|
App-.Stream went\nonline.->Notifications |
|
|
|
|
App-.->DirectoryNotifier[Directory Notifier] |
|
|
|
|
App-.->Notifications |
|
|
|
|
App-.->DirectoryNotifier[Owncast\nDirectory] |
|
|
|
|
|
|
|
|
|
LocalStorage--HLS-->OnDiskStaticFiles |
|
|
|
|
|
|
|
|
|
RTMPService>RTMP Ingest]--RTMP-->VideoTranscoder |
|
|
|
|
VideoTranscoder--HLS-->VideoStorageProviders |
|
|
|
|
|
|
|
|
|
%% Viewers |
|
|
|
|
VideoPlayer-->VideoStorageProviders |
|
|
|
|
WebBrowser-->WebAssets |
|
|
|
|
|
|
|
|
|
%% Streamers |
|
|
|
|
BroadcastingSoftware--RTMP-->RTMPService |
|
|
|
|
|
|
|
|
|
%% Style the nodes |
|
|
|
|
|
|
|
|
|
%% Define reusable styles for node types |
|
|
|
|
classDef bigtext font-weight:bold,font-size:20px |
|
|
|
|
classDef bigtext font-weight:bold,font-size:40px |
|
|
|
|
classDef repository fill:#4F625B,color:#fff |
|
|
|
|
classDef webservice fill:#6082B6,color:#fff |
|
|
|
|
classDef rtmp fill:#608200, color:#fff |
|
|
|
@ -191,5 +184,5 @@ class LocalStorage storage
@@ -191,5 +184,5 @@ class LocalStorage storage
|
|
|
|
|
class S3Storage storage |
|
|
|
|
|
|
|
|
|
%% Customize the theme styles |
|
|
|
|
%%{init: {'theme':'base', 'themeVariables': {'darkMode': true, 'lineColor': '#c3dafe', 'tertiaryTextColor': 'white', 'clusterBkg': '#2d3748', 'primaryTextColor': '#39373d', "edgeLabelBackground": "white", "fontFamily": "monospace"}}}%% |
|
|
|
|
%%{init: {'theme':'base', 'themeVariables': {'darkMode': true, 'lineColor': '#c3dafe', 'tertiaryTextColor': 'white', 'clusterBkg': '#2d3748', 'primaryTextColor': '#39373d', "edgeLabelBackground": "white", "fontFamily": "monospace", "fontSize": "30px"}}}%% |
|
|
|
|
``` |
|
|
|
|