openvibers/openvibe.network Commits
The 13 domains bought 10-28 are owned zones, parked at where each capability lives today (#377)
Changes
@@@ -13,6 +13,8 @@# openvibe.homes left on 2026-10-15: OpenVibe.Homes is served by OpenVibe.Rent (OpenVibe.Rent deploy/nginx/openvibe.homes.conf).# openvibe.run left on 2026-10-11: OpenVibe.Run serves it (OpenVibe.Run deploy/nginx/openvibe.run.conf).# realtime.openvibe.network: OpenVibe.Realtime is closed; delivery is OpenVibe.Events.++# 2026-10-28: the thirteen domains bought that day (open.shoes and twelve openvibe.*) are parked here, each sent to++# where its capability lives today, until its room's own vhost takes the name (plan: OpenVibe_New_Domains_Plan).## 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@@@ -54,3 +56,289 @@ server {access_log off;return 302 https://openvibe.network/;}++++# open.shoes → shoe deals on Deals++server {++ listen 80;++ listen [::]:80;++ server_name open.shoes www.open.shoes;++ return 302 https://openvibe.deals/search?q=shoes;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name open.shoes www.open.shoes;++ ssl_certificate /etc/letsencrypt/live/open.shoes/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/open.shoes/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.deals/search?q=shoes;++}++++# openvibe.today → the network's front door (what's on now)++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.today www.openvibe.today;++ return 302 https://openvibe.network/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.today www.openvibe.today;++ ssl_certificate /etc/letsencrypt/live/openvibe.today/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.today/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.network/;++}++++# openvibe.vision → AI, whose models read pictures++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.vision www.openvibe.vision;++ return 302 https://ai.openvibe.services/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.vision www.openvibe.vision;++ ssl_certificate /etc/letsencrypt/live/openvibe.vision/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.vision/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://ai.openvibe.services/;++}++++# openvibe.domains → Host's domain price comparison++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.domains www.openvibe.domains;++ return 302 https://openvibe.host/catalog/domains;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.domains www.openvibe.domains;++ ssl_certificate /etc/letsencrypt/live/openvibe.domains/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.domains/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.host/catalog/domains;++}++++# openvibe.report → the network's open stats++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.report www.openvibe.report;++ return 302 https://openvibe.network/stats;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.report www.openvibe.report;++ ssl_certificate /etc/letsencrypt/live/openvibe.report/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.report/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.network/stats;++}++++# openvibe.meme → Live's clips, where the memes come from++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.meme www.openvibe.meme;++ return 302 https://openvibe.live/clips;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.meme www.openvibe.meme;++ ssl_certificate /etc/letsencrypt/live/openvibe.meme/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.meme/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.live/clips;++}++++# openvibe.casino → Games++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.casino www.openvibe.casino;++ return 302 https://openvibe.games/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.casino www.openvibe.casino;++ ssl_certificate /etc/letsencrypt/live/openvibe.casino/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.casino/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.games/;++}++++# openvibe.surf → Games++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.surf www.openvibe.surf;++ return 302 https://openvibe.games/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.surf www.openvibe.surf;++ ssl_certificate /etc/letsencrypt/live/openvibe.surf/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.surf/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.games/;++}++++# openvibe.fun → Games++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.fun www.openvibe.fun;++ return 302 https://openvibe.games/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.fun www.openvibe.fun;++ ssl_certificate /etc/letsencrypt/live/openvibe.fun/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.fun/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.games/;++}++++# openvibe.tours → Live, where IRL streams walk places++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.tours www.openvibe.tours;++ return 302 https://openvibe.live/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.tours www.openvibe.tours;++ ssl_certificate /etc/letsencrypt/live/openvibe.tours/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.tours/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.live/;++}++++# openvibe.exchange → Services, the developer hub++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.exchange www.openvibe.exchange;++ return 302 https://openvibe.services/;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.exchange www.openvibe.exchange;++ ssl_certificate /etc/letsencrypt/live/openvibe.exchange/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.exchange/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.services/;++}++++# openvibe.cam → going live with your camera on Live++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.cam www.openvibe.cam;++ return 302 https://openvibe.live/broadcast;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.cam www.openvibe.cam;++ ssl_certificate /etc/letsencrypt/live/openvibe.cam/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.cam/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.live/broadcast;++}++++# openvibe.design → the network's themes++server {++ listen 80;++ listen [::]:80;++ server_name openvibe.design www.openvibe.design;++ return 302 https://openvibe.network/themes;++}++++server {++ listen 443 ssl;++ listen [::]:443 ssl;++ http2 on;++ server_name openvibe.design www.openvibe.design;++ ssl_certificate /etc/letsencrypt/live/openvibe.design/fullchain.pem;++ ssl_certificate_key /etc/letsencrypt/live/openvibe.design/privkey.pem;++ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;++ add_header X-Content-Type-Options "nosniff" always;++ add_header Referrer-Policy "strict-origin-when-cross-origin" always;++ access_log off;++ return 302 https://openvibe.network/themes;++}@@@ -465,7 +465,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'];++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'];const OV_USER_CONTENT_ZONES = ['openvibe.host']; // tenant sites: only the apex is oursfunction safeReturnUrl(raw) {const s = String(raw == null ? '' : raw);@@@ -66,7 +66,7 @@ li.now .dot i{animation:spin 1s linear 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'];++ 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'];const OV_USER_CONTENT_ZONES = ['openvibe.host']; // tenant sites: only the apex is oursfunction safeNext(raw) {const s = String(raw == null ? '' : raw);@@@ -6,6 +6,7 @@ const OWNED_ZONES = ['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',];// 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
@@ -13,6 +13,8 @@
@@ -13,6 +13,8 @@
# openvibe.homes left on 2026-10-15: OpenVibe.Homes is served by OpenVibe.Rent (OpenVibe.Rent deploy/nginx/openvibe.homes.conf).
# openvibe.homes left on 2026-10-15: OpenVibe.Homes is served by OpenVibe.Rent (OpenVibe.Rent deploy/nginx/openvibe.homes.conf).
# openvibe.run left on 2026-10-11: OpenVibe.Run serves it (OpenVibe.Run deploy/nginx/openvibe.run.conf).
# openvibe.run left on 2026-10-11: OpenVibe.Run serves it (OpenVibe.Run deploy/nginx/openvibe.run.conf).
# realtime.openvibe.network: OpenVibe.Realtime is closed; delivery is OpenVibe.Events.
# realtime.openvibe.network: OpenVibe.Realtime is closed; delivery is OpenVibe.Events.
+# 2026-10-28: the thirteen domains bought that day (open.shoes and twelve openvibe.*) are parked here, each sent to
+# where its capability lives today, until its room's own vhost takes the name (plan: OpenVibe_New_Domains_Plan).
#
#
# 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
@@ -54,3 +56,289 @@ server {
@@ -54,3 +56,289 @@ server {
access_log off;
access_log off;
return 302 https://openvibe.network/;
return 302 https://openvibe.network/;
}
}
+
+# open.shoes → shoe deals on Deals
+server {
+ listen 80;
+ listen [::]:80;
+ server_name open.shoes www.open.shoes;
+ return 302 https://openvibe.deals/search?q=shoes;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name open.shoes www.open.shoes;
+ ssl_certificate /etc/letsencrypt/live/open.shoes/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/open.shoes/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.deals/search?q=shoes;
+}
+
+# openvibe.today → the network's front door (what's on now)
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.today www.openvibe.today;
+ return 302 https://openvibe.network/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.today www.openvibe.today;
+ ssl_certificate /etc/letsencrypt/live/openvibe.today/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.today/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.network/;
+}
+
+# openvibe.vision → AI, whose models read pictures
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.vision www.openvibe.vision;
+ return 302 https://ai.openvibe.services/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.vision www.openvibe.vision;
+ ssl_certificate /etc/letsencrypt/live/openvibe.vision/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.vision/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://ai.openvibe.services/;
+}
+
+# openvibe.domains → Host's domain price comparison
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.domains www.openvibe.domains;
+ return 302 https://openvibe.host/catalog/domains;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.domains www.openvibe.domains;
+ ssl_certificate /etc/letsencrypt/live/openvibe.domains/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.domains/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.host/catalog/domains;
+}
+
+# openvibe.report → the network's open stats
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.report www.openvibe.report;
+ return 302 https://openvibe.network/stats;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.report www.openvibe.report;
+ ssl_certificate /etc/letsencrypt/live/openvibe.report/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.report/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.network/stats;
+}
+
+# openvibe.meme → Live's clips, where the memes come from
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.meme www.openvibe.meme;
+ return 302 https://openvibe.live/clips;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.meme www.openvibe.meme;
+ ssl_certificate /etc/letsencrypt/live/openvibe.meme/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.meme/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.live/clips;
+}
+
+# openvibe.casino → Games
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.casino www.openvibe.casino;
+ return 302 https://openvibe.games/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.casino www.openvibe.casino;
+ ssl_certificate /etc/letsencrypt/live/openvibe.casino/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.casino/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.games/;
+}
+
+# openvibe.surf → Games
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.surf www.openvibe.surf;
+ return 302 https://openvibe.games/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.surf www.openvibe.surf;
+ ssl_certificate /etc/letsencrypt/live/openvibe.surf/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.surf/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.games/;
+}
+
+# openvibe.fun → Games
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.fun www.openvibe.fun;
+ return 302 https://openvibe.games/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.fun www.openvibe.fun;
+ ssl_certificate /etc/letsencrypt/live/openvibe.fun/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.fun/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.games/;
+}
+
+# openvibe.tours → Live, where IRL streams walk places
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.tours www.openvibe.tours;
+ return 302 https://openvibe.live/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.tours www.openvibe.tours;
+ ssl_certificate /etc/letsencrypt/live/openvibe.tours/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.tours/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.live/;
+}
+
+# openvibe.exchange → Services, the developer hub
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.exchange www.openvibe.exchange;
+ return 302 https://openvibe.services/;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.exchange www.openvibe.exchange;
+ ssl_certificate /etc/letsencrypt/live/openvibe.exchange/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.exchange/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.services/;
+}
+
+# openvibe.cam → going live with your camera on Live
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.cam www.openvibe.cam;
+ return 302 https://openvibe.live/broadcast;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.cam www.openvibe.cam;
+ ssl_certificate /etc/letsencrypt/live/openvibe.cam/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.cam/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.live/broadcast;
+}
+
+# openvibe.design → the network's themes
+server {
+ listen 80;
+ listen [::]:80;
+ server_name openvibe.design www.openvibe.design;
+ return 302 https://openvibe.network/themes;
+}
+
+server {
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ http2 on;
+ server_name openvibe.design www.openvibe.design;
+ ssl_certificate /etc/letsencrypt/live/openvibe.design/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/openvibe.design/privkey.pem;
+ add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ access_log off;
+ return 302 https://openvibe.network/themes;
+}
@@ -465,7 +465,7 @@ function ripple(btn, e) {
@@ -465,7 +465,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'];
+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'];
const OV_USER_CONTENT_ZONES = ['openvibe.host']; // tenant sites: only the apex is ours
const OV_USER_CONTENT_ZONES = ['openvibe.host']; // 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);
@@ -66,7 +66,7 @@ li.now .dot i{animation:spin 1s linear infinite}
@@ -66,7 +66,7 @@ li.now .dot i{animation:spin 1s linear 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'];
+ 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'];
const OV_USER_CONTENT_ZONES = ['openvibe.host']; // tenant sites: only the apex is ours
const OV_USER_CONTENT_ZONES = ['openvibe.host']; // 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);
@@ -6,6 +6,7 @@ const OWNED_ZONES = [
@@ -6,6 +6,7 @@ const OWNED_ZONES = [
'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews',
'openvibe.chat', 'openvibe.codes', 'openvibe.blog', 'openvibe.wiki', 'openvibe.news', 'openvibe.reviews',
'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons',
'openvibe.tips', 'openvibe.vip', 'openvibe.trade', 'openvibe.host', 'openvibe.deals', 'openvibe.coupons',
'openre.stream',
'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',
];
];
// 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