OpportunitiesEntities
Docs
    Ring Platform

    Decentralized Self-building Future

    Sign In
    Entities
    Opportunities
    Store
    Docs
    Platform Concepts
    RING EconomySonoratek LLCGlobal ImpactAI Meets Web3
    Get Started
    Quick StartCalculatorRoadmap
    Privacy|Contact
    v1.104.26|Sonoratek LLC

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Credit Rewards
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    News Kingdom architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server
    OSS vs enterprise

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Credit Rewards
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    News Kingdom architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server
    OSS vs enterprise

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Credit Rewards
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    News Kingdom architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server
    OSS vs enterprise

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Self-hosted deployment

    Use the Founder / Developer tabs in the docs sidebar to filter this page. The steps below were checked against the public repo layout: ring/install.sh, ring/web/, ring/cli/, ring/scripts/.

    The public repository connectplatform/ring (Apache 2.0) contains everything you need to run a clone on one server: the Next.js app in web/, the install.sh wizard, a flattened PostgreSQL schema, Docker files and the ring CLI. Kubernetes manifests, CI workflows and Ringdom's build pipeline are not in it.

    Known issue: ./install.sh setup-db and npm run db:apply-schema fail on a fresh public checkout. The first looks for web/scripts/setup-clone-db.sh and the second looks for ring/data/schema.sql, and neither path exists after the move to web/. Apply web/data/schema.sql with psql as shown in Step 2 below.

    Earlier docs saidCurrent public repo
    Run scripts/setup-dev.sh, npm run setup:env, scripts/run-migration.shNone of these scripts exist in the public tree. ./install.sh (dev mode) is the wizard
    Apply numbered migrationsFresh installs apply only web/data/schema.sql (flattened v4.1.0)
    cli/ is gitignoredcli/ ships publicly. See Ring CLI
    docker compose up gives a full stackCommitted docker-compose.yml has no Postgres service and no DB_BACKEND_MODE. docker-compose.template.yml has both

    Choose your hosting path

    Deployment overview

    One Linux box with Node and PostgreSQL is the path on this page. The hub compares every option.

    Docker

    Same app in a container. Easier upgrades and rollbacks on any Docker host.

    Vercel

    Hosted Next.js. Pair it with Supabase, your own PostgreSQL, or firebase-full mode.

    Managed by Ringdom

    Ringdom settlers get Kubernetes hosting, CI and the deploy pipeline run for them.

    Prerequisites

    • Node.js 20 or newer (checked by install.sh), npm and git.
    • PostgreSQL 16 (docker-compose.template.yml uses postgres:16-alpine) and the psql client.
    • openssl, so the wizard can generate AUTH_SECRET.

    Frequently asked questions

    Ops

    Do I need Firebase?

    No, not in k8s-postgres-fcm mode. Without NEXT_PUBLIC_FIREBASE_PROJECT_ID the app logs a warning and turns push off. firebase-full mode is different: it requires the AUTH_FIREBASE_* keys.

    Can I upgrade later without losing my changes?

    Yes. Use ring upgrade for a preview, then ring upgrade --apply. It merges upstream system files and never commits for you.

    Known gaps

    Related documentation

    Related documentation

    Environment Configuration

    Deep-dive: every environment variable the app reads, beyond the minimum set here.

    Backend modes and databases

    Prerequisite: choose between k8s-postgres-fcm, supabase-fcm and firebase-full.

    Docker

    Next-step: package the same build as a container.

    OSS vs enterprise

    See-also: what Ringdom runs for settlers that the public repo does not include.

    1. Docs
    2. /Deployment
    3. /Self-hosted deployment

    Updated Oct 1, 20265 min listen

    Self-hosted deployment

    Use the Founder / Developer tabs in the docs sidebar to filter this page. The steps below were checked against the public repo layout: ring/install.sh, ring/web/, ring/cli/, ring/scripts/.

    The public repository connectplatform/ring (Apache 2.0) contains everything you need to run a clone on one server: the Next.js app in web/, the install.sh wizard, a flattened PostgreSQL schema, Docker files and the ring CLI. Kubernetes manifests, CI workflows and Ringdom's build pipeline are not in it.

    Known issue: ./install.sh setup-db and npm run db:apply-schema fail on a fresh public checkout. The first looks for web/scripts/setup-clone-db.sh and the second looks for ring/data/schema.sql, and neither path exists after the move to web/. Apply web/data/schema.sql with psql as shown in Step 2 below.

    Earlier docs saidCurrent public repo
    Run scripts/setup-dev.sh, npm run setup:env, scripts/run-migration.shNone of these scripts exist in the public tree. ./install.sh (dev mode) is the wizard
    Apply numbered migrationsFresh installs apply only web/data/schema.sql (flattened v4.1.0)
    cli/ is gitignoredcli/ ships publicly. See Ring CLI
    docker compose up gives a full stackCommitted docker-compose.yml has no Postgres service and no DB_BACKEND_MODE. docker-compose.template.yml has both

    Choose your hosting path

    Deployment overview

    One Linux box with Node and PostgreSQL is the path on this page. The hub compares every option.

    Docker

    Same app in a container. Easier upgrades and rollbacks on any Docker host.

    Vercel

    Hosted Next.js. Pair it with Supabase, your own PostgreSQL, or firebase-full mode.

    Managed by Ringdom

    Ringdom settlers get Kubernetes hosting, CI and the deploy pipeline run for them.

    Prerequisites

    • Node.js 20 or newer (checked by install.sh), npm and git.
    • PostgreSQL 16 (docker-compose.template.yml uses postgres:16-alpine) and the psql client.
    • openssl, so the wizard can generate AUTH_SECRET.

    Frequently asked questions

    Ops

    Do I need Firebase?

    No, not in k8s-postgres-fcm mode. Without NEXT_PUBLIC_FIREBASE_PROJECT_ID the app logs a warning and turns push off. firebase-full mode is different: it requires the AUTH_FIREBASE_* keys.

    Can I upgrade later without losing my changes?

    Yes. Use ring upgrade for a preview, then ring upgrade --apply. It merges upstream system files and never commits for you.

    Known gaps

    Related documentation

    Related documentation

    Environment Configuration

    Deep-dive: every environment variable the app reads, beyond the minimum set here.

    Backend modes and databases

    Prerequisite: choose between k8s-postgres-fcm, supabase-fcm and firebase-full.

    Docker

    Next-step: package the same build as a container.

    OSS vs enterprise

    See-also: what Ringdom runs for settlers that the public repo does not include.

    1. Docs
    2. /Deployment
    3. /Self-hosted deployment

    Updated Oct 1, 20265 min listen

    Self-hosted deployment

    Use the Founder / Developer tabs in the docs sidebar to filter this page. The steps below were checked against the public repo layout: ring/install.sh, ring/web/, ring/cli/, ring/scripts/.

    The public repository connectplatform/ring (Apache 2.0) contains everything you need to run a clone on one server: the Next.js app in web/, the install.sh wizard, a flattened PostgreSQL schema, Docker files and the ring CLI. Kubernetes manifests, CI workflows and Ringdom's build pipeline are not in it.

    Known issue: ./install.sh setup-db and npm run db:apply-schema fail on a fresh public checkout. The first looks for web/scripts/setup-clone-db.sh and the second looks for ring/data/schema.sql, and neither path exists after the move to web/. Apply web/data/schema.sql with psql as shown in Step 2 below.

    Earlier docs saidCurrent public repo
    Run scripts/setup-dev.sh, npm run setup:env, scripts/run-migration.shNone of these scripts exist in the public tree. ./install.sh (dev mode) is the wizard
    Apply numbered migrationsFresh installs apply only web/data/schema.sql (flattened v4.1.0)
    cli/ is gitignoredcli/ ships publicly. See Ring CLI
    docker compose up gives a full stackCommitted docker-compose.yml has no Postgres service and no DB_BACKEND_MODE. docker-compose.template.yml has both

    Choose your hosting path

    Deployment overview

    One Linux box with Node and PostgreSQL is the path on this page. The hub compares every option.

    Docker

    Same app in a container. Easier upgrades and rollbacks on any Docker host.

    Vercel

    Hosted Next.js. Pair it with Supabase, your own PostgreSQL, or firebase-full mode.

    Managed by Ringdom

    Ringdom settlers get Kubernetes hosting, CI and the deploy pipeline run for them.

    Prerequisites

    • Node.js 20 or newer (checked by install.sh), npm and git.
    • PostgreSQL 16 (docker-compose.template.yml uses postgres:16-alpine) and the psql client.
    • openssl, so the wizard can generate AUTH_SECRET.

    Frequently asked questions

    Ops

    Do I need Firebase?

    No, not in k8s-postgres-fcm mode. Without NEXT_PUBLIC_FIREBASE_PROJECT_ID the app logs a warning and turns push off. firebase-full mode is different: it requires the AUTH_FIREBASE_* keys.

    Can I upgrade later without losing my changes?

    Yes. Use ring upgrade for a preview, then ring upgrade --apply. It merges upstream system files and never commits for you.

    Known gaps

    Related documentation

    Related documentation

    Environment Configuration

    Deep-dive: every environment variable the app reads, beyond the minimum set here.

    Backend modes and databases

    Prerequisite: choose between k8s-postgres-fcm, supabase-fcm and firebase-full.

    Docker

    Next-step: package the same build as a container.

    OSS vs enterprise

    See-also: what Ringdom runs for settlers that the public repo does not include.

    1. Docs
    2. /Deployment
    3. /Self-hosted deployment

    Updated Oct 1, 20265 min listen

    What you need before go-live

    1. A domain and TLS in front of the app (for example a reverse proxy on port 443 forwarding to port 3000).
    2. PostgreSQL 16 with one database for your clone.
    3. Sign-in providers. At least one Auth.js provider (Google, Apple, Telegram, email) with keys.
    4. A payment processor account if you sell anything: WayForPay, Stripe or PayPal.
    5. Optional Firebase project for push notifications. Without it, push is disabled and the app still starts.

    Typical scenarios

    • Pilot community. One small VPS, PostgreSQL on the same box, WayForPay for memberships.
    • Data-residency requirement. Everything in your own data center. Nothing leaves your network except payment and OAuth calls.
    • Agency handover. A developer sets the clone up with install.sh, then hands you the server and the .env.local secrets.
    1. 1

      Clone and run the wizard

      Dev mode checks your system, seeds ring-config.json from ring-config.template.json if missing, runs npm install, walks through Firebase and OAuth setup, and writes web/.env.local from env.local.template with a generated AUTH_SECRET. Answer no to the database prompt for now (see the warning above).

    2. 2

      Create the database and apply the schema

      Grant your app role access to the public schema. Do not replay data/migrations/*.sql on an empty database. Those files are already folded into schema.sql.

    3. 3

      Set the required environment

      VariableWhy
      DB_BACKEND_MODE=k8s-postgres-fcmRequired. PostgreSQL plus optional FCM push. The cluster does not have to be Kubernetes
      DB_HOST, DB_NAME, DB_USER, DB_PASSWORDRequired in this mode (validateBackendModeConfig)
      DB_PORT, DB_SSLDefaults 5432 and false in the template
      AUTH_SECRETAuth.js session encryption
      NEXT_PUBLIC_API_URL, AUTH_URLYour public origin
      PAYMENT_DEFAULT_PROCESSORwayforpay, stripe or paypal
      NEXT_PUBLIC_FIREBASE_PROJECT_IDOptional. Missing means push is disabled
    4. 4

      Build, start and check health

      npm start runs the custom server.ts, not next start. Keep it under a process manager such as systemd. From the repo root, npm run build and npm start delegate to web/ through scripts/run-web.sh.

    Other deploy modes in install.sh

    ./install.sh prod offers three options: Vercel (installs the Vercel CLI, runs vercel --prod), Ubuntu over SSH, and Kubernetes. The Kubernetes option applies k8s/*.yaml only if you have created a k8s/ directory yourself. For containers, start from Dockerfile (multi-stage node:25-alpine, runtime target, port 3000) and docker-compose.template.yml.

    What stays private

    PathReason
    k8s/ manifests and secretsRingdom production topology
    .forgejo/ workflowsStripped from the GitHub mirror by scripts/push-github-oss.sh
    Order Lab (features/crm/lab, my-orders, my-jobs, calculator routes)Empire overlay only. scripts/check-no-org-leak.sh gates it

    What you need before go-live

    1. A domain and TLS in front of the app (for example a reverse proxy on port 443 forwarding to port 3000).
    2. PostgreSQL 16 with one database for your clone.
    3. Sign-in providers. At least one Auth.js provider (Google, Apple, Telegram, email) with keys.
    4. A payment processor account if you sell anything: WayForPay, Stripe or PayPal.
    5. Optional Firebase project for push notifications. Without it, push is disabled and the app still starts.

    Typical scenarios

    • Pilot community. One small VPS, PostgreSQL on the same box, WayForPay for memberships.
    • Data-residency requirement. Everything in your own data center. Nothing leaves your network except payment and OAuth calls.
    • Agency handover. A developer sets the clone up with install.sh, then hands you the server and the .env.local secrets.
    1. 1

      Clone and run the wizard

      Dev mode checks your system, seeds ring-config.json from ring-config.template.json if missing, runs npm install, walks through Firebase and OAuth setup, and writes web/.env.local from env.local.template with a generated AUTH_SECRET. Answer no to the database prompt for now (see the warning above).

    2. 2

      Create the database and apply the schema

      Grant your app role access to the public schema. Do not replay data/migrations/*.sql on an empty database. Those files are already folded into schema.sql.

    3. 3

      Set the required environment

      VariableWhy
      DB_BACKEND_MODE=k8s-postgres-fcmRequired. PostgreSQL plus optional FCM push. The cluster does not have to be Kubernetes
      DB_HOST, DB_NAME, DB_USER, DB_PASSWORDRequired in this mode (validateBackendModeConfig)
      DB_PORT, DB_SSLDefaults 5432 and false in the template
      AUTH_SECRETAuth.js session encryption
      NEXT_PUBLIC_API_URL, AUTH_URLYour public origin
      PAYMENT_DEFAULT_PROCESSORwayforpay, stripe or paypal
      NEXT_PUBLIC_FIREBASE_PROJECT_IDOptional. Missing means push is disabled
    4. 4

      Build, start and check health

      npm start runs the custom server.ts, not next start. Keep it under a process manager such as systemd. From the repo root, npm run build and npm start delegate to web/ through scripts/run-web.sh.

    Other deploy modes in install.sh

    ./install.sh prod offers three options: Vercel (installs the Vercel CLI, runs vercel --prod), Ubuntu over SSH, and Kubernetes. The Kubernetes option applies k8s/*.yaml only if you have created a k8s/ directory yourself. For containers, start from Dockerfile (multi-stage node:25-alpine, runtime target, port 3000) and docker-compose.template.yml.

    What stays private

    PathReason
    k8s/ manifests and secretsRingdom production topology
    .forgejo/ workflowsStripped from the GitHub mirror by scripts/push-github-oss.sh
    Order Lab (features/crm/lab, my-orders, my-jobs, calculator routes)Empire overlay only. scripts/check-no-org-leak.sh gates it

    What you need before go-live

    1. A domain and TLS in front of the app (for example a reverse proxy on port 443 forwarding to port 3000).
    2. PostgreSQL 16 with one database for your clone.
    3. Sign-in providers. At least one Auth.js provider (Google, Apple, Telegram, email) with keys.
    4. A payment processor account if you sell anything: WayForPay, Stripe or PayPal.
    5. Optional Firebase project for push notifications. Without it, push is disabled and the app still starts.

    Typical scenarios

    • Pilot community. One small VPS, PostgreSQL on the same box, WayForPay for memberships.
    • Data-residency requirement. Everything in your own data center. Nothing leaves your network except payment and OAuth calls.
    • Agency handover. A developer sets the clone up with install.sh, then hands you the server and the .env.local secrets.
    1. 1

      Clone and run the wizard

      Dev mode checks your system, seeds ring-config.json from ring-config.template.json if missing, runs npm install, walks through Firebase and OAuth setup, and writes web/.env.local from env.local.template with a generated AUTH_SECRET. Answer no to the database prompt for now (see the warning above).

    2. 2

      Create the database and apply the schema

      Grant your app role access to the public schema. Do not replay data/migrations/*.sql on an empty database. Those files are already folded into schema.sql.

    3. 3

      Set the required environment

      VariableWhy
      DB_BACKEND_MODE=k8s-postgres-fcmRequired. PostgreSQL plus optional FCM push. The cluster does not have to be Kubernetes
      DB_HOST, DB_NAME, DB_USER, DB_PASSWORDRequired in this mode (validateBackendModeConfig)
      DB_PORT, DB_SSLDefaults 5432 and false in the template
      AUTH_SECRETAuth.js session encryption
      NEXT_PUBLIC_API_URL, AUTH_URLYour public origin
      PAYMENT_DEFAULT_PROCESSORwayforpay, stripe or paypal
      NEXT_PUBLIC_FIREBASE_PROJECT_IDOptional. Missing means push is disabled
    4. 4

      Build, start and check health

      npm start runs the custom server.ts, not next start. Keep it under a process manager such as systemd. From the repo root, npm run build and npm start delegate to web/ through scripts/run-web.sh.

    Other deploy modes in install.sh

    ./install.sh prod offers three options: Vercel (installs the Vercel CLI, runs vercel --prod), Ubuntu over SSH, and Kubernetes. The Kubernetes option applies k8s/*.yaml only if you have created a k8s/ directory yourself. For containers, start from Dockerfile (multi-stage node:25-alpine, runtime target, port 3000) and docker-compose.template.yml.

    What stays private

    PathReason
    k8s/ manifests and secretsRingdom production topology
    .forgejo/ workflowsStripped from the GitHub mirror by scripts/push-github-oss.sh
    Order Lab (features/crm/lab, my-orders, my-jobs, calculator routes)Empire overlay only. scripts/check-no-org-leak.sh gates it