Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.production
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
PUBLIC_RELAY_URL="https://relay.quic.video"
# Generate with: cargo run --bin moq-token -- --key root.jwk sign --root "demo" --subscribe ""
PUBLIC_RELAY_TOKEN="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb290IjoiZGVtbyIsInB1YiI6bnVsbCwic3ViIjoiIiwiZXhwIjpudWxsLCJpYXQiOm51bGx9.w6NCqef736qNYCC1KAovUbTaJb8bvHnY-QwXZ_p3vTw"
PUBLIC_RELAY_TOKEN="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb290IjoiZGVtbyIsImdldCI6WyIiXSwiZXhwIjpudWxsLCJpYXQiOm51bGx9.6EoN-Y1Ouj35_qV5FokcdcdderrE2navNbYQjJyR2Ac"
54 changes: 0 additions & 54 deletions .github/workflows/main.yml

This file was deleted.

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@ bun.lockb
.env.production
*.jwt
*.jwk

# Cloudflare
.wrangler/
.dev.vars
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Project Overview

quic.video is a web blog and demo for Media over QUIC (MoQ) protocol. It's built with Astro, Solid.js, and uses WebTransport to connect to MoQ relay servers for live streaming.
moq.dev is a web blog and demo for Media over QUIC (MoQ) protocol. It's built with Astro, Solid.js, and uses WebTransport to connect to MoQ relay servers for live streaming.

## Essential Commands

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<p align="center">
<img height="128px" src="https://github.com/kixelated/quic.video/blob/main/public/home/logo.svg" alt="Media over QUIC">
<img height="128px" src="https://github.com/kixelated/moq.dev/blob/main/public/home/logo.svg" alt="Media over QUIC">
</p>

This repository contains the code for [quic.video](https://quic.video).
This repository contains the code for [moq.dev](https://moq.dev).

This is a client only.
You'll either need to run a local server using [moq-rs](https://github.com/kixelated/moq-rs) or use a public server such as [relay.quic.video](https://quic.video/relay).
You'll either need to run a local server using [moq-rs](https://github.com/kixelated/moq-rs) or use a public server such as [relay.moq.dev](https://moq.dev/relay).

Join the [Discord](https://discord.gg/FCYF3p99mr) for updates and discussion.

Expand Down
8 changes: 2 additions & 6 deletions astro.config.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import fs from "node:fs";
import path from "node:path";
import mdx from "@astrojs/mdx";
import nodejs from "@astrojs/node";
import solidJs from "@astrojs/solid-js";
import tailwind from "@astrojs/tailwind";
import { defineConfig } from "astro/config";

// https://astro.build/config
export default defineConfig({
site: "https://quic.video",
site: "https://moq.dev",
output: "static",
integrations: [
mdx(),
solidJs(),
Expand All @@ -17,10 +17,6 @@ export default defineConfig({
applyBaseStyles: false,
}),
],
// Renders any non-static pages using node
adapter: nodejs({
mode: "standalone",
}),
vite: {
build: {
target: "esnext",
Expand Down
23 changes: 2 additions & 21 deletions infra/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 5 additions & 19 deletions infra/domain.tf
Original file line number Diff line number Diff line change
@@ -1,21 +1,7 @@
// Set up a DNS zone for our domain.
resource "google_dns_managed_zone" "public" {
name = "public"
dns_name = "${var.domain}."
}

// Create a managed certificate for the domain.
resource "google_compute_managed_ssl_certificate" "root" {
name = "root"
description = "Cert for ${var.domain}."

managed {
domains = ["${var.domain}."]
}

lifecycle {
create_before_destroy = true
}
resource "google_dns_managed_zone" "relay" {
name = "relay"
dns_name = "relay.${var.domain}."
}

// We also need an unmanaged certificate for the relay, since there's no QUIC LBs available yet.
Expand All @@ -39,13 +25,13 @@ resource "acme_certificate" "relay" {
subject_alternative_names = ["*.relay.${var.domain}"]
key_type = tls_private_key.relay.ecdsa_curve

recursive_nameservers = ["8.8.8.8:53"]
revoke_certificate_on_destroy = false

dns_challenge {
provider = "gcloud"

config = {
GCE_PROJECT = var.project
GCE_ZONE_ID = google_dns_managed_zone.relay.name
}
}
}
18 changes: 14 additions & 4 deletions infra/input.tf
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,32 @@ variable "zone" {

variable "email" {
description = "Your email address, used for LetsEncrypt"
default = "kixelated@gmail.com"
default = "admin@moq.dev"
}

variable "domain" {
description = "domain name"
default = "quic.video"
default = "moq.dev"
}

variable "docker_relay" {
description = "Docker image for moq-relay"
default = "docker.io/kixelated/moq-relay:0.8.7"
default = "docker.io/kixelated/moq-relay:0.8.8"
}

variable "docker_hang" {
description = "Docker image for hang"
default = "docker.io/kixelated/hang:0.2.4"
default = "docker.io/kixelated/hang:0.2.5"
}

variable "cloudflare_dns_token" {
description = "Cloudflare DNS API token - edit permissions for moq.dev"
sensitive = true
}

variable "cloudflare_zone_token" {
description = "Cloudflare Zone API token - read permissions for all zones"
sensitive = true
}

# Too complicated to specify via flags, so do it here.
Expand Down
5 changes: 0 additions & 5 deletions infra/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,7 @@ variable "gcp_service_list" {
"storage.googleapis.com",
"compute.googleapis.com",
"dns.googleapis.com",
"appengine.googleapis.com",
"iamcredentials.googleapis.com",
"sourcerepo.googleapis.com",
"run.googleapis.com",
"vpcaccess.googleapis.com",
"redis.googleapis.com",
]
}

Expand Down
4 changes: 4 additions & 0 deletions infra/output.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
output "relay_nameservers" {
value = google_dns_managed_zone.relay.name_servers
description = "Add these as NS records in Cloudflare for relay.moq.dev"
}
2 changes: 1 addition & 1 deletion infra/pub.yml.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ write_files:
--cap-add=SYS_PTRACE \
-e RUST_LOG=debug -e RUST_BACKTRACE=1 \
${docker_image} \
publish --url https://relay.quic.video/demo?jwt=${demo_token} --name bbb'
publish --url https://relay.moq.dev/demo?jwt=${demo_token} --name bbb'

ExecStop=docker stop hang-bbb

Expand Down
8 changes: 4 additions & 4 deletions infra/relay-lb.tf
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Global Geo DNS, routing to the closest region.
resource "google_dns_record_set" "relay_global" {
name = "relay.${var.domain}."
name = google_dns_managed_zone.relay.dns_name
managed_zone = google_dns_managed_zone.relay.name
type = "A"
ttl = 60
managed_zone = google_dns_managed_zone.public.name

routing_policy {
dynamic "geo" {
Expand All @@ -26,10 +26,10 @@ resource "google_dns_record_set" "relay_global" {
/*
# Get a domain name for the anycast address.
resource "google_dns_record_set" "relay_lb" {
name = "relay.quic.video."
name = "relay.moq.dev."
type = "A"
ttl = 300
managed_zone = google_dns_managed_zone.public.name
managed_zone = google_dns_managed_zone.relay.name
rrdatas = [google_compute_global_forwarding_rule.relay_lb.ip_address]
}

Expand Down
4 changes: 2 additions & 2 deletions infra/relay.tf
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,10 @@ resource "google_compute_address" "relay" {
resource "google_dns_record_set" "relay" {
for_each = local.relays

name = "${each.key}.relay.${var.domain}."
name = "${each.key}.${google_dns_managed_zone.relay.dns_name}"
managed_zone = google_dns_managed_zone.relay.name
type = "A"
ttl = 300
managed_zone = google_dns_managed_zone.public.name
rrdatas = [google_compute_address.relay[each.key].address]
}

Expand Down
90 changes: 0 additions & 90 deletions infra/web.tf

This file was deleted.

Loading