openvibers/openvibe.network Commits
Park the two 11-10 domains; they join OWNED_ZONES (#771)
Changes
@@@ -27,6 +27,8 @@# the account hub's homes, in this file below. openvibe.party left on 2026-11-07: OpenVibe.Chat serves it# (OpenVibe.Chat deploy/nginx/openvibe.party.conf).# openvibe.computer is prepared for OpenVibe.Computer; its host vhost is swapped after review and readiness.++# 2026-11-10: the two bought that day (openvibe.compare, openvibe.directory) are parked here the same way,++# each sent to where its capability lives today.## Install: sudo ov-vhost-install deploy/nginx/parked-domains.conf parked-domains.conf# after removing Sites' vhost for each name. Each name uses its own certificate (a vhost must use its own@@@ -291,3 +293,41 @@ server {# openvibe.studio: not parked since Studio v0's launch. OpenVibe.Studio serves it (its own vhost,# deploy/nginx/openvibe.studio.conf in OpenVibe.Studio, installed with ov-vhost-install).++++# openvibe.compare: parked, sent to OpenVibe AI, where the models live today (AI models first) until its own vhost takes the name (2026-11-10).++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.compare www.openvibe.compare;++ return 302 https://openvibe.ai/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.compare www.openvibe.compare;++ ssl_certificate /etc/letsencrypt/live/openvibe.compare/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.compare/privkey.pem;++ access_log off;++ return 302 https://openvibe.ai/;++}++++# openvibe.directory: parked, sent to the network's front door (no directory capability yet) until its own vhost takes the name (2026-11-10).++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.directory www.openvibe.directory;++ return 302 https://openvibe.network/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.directory www.openvibe.directory;++ ssl_certificate /etc/letsencrypt/live/openvibe.directory/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.directory/privkey.pem;++ access_log off;++ return 302 https://openvibe.network/;++}@@@ -702,7 +702,7 @@ function ripple(btn, e) {// safe-redirect:begin// Where a sign-in may send the browser: a path on this site, this origin, or https on a zone// OpenVibe owns (server/auth/sso-owned.js). Never javascript:/data:, never another host.--const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio'];++const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio', 'openvibe.compare', 'openvibe.directory'];const OV_USER_CONTENT_ZONES = ['openvibe.host', 'openvibe.link']; // tenant sites: only the apex is oursfunction safeReturnUrl(raw) {const s = String(raw == null ? '' : raw);@@@ -80,7 +80,7 @@ li.now .dot i{animation:breathe 1.2s var(--ov-ease-in-out, ease-in-out) infinite// safe-redirect:begin// Where a sign-in may send the browser: a path on this site, this origin, or https on a zone// OpenVibe owns (server/auth/sso-owned.js). Never javascript:/data:, never another host.-- const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio'];++ const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio', 'openvibe.compare', 'openvibe.directory'];const OV_USER_CONTENT_ZONES = ['openvibe.host', 'openvibe.link']; // tenant sites: only the apex is oursfunction safeNext(raw) {const s = String(raw == null ? '' : raw);@@@ -9,6 +9,8 @@ const OWNED_ZONES = ['open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design',// 2026-11-07: the seven bought that day (parked in deploy/nginx/parked-domains.conf until their products serve them).'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio',++ // 2026-11-10: the two bought that day (parked in deploy/nginx/parked-domains.conf until their products serve them).++ 'openvibe.compare', 'openvibe.directory',];// Zones whose subdomains are people's own content (OpenVibe.Host tenant sites, <site>.openvibe.host,// which run the tenant's JS): only the apex is OpenVibe's. Domain validation still refuses them as
@@ -27,6 +27,8 @@
@@ -27,6 +27,8 @@
# the account hub's homes, in this file below. openvibe.party left on 2026-11-07: OpenVibe.Chat serves it
# the account hub's homes, in this file below. openvibe.party left on 2026-11-07: OpenVibe.Chat serves it
# (OpenVibe.Chat deploy/nginx/openvibe.party.conf).
# (OpenVibe.Chat deploy/nginx/openvibe.party.conf).
# openvibe.computer is prepared for OpenVibe.Computer; its host vhost is swapped after review and readiness.
# openvibe.computer is prepared for OpenVibe.Computer; its host vhost is swapped after review and readiness.
+# 2026-11-10: the two bought that day (openvibe.compare, openvibe.directory) are parked here the same way,
+# each sent to where its capability lives today.
#
#
# Install: sudo ov-vhost-install deploy/nginx/parked-domains.conf parked-domains.conf
# Install: sudo ov-vhost-install deploy/nginx/parked-domains.conf parked-domains.conf
# after removing Sites' vhost for each name. Each name uses its own certificate (a vhost must use its own
# after removing Sites' vhost for each name. Each name uses its own certificate (a vhost must use its own
@@ -291,3 +293,41 @@ server {
@@ -291,3 +293,41 @@ server {
# openvibe.studio: not parked since Studio v0's launch. OpenVibe.Studio serves it (its own vhost,
# openvibe.studio: not parked since Studio v0's launch. OpenVibe.Studio serves it (its own vhost,
# deploy/nginx/openvibe.studio.conf in OpenVibe.Studio, installed with ov-vhost-install).
# deploy/nginx/openvibe.studio.conf in OpenVibe.Studio, installed with ov-vhost-install).
+
+# openvibe.compare: parked, sent to OpenVibe AI, where the models live today (AI models first) until its own vhost takes the name (2026-11-10).
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.compare www.openvibe.compare;
+ return 302 https://openvibe.ai/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.compare www.openvibe.compare;
+ ssl_certificate /etc/letsencrypt/live/openvibe.compare/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.compare/privkey.pem;
+ access_log off;
+ return 302 https://openvibe.ai/;
+}
+
+# openvibe.directory: parked, sent to the network's front door (no directory capability yet) until its own vhost takes the name (2026-11-10).
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.directory www.openvibe.directory;
+ return 302 https://openvibe.network/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.directory www.openvibe.directory;
+ ssl_certificate /etc/letsencrypt/live/openvibe.directory/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.directory/privkey.pem;
+ access_log off;
+ return 302 https://openvibe.network/;
+}
@@ -702,7 +702,7 @@ function ripple(btn, e) {
@@ -702,7 +702,7 @@ function ripple(btn, e) {
// safe-redirect:begin
// safe-redirect:begin
// Where a sign-in may send the browser: a path on this site, this origin, or https on a zone
// Where a sign-in may send the browser: a path on this site, this origin, or https on a zone
// OpenVibe owns (server/auth/sso-owned.js). Never javascript:/data:, never another host.
// OpenVibe owns (server/auth/sso-owned.js). Never javascript:/data:, never another host.
-const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio'];
+const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio', 'openvibe.compare', 'openvibe.directory'];
const OV_USER_CONTENT_ZONES = ['openvibe.host', 'openvibe.link']; // tenant sites: only the apex is ours
const OV_USER_CONTENT_ZONES = ['openvibe.host', 'openvibe.link']; // tenant sites: only the apex is ours
function safeReturnUrl(raw) {
function safeReturnUrl(raw) {
const s = String(raw == null ? '' : raw);
const s = String(raw == null ? '' : raw);
@@ -80,7 +80,7 @@ li.now .dot i{animation:breathe 1.2s var(--ov-ease-in-out, ease-in-out) infinite
@@ -80,7 +80,7 @@ li.now .dot i{animation:breathe 1.2s var(--ov-ease-in-out, ease-in-out) infinite
// safe-redirect:begin
// safe-redirect:begin
// Where a sign-in may send the browser: a path on this site, this origin, or https on a zone
// Where a sign-in may send the browser: a path on this site, this origin, or https on a zone
// OpenVibe owns (server/auth/sso-owned.js). Never javascript:/data:, never another host.
// OpenVibe owns (server/auth/sso-owned.js). Never javascript:/data:, never another host.
- const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio'];
+ const OV_OWNED_ZONES = ['openvibe.network', 'openvibe.live', 'openvibe.tools', 'openvibe.media', 'openvibe.games', 'openvibe.community', 'openvibe.space', 'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews', 'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons', 'openre.stream', 'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design', 'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio', 'openvibe.compare', 'openvibe.directory'];
const OV_USER_CONTENT_ZONES = ['openvibe.host', 'openvibe.link']; // tenant sites: only the apex is ours
const OV_USER_CONTENT_ZONES = ['openvibe.host', 'openvibe.link']; // tenant sites: only the apex is ours
function safeNext(raw) {
function safeNext(raw) {
const s = String(raw == null ? '' : raw);
const s = String(raw == null ? '' : raw);
@@ -9,6 +9,8 @@ const OWNED_ZONES = [
@@ -9,6 +9,8 @@ const OWNED_ZONES = [
'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design',
'open.shoes', 'openvibe.today', 'openvibe.vision', 'openvibe.domains', 'openvibe.report', 'openvibe.meme', 'openvibe.casino', 'openvibe.surf', 'openvibe.fun', 'openvibe.tours', 'openvibe.exchange', 'openvibe.cam', 'openvibe.design',
// 2026-11-07: the seven bought that day (parked in deploy/nginx/parked-domains.conf until their products serve them).
// 2026-11-07: the seven bought that day (parked in deploy/nginx/parked-domains.conf until their products serve them).
'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio',
'openvibe.computer', 'openvibe.email', 'openvibe.link', 'openvibe.locker', 'openvibe.my', 'openvibe.party', 'openvibe.studio',
+ // 2026-11-10: the two bought that day (parked in deploy/nginx/parked-domains.conf until their products serve them).
+ 'openvibe.compare', 'openvibe.directory',
];
];
// Zones whose subdomains are people's own content (OpenVibe.Host tenant sites, <site>.openvibe.host,
// Zones whose subdomains are people's own content (OpenVibe.Host tenant sites, <site>.openvibe.host,
// which run the tenant's JS): only the apex is OpenVibe's. Domain validation still refuses them as
// which run the tenant's JS): only the apex is OpenVibe's. Domain validation still refuses them as