@startuml OmagaV v2 deployment !include ' Define output quality skinparam dpi 300 ' Define the user roles Person(BoardMember, "Styremedlem", "Prøvemedlem, Noechelmedlem, eller aktiv Pang!") Person_Ext(NormalMember, "Medlem", "Normale, ikke-styre medlemmer") ' Define website services System_Boundary(SiteServer, "Website VM") { Container(ReverseProxy, "Reverse Proxy", "Nginx Proxy Manager", "SSL Termination and forwarding to correct server") System_Boundary(ApacheBoundary, "Apache web server") { Container(Apache, "Apache webserver", "Webserver hosting the websites") Container(PublicSite, "Public site", "/var/www/public", "Public website, statically generated") Container(InternalSite, "Intranett", "/var/www/intranett", "Intranett website") Container(ApiDoc, "API Documentation", "/var/www/doc", "Interactive HTML REST API Documentation") } Container(ApiServer, "REST API Server", "Rocket.rs", "Server that handles all data and interacts with DB") ContainerDb(DB, "Database", "SQLite3") } ' Define SSO services System_Boundary(Inept, "SSO VM") { Container(SSO, "SSO Server", "Authentik") } ' Define user connections Rel(BoardMember, ReverseProxy, "Uses", "HTTPS") Rel(BoardMember, SSO, "Uses", "HTTPS") Rel(NormalMember, ReverseProxy, "Uses", "HTTPS") ' Define reverse proxy connections Rel(ReverseProxy, ApiServer, "Forwards", "HTTP") Rel(ReverseProxy, Apache, "Uses", "HTTP") ' Defines apache serve routes Rel(Apache, ApiDoc, "Serves", "localhost:8082") Rel(Apache, PublicSite, "Serves", "localhost:8081") Rel(Apache, InternalSite, "Serves", "localhost:8080") ' Define the API server connections Rel(ApiServer, SSO, "Uses", "HTTPS") Rel(ApiServer, DB, "Uses", "SQL") ' Alignment and layout Lay_R(SSO, ApiServer) Lay_R(InternalSite, ApiServer) Lay_R(PublicSite, ApiServer) @enduml