[{"data":1,"prerenderedAt":486},["ShallowReactive",2],{"docs-admin\u002Fsystem-requirements":3,"navigation":377},{"id":4,"title":5,"body":6,"description":16,"extension":370,"meta":371,"navigation":372,"path":373,"seo":374,"stem":375,"__hash__":376},"docs\u002F2.admin\u002F1.system-requirements.md","System Requirements",{"type":7,"value":8,"toc":357},"minimark",[9,13,17,20,25,134,148,152,179,182,189,203,224,229,235,260,263,266,307,311,338,342],[10,11,5],"h1",{"id":12},"system-requirements",[14,15,16],"p",{},"udServer is a lightweight native service that handles user, organisation, project, and collaboration management for udSDK and udStream. Point cloud data itself is streamed or redirected to your object storage (S3 \u002F Azure), so the udServer host mainly does authentication, metadata, and collaboration work rather than heavy data serving.",[14,18,19],{},"The figures below are a starting point. Size up from the recommended tier as your user count, project count, and request volume grow.",[21,22,24],"h2",{"id":23},"quick-reference","Quick reference",[26,27,28,43],"table",{},[29,30,31],"thead",{},[32,33,34,37,40],"tr",{},[35,36],"th",{},[35,38,39],{},"Minimum",[35,41,42],{},"Recommended",[44,45,46,61,74,87,100,121],"tbody",{},[32,47,48,55,58],{},[49,50,51],"td",{},[52,53,54],"strong",{},"CPU",[49,56,57],{},"2 vCPU (x86-64)",[49,59,60],{},"4 vCPU (x86-64)",[32,62,63,68,71],{},[49,64,65],{},[52,66,67],{},"RAM",[49,69,70],{},"2 GB",[49,72,73],{},"8 GB",[32,75,76,81,84],{},[49,77,78],{},[52,79,80],{},"Disk",[49,82,83],{},"20 GB SSD",[49,85,86],{},"50 GB+ SSD (separate volume for the database)",[32,88,89,94,97],{},[49,90,91],{},[52,92,93],{},"Operating system",[49,95,96],{},"Any x86-64 Linux with glibc 2.17 or newer",[49,98,99],{},"Ubuntu 22.04 LTS or 24.04 LTS",[32,101,102,107,115],{},[49,103,104],{},[52,105,106],{},"PostgreSQL",[49,108,109,110,114],{},"12+ with ",[111,112,113],"code",{},"pgcrypto",", co-located",[49,116,117,118,120],{},"14+ with ",[111,119,113],{},", on a dedicated host",[32,122,123,128,131],{},[49,124,125],{},[52,126,127],{},"TLS",[49,129,130],{},"Handled by udServer",[49,132,133],{},"Terminated at a reverse proxy \u002F load balancer",[135,136,137,143],"ul",{},[138,139,140,142],"li",{},[52,141,39],{}," describes an all-in-one evaluation box running udServer and PostgreSQL together, for light user counts.",[138,144,145,147],{},[52,146,42],{}," describes a production deployment with the database on its own host and TLS offloaded to a load balancer.",[21,149,151],{"id":150},"architecture","Architecture",[14,153,154,155,162,163,166,167,170,171,174,175,178],{},"udServer ships as an ",[52,156,157,158,161],{},"x86-64 (",[111,159,160],{},"amd64",") binary only",". There is no ARM build. On AWS this means an Intel\u002FAMD instance family (for example the ",[111,164,165],{},"t3",", ",[111,168,169],{},"m5",", or ",[111,172,173],{},"c5"," families) rather than a Graviton (",[111,176,177],{},"*g",") instance.",[21,180,93],{"id":181},"operating-system",[14,183,184,185,188],{},"udServer is built against ",[52,186,187],{},"glibc 2.17 or newer",", so it runs on essentially any current x86-64 Linux distribution, including:",[135,190,191,194,197,200],{},[138,192,193],{},"Ubuntu 20.04, 22.04, and 24.04 LTS",[138,195,196],{},"Debian 11 and 12",[138,198,199],{},"Amazon Linux 2023",[138,201,202],{},"RHEL \u002F Rocky \u002F AlmaLinux 8 and 9",[14,204,205,206,209,210,215,216,218,219,223],{},"The shipped ",[111,207,208],{},".deb"," package and the official Docker image both target Ubuntu, so an Ubuntu 22.04 or 24.04 LTS host is the best-supported choice. See ",[211,212,214],"a",{"href":213},"gettingstarted","Generic Installation"," for the ",[111,217,208],{}," install and ",[211,220,222],{"href":221},"amazon-ec2","Amazon EC2"," for an Amazon Linux 2023 walkthrough.",[225,226,228],"h3",{"id":227},"runtime-dependencies","Runtime dependencies",[14,230,231,232,234],{},"The ",[111,233,208],{}," package declares these and installs them automatically. If you deploy the raw binary or a container, make sure the following are present:",[135,236,237,243,249,254],{},[138,238,239,242],{},[111,240,241],{},"libc6"," (glibc) 2.17 or newer",[138,244,245,248],{},[111,246,247],{},"libpq5"," — the PostgreSQL client library",[138,250,251],{},[111,252,253],{},"libstdc++6",[138,255,256,259],{},[111,257,258],{},"ca-certificates"," — required so udServer can validate outbound TLS connections to your OIDC provider, the licensing server, and object storage",[21,261,106],{"id":262},"postgresql",[14,264,265],{},"udServer stores everything in PostgreSQL and cannot start without it.",[135,267,268,274,283,301],{},[138,269,270,273],{},[52,271,272],{},"Version:"," 12 or newer is required; 14 or newer is recommended.",[138,275,276,279,280,282],{},[52,277,278],{},"Extension:"," the ",[111,281,113],{}," extension must be available.",[138,284,285,288,289,292,293,296,297,300],{},[52,286,287],{},"Connections:"," udServer maintains a pool of database connections (default ",[111,290,291],{},"10","). Fewer than ",[111,294,295],{},"4"," will degrade performance. Make sure PostgreSQL's ",[111,298,299],{},"max_connections"," comfortably exceeds the pool size across all udServer instances that share the database.",[138,302,303,306],{},[52,304,305],{},"Placement:"," co-locating PostgreSQL with udServer is fine for the minimum tier. For production, run PostgreSQL on a dedicated host or a managed service (for example Amazon RDS) and give its data directory its own SSD volume.",[21,308,310],{"id":309},"networking-and-tls","Networking and TLS",[135,312,313,324,331],{},[138,314,315,316,319,320,323],{},"udServer listens for HTTP and HTTPS traffic (ports ",[111,317,318],{},"80"," and ",[111,321,322],{},"443"," by default).",[138,325,326,327,330],{},"It makes ",[52,328,329],{},"outbound"," HTTPS connections to your OIDC\u002FOAuth provider, the Euclideon licensing server, and your configured object storage.",[138,332,333,334,337],{},"udServer can terminate TLS itself, but for production deployments — anything above roughly ",[52,335,336],{},"100 concurrent users"," — we recommend terminating TLS at a reverse proxy or load balancer (for example an AWS ALB or nginx) in front of udServer, which handles it more efficiently.",[21,339,341],{"id":340},"sizing-notes","Sizing notes",[135,343,344,347,350],{},[138,345,346],{},"The web request layer uses a fixed pool of worker threads, so a handful of cores is enough for most deployments; additional cores mainly help with TLS handshakes when udServer terminates TLS itself.",[138,348,349],{},"Extra RAM primarily benefits the internal web cache and, when co-located, PostgreSQL.",[138,351,352,353,356],{},"Disk usage grows with the database (users, organisations, projects, and scenes) plus logs and crash dumps written under ",[111,354,355],{},"\u002Fvar\u002Fopt\u002Fudserver",". Because point data lives in object storage rather than on the host, the udServer host's own disk footprint stays small.",{"title":358,"searchDepth":359,"depth":359,"links":360},"",2,[361,362,363,367,368,369],{"id":23,"depth":359,"text":24},{"id":150,"depth":359,"text":151},{"id":181,"depth":359,"text":93,"children":364},[365],{"id":227,"depth":366,"text":228},3,{"id":262,"depth":359,"text":106},{"id":309,"depth":359,"text":310},{"id":340,"depth":359,"text":341},"md",{},true,"\u002Fadmin\u002Fsystem-requirements",{"title":5,"description":16},"2.admin\u002F1.system-requirements","edo3o46RaPrA1lfFbl1mU2gtF5nmJJTlRaWaPwZQ_M4",[378,382,435,477],{"title":379,"path":380,"stem":381},"udServer Manuals","\u002F","0.index",{"title":383,"path":384,"stem":385,"children":386},"User Guide","\u002Fdocs\u002Fuser","1.user\u002F0.index",[387,391,395,399,403,407,411,415,419,423,427,431],{"title":388,"path":389,"stem":390},"Login","\u002Fdocs\u002Fuser\u002Flogin","1.user\u002F1.login",{"title":392,"path":393,"stem":394},"Account Settings","\u002Fdocs\u002Fuser\u002Faccount-settings","1.user\u002Faccount-settings",{"title":396,"path":397,"stem":398},"Files","\u002Fdocs\u002Fuser\u002Ffiles","1.user\u002Ffiles",{"title":400,"path":401,"stem":402},"Jobs","\u002Fdocs\u002Fuser\u002Fjobs","1.user\u002Fjobs",{"title":404,"path":405,"stem":406},"3rd Party Licenses","\u002Fdocs\u002Fuser\u002Flicenses","1.user\u002Flicenses",{"title":408,"path":409,"stem":410},"Organisations","\u002Fdocs\u002Fuser\u002Forganisations","1.user\u002Forganisations",{"title":412,"path":413,"stem":414},"Permissions","\u002Fdocs\u002Fuser\u002Fpermissions","1.user\u002Fpermissions",{"title":416,"path":417,"stem":418},"Connecting an Azure Blob Container to a Project","\u002Fdocs\u002Fuser\u002Fproject-azure-setup","1.user\u002Fproject-azure-setup",{"title":420,"path":421,"stem":422},"Connecting an AWS S3 Bucket to a Project","\u002Fdocs\u002Fuser\u002Fproject-s3-setup","1.user\u002Fproject-s3-setup",{"title":424,"path":425,"stem":426},"Projects","\u002Fdocs\u002Fuser\u002Fprojects","1.user\u002Fprojects",{"title":428,"path":429,"stem":430},"Scenes","\u002Fdocs\u002Fuser\u002Fscenes","1.user\u002Fscenes",{"title":432,"path":433,"stem":434},"Software Downloads","\u002Fdocs\u002Fuser\u002Fsoftware","1.user\u002Fsoftware",{"title":436,"path":437,"stem":438,"children":439},"IT Administrators Guide","\u002Fdocs\u002Fadmin","2.admin\u002F0.index",[440,442,446,449,453,457,461,465,469,473],{"title":5,"path":441,"stem":375},"\u002Fdocs\u002Fadmin\u002Fsystem-requirements",{"title":443,"path":444,"stem":445},"Publishing Software (Packages)","\u002Fdocs\u002Fadmin\u002Fsoftware-packages","2.admin\u002F10.software-packages",{"title":214,"path":447,"stem":448},"\u002Fdocs\u002Fadmin\u002Fgettingstarted","2.admin\u002F2.gettingstarted",{"title":450,"path":451,"stem":452},"Setting up on an Amazon EC2 instance","\u002Fdocs\u002Fadmin\u002Famazon-ec2","2.admin\u002F3.amazon-ec2",{"title":454,"path":455,"stem":456},"Configuring OAuth \u002F OIDC Authentication","\u002Fdocs\u002Fadmin\u002Foauth","2.admin\u002F4.oauth",{"title":458,"path":459,"stem":460},"Admin Console","\u002Fdocs\u002Fadmin\u002Fadmin-console","2.admin\u002F5.admin-console",{"title":462,"path":463,"stem":464},"Server Configuration","\u002Fdocs\u002Fadmin\u002Fserver-configuration","2.admin\u002F6.server-configuration",{"title":466,"path":467,"stem":468},"Users & Organisations","\u002Fdocs\u002Fadmin\u002Fusers-and-organisations","2.admin\u002F7.users-and-organisations",{"title":470,"path":471,"stem":472},"Analytics & System Log","\u002Fdocs\u002Fadmin\u002Fanalytics-and-logs","2.admin\u002F8.analytics-and-logs",{"title":474,"path":475,"stem":476},"Webhooks","\u002Fdocs\u002Fadmin\u002Fwebhooks","2.admin\u002F9.webhooks",{"title":478,"path":479,"stem":480,"children":481},"Developers Guide","\u002Fdocs\u002Fdev","3.dev\u002F0.index",[482],{"title":483,"path":484,"stem":485},"udServer API","\u002Fdocs\u002Fdev\u002Fudserverapi","3.dev\u002FudServerAPI",1783233110954]