Elija quién puede registrarse como socio
Los socios se registran en/partner/signup en el dominio de su panel. Si la persona no ha iniciado sesión, la página crea primero su cuenta y luego el socio. Los socios inician sesión en /partner/login. PARTNER_SIGNUP decide quién puede registrarse:
open, el valor predeterminado en un despliegue autoalojado, permite registrarse a cualquier personainviteexige un enlace de registro que usted crea para cada socio
DATABASE_URL y APP_BASE_URL apuntando a su despliegue:
.partner-invites/, con el nombre de la invitación, que solo su usuario puede leer. El enlace funciona una vez, para esa dirección de correo después de que su titular la verifique, durante 7 días. Envíelo al socio y luego elimine el archivo.
Dé subdominios a los socios
PARTNER_BASE_DOMAIN es el dominio del que sus socios reciben subdominios, como partners.example.com. Elija un dominio neutro, porque los clientes de sus socios lo ven en la barra de direcciones y en sus correos:
1
Apunte un registro comodín a su servidor
En su proveedor de DNS, agregue un registro para
*.partners.example.com que apunte al servidor que ejecuta el admin.2
Defina el dominio base
Defina
PARTNER_BASE_DOMAIN=partners.example.com y reinicie el admin y el worker. Cada socio nuevo reserva entonces un subdominio al registrarse, y los socios que se registraron antes reciben uno cuando se inicia el admin.3
Permita que su proveedor de correo envíe desde él
Los correos de los socios salen desde
no-reply@partners.example.com, con el nombre de cada socio. Verifique ese remitente con su proveedor de correo, o los correos fallarán.4
Sirva HTTPS para los subdominios
Con el TLS bajo demanda de Caddy, Caddy obtiene un certificado para el subdominio de cada socio en su primera visita. Con otro proxy, dele un certificado comodín para
*.partners.example.com.PARTNER_BASE_DOMAIN, los socios no reciben subdominio y sus correos salen desde EMAIL_FROM. Un socio necesita entonces un dominio propio verificado antes de poder crear un negocio o una demo.
Sirva los dominios propios de los socios
Un socio con un nivel de pago puede conectar un subdominio de su propio sitio web, comoapp.acmeagency.com, y cualquier socio puede hacerlo si usted no vende niveles. El socio agrega dos registros que muestra la consola: un CNAME que apunta a PARTNER_DOMAIN_CNAME_TARGET y un registro TXT que demuestra que controla el dominio. El worker los comprueba, y el dominio se activa cuando ambos son correctos. Elija una forma de emitir los certificados.
Caddy con Docker Compose
El Caddy de Compose emite el certificado de cada dominio la primera vez que alguien lo visita, después de que el admin aprueba el nombre de host en/api/tls/ask. Defina estos valores en .env, abra los puertos TCP 80 y 443 y el puerto UDP 443, y reinicie la pila:
APP_BASE_URL, salvo que usted defina PARTNER_DOMAIN_CNAME_TARGET. Sirva HTTPS desde Caddy explica qué nombres de host aprueba Caddy.
Cloudflare for SaaS
Cuando el DNS dePARTNER_BASE_DOMAIN está en Cloudflare, Cloudflare puede emitir en su lugar los certificados de los socios. En la zona, active Cloudflare for SaaS en SSL/TLS > Custom Hostnames. Agregue un registro con proxy, como host.partners.example.com, como origen de respaldo, y configure el modo de cifrado de la zona en Full. Luego defina CLOUDFLARE_SAAS_API_TOKEN con un token que tenga el permiso Zone > SSL and Certificates > Edit, y CLOUDFLARE_SAAS_ZONE_ID con el ID de la zona.
Los socios apuntan su CNAME al origen de respaldo. Si define tanto Cloudflare for SaaS como CADDY_ON_DEMAND_TLS, el despliegue usa Cloudflare for SaaS. Los pasos de Cloudflare for SaaS de la guía de Docker Compose cubren cada ajuste.
Traefik
Traefik solo enruta los nombres de host para los que tiene un router, así que los nombres de host de los socios necesitan un router más que capture todos los demás. Traefik no emite certificados para nombres de host que no ha visto, así que combínelo con Cloudflare for SaaS, que sirve los certificados de los socios delante de él. Así funciona la nube de LobbyStack en Dokploy. Agregue un archivo de configuración dinámica, comopartner-hosts.yml, en el directorio que vigila Traefik:
partner-hosts.yml
1 coloca estos routers por debajo de todas las demás rutas, así que su panel conserva la suya. El segundo router redirige las solicitudes HTTP simples a HTTPS. Reemplace your_admin_service por el nombre del servicio del admin en la red de Traefik. El admin responde al nombre de host de cada socio con la marca de ese socio, y a cualquier otro nombre de host con un 404.
Traefik responde a los nombres de host de los socios con su certificado predeterminado, que no los incluye. Mantenga el modo de cifrado de la zona de Cloudflare en Full, no en Full (strict), para que Cloudflare lo acepte. Para los subdominios de los socios, pase también el registro comodín por el proxy de Cloudflare.
Permita que los socios facturen a sus negocios con Stripe Connect
Stripe Connect permite que cada socio conecte su propia cuenta de Stripe y venda paquetes en ella. Configúrelo una vez en su cuenta de plataforma de Stripe:1
Active Connect
En su cuenta de Stripe, active Connect.
2
Cree la clave
Cree una clave secreta o una clave restringida con el acceso de escritura que indica
STRIPE_CONNECT_SECRET_KEY, y defínala como STRIPE_CONNECT_SECRET_KEY.3
Cree el endpoint de webhook
Cree un endpoint en su
APP_BASE_URL seguido de /api/webhooks/stripe, para los eventos de las cuentas conectadas, con los eventos que indica STRIPE_CONNECT_WEBHOOK_SECRET. Defina su secreto de firma como STRIPE_CONNECT_WEBHOOK_SECRET.4
Reinicie
Reinicie el admin y el worker. El propietario de cada socio puede entonces conectar una cuenta de Stripe en la página Pagos de la consola.
Venda niveles a los socios con Polar
Los socios compran niveles desde la página Facturación de la consola y le pagan a usted con Polar. Cree un producto recurrente para cada nivel de pago y cada periodo, con los precios de esta tabla:
La página Facturación muestra estos precios desde el código, así que dé a sus productos los mismos. Luego configure la facturación:
- Defina los seis ID de producto:
POLAR_PARTNER_STARTER_MONTHLY_PRODUCT_ID,POLAR_PARTNER_STARTER_ANNUAL_PRODUCT_ID, y el mismo par paraGROWTHySCALE. Cada uno debe ser un producto distinto. - Mantenga definidos
POLAR_ACCESS_TOKEN,POLAR_ORGANIZATION_IDyPOLAR_WEBHOOK_SECRET, porque sus propios planes los usan. - Agregue los medidores y los precios medidos que facturan el excedente de la bolsa y los números de teléfono adicionales, como describe la guía de facturación de Polar.
- Reinicie el admin y el worker. El worker registra al iniciarse si usted vende niveles.
Gestione socios sin niveles
Deje vacíos los productosPOLAR_PARTNER_*, y los socios no le pagan nada a través de LobbyStack. Sus consolas no muestran la página Facturación, y nada limita los minutos, los chats ni los números de teléfono de sus negocios.
Para limitar lo que comparten cada mes los negocios de un socio, fije su bolsa desde una copia del repositorio, con DATABASE_URL apuntando a su base de datos:
pnpm partner-pool:set están con las variables de socios.
Incluya los nombres de host de los socios en Turnstile
Si usa Cloudflare Turnstile en el registro, conNEXT_PUBLIC_TURNSTILE_SITE_KEY y TURNSTILE_SECRET_KEY, su widget solo se muestra en los nombres de host que usted le indica. Además, el admin solo acepta un token del nombre de host en el que el visitante lo resolvió. Agregue estos nombres de host al widget en Cloudflare:
PARTNER_BASE_DOMAIN, comopartners.example.com, que cubre el subdominio de cada socio- el dominio propio de cada socio, una vez activo, si las personas también deben registrarse en él
PARTNER_BASE_DOMAIN, las invitaciones se abren en el dominio propio de cada socio, así que agregue cada uno. En el plan Free de Cloudflare, un widget admite hasta 10 nombres de host.
Compruebe la configuración
Haga pruebas con un socio propio antes de invitar a otros:- Regístrese como socio en
/partner/signupy abra su subdominio desde Marca y dominio. Debería ver la página de inicio de sesión con la marca del socio. - Cree un negocio y compruebe que la invitación del propietario llega con el nombre del socio.
- Conecte un subdominio de un dominio que controle, agregue sus dos registros DNS y espere a que aparezca Activo.
- Con Stripe Connect, conecte una cuenta de Stripe de prueba, cree un paquete y páguelo desde la invitación de un negocio.
- Con niveles, compre uno en la página Facturación y compruebe que la bolsa y los números de teléfono lo siguen.