OneCamp Setup Doc

Required DNS Subdomains for OneCamp

Please add the following subdomains to your DNS records. They should usually be A records pointing to your server IP (A record), depending on your infrastructure.

Subdomain List

  • traefik.yourdomain.com
  • onecamp-dgraph-alpha.yourdomain.com
  • onecamp-dgraph.yourdomain.com
  • onecamp-ch.yourdomain.com
  • onecamp-emqx.yourdomain.com
  • onecamp-emqx-console.yourdomain.com
  • onecamp-collab.yourdomain.com
  • onecamp-postgres.yourdomain.com
  • onecamp-minio.yourdomain.com
  • onecamp-minio-console.yourdomain.com
  • onecamp-redis.yourdomain.com
  • onecamp-os.yourdomain.com
  • onecamp-backend.yourdomain.com
  • onecamp-livekit.yourdomain.com

Quick copy-paste (without domain suffix)

traefik
onecamp-dgraph-alpha
onecamp-dgraph
onecamp-ch
onecamp-emqx
onecamp-emqx-console
onecamp-collab
onecamp-postgres
onecamp-minio
onecamp-minio-console
onecamp-redis
onecamp-os
onecamp-backend
onecamp-livekit

Service Reference (optional – for your team)

Subdomain Purpose / Service
traefikTraefik dashboard & API (protected)
onecamp-dgraph-alphaDgraph Alpha (internal)
onecamp-dgraphDgraph main endpoint
onecamp-chClickHouse
onecamp-emqxEMQX MQTT broker
onecamp-emqx-consoleEMQX Dashboard
onecamp-collabCollaboration service
onecamp-postgresPostgreSQL
onecamp-minioMinIO object storage
onecamp-minio-consoleMinIO Console
onecamp-redisRedis
onecamp-osOpenSearch / Elasticsearch
onecamp-backendMain application backend API
onecamp-livekitLiveKit (WebRTC video & audio)

Run these commands in sequence

  • cp ./.sample.env ./.env
  • cp ./sample-compose.yml ./compose.yml
  • make update-admin-email EMAIL=your-email
  • make update-server-ip
  • make replace-domain DOMAIN=your-domain
  • make create-traefik-password PASSWORD=secret
  • make update-traefik-email EMAIL=your-email
  • make update-allowed-domains DOMAINS=your-domain
  • make create-swap
  • make build_restart_all
  • make create_postgres_db
  • echo "127.0.0.1 onecamp-postgres.your-domain.com" | sudo tee -a /etc/hosts
  • ln -s /root/.cargo/bin/sqlx /usr/local/bin/sqlx
  • make migrate_up

Front end changes

.env.production (replace your-domain.com)

NEXT_PUBLIC_BACKEND_URL=https://onecamp-backend.your-domain.com/
NEXT_PUBLIC_FRONTEND_URL=https://onecamp.your-domain.com/
NEXT_PUBLIC_APP_URL=https://onecamp.your-domain.com/
NEXT_PUBLIC_ORG_NAME=one camp
NEXT_PUBLIC_LIVEKIT_URL=https://onecamp-livekit.your-domain.com
NEXT_PUBLIC_COLLABORATION_URL=wss://onecamp-collab.your-domain.com
NEXT_PUBLIC_MQTT_HOST=onecamp-emqx.your-domain.com

# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY="AIzaSysdTs-_laEM_a8sdsdnuE"
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN="onemasdsd.firebaseapp.com"
NEXT_PUBLIC_FIREBASE_PROJECT_ID="onemana-dsd"
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET="onemsds-dsd.appspot.com"
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID="751dsddsdsd343"
NEXT_PUBLIC_FIREBASE_APP_ID="1:75ddsds68243:web:da94e3eb699c7255f74b46"
NEXT_PUBLIC_FIREBASE_VAPID_KEY="BPLSq2dsd25_6MdNV9y5_CtFsdsddsN6KmPciWd3PLewcauuO3B40Fxl0DYcycoqxAgwdssvq1CIiM27c"

next.config.ts (replace yourdoamin.com)

import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  /* config options here */
    reactStrictMode: false,
    images: {
        // unoptimized: true,
        dangerouslyAllowLocalIP: true,
        remotePatterns: [
            {
                protocol: 'http',
                hostname: 'localhost',
                port: '9000',
            },
            {
                protocol: 'https',
                hostname: 'onecamp-minio.yourdomain.com',
            },
            {
                protocol: 'http',
                hostname: 'onecamp-minio.yourdomain',
            }
        ],
    },

};

export default nextConfig;

Debug livekit

sometimes depending on server provider you might need to allow udp port

sudo ufw allow 50000:60000/udp && sudo ufw allow 7881/tcp && sudo ufw allow 7880/tcp