Skip to content

📝(doc) create complete documentation website for Meet#1436

Open
unteem wants to merge 1 commit into
suitenumerique:mainfrom
unteem:feat/documentation
Open

📝(doc) create complete documentation website for Meet#1436
unteem wants to merge 1 commit into
suitenumerique:mainfrom
unteem:feat/documentation

Conversation

@unteem

@unteem unteem commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Build a structured documentation website that centralizes guidance for users, administrators, and contributors.
This documentation replaces the previous documentation structure

Highlights include:

  • Product overview and feature documentation
  • Self-hosting guides (Docker Compose and Kubernetes) Configuration and integration references
  • API, security, and troubleshooting documentation
  • Development workflows and contribution guides
  • FAQ and operational best practices
  • Remove of outdated and duplicate documentation sources

Documentation is rendered on this temp URL: https://documentation-meet.beta.numerique.gouv.fr/self-hosting/compose/quick-start/

In order to test the guides you will need replace var RAW to point to my branch:

RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"
to 
RAW="https://raw.githubusercontent.com/unteem/meet/feat/documentation"

Build a structured documentation website that centralizes guidance for
users, administrators, and contributors.
This documentation replaces the previous documentation structure

Highlights include:

Product overview and feature documentation
Self-hosting guides (Docker Compose and Kubernetes)
Configuration and integration references
API, security, and troubleshooting documentation
Development workflows and contribution guides
FAQ and operational best practices
Remove of outdated and duplicate documentation sources
@sonarqubecloud

Copy link
Copy Markdown

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This asset seems to have a broken layout in the chat

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the layout in the participant side panel seems different than the default one.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment about the participant side panel

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if configured, the "my backgrounds" one can be persisted accross session

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this banner is used in the readme

Comment on lines +22 to +31
docker compose up -d app-dev

# Django shell
docker compose exec app-dev python manage.py shell

# Apply migrations
docker compose exec app-dev python manage.py migrate

# Create superuser
docker compose exec app-dev python manage.py createsuperuser

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess, overall, across La Suite, we prefer to encourage developers to use make commands. That's a team practice, though, and it could be challenged.

Suggested change
docker compose up -d app-dev
# Django shell
docker compose exec app-dev python manage.py shell
# Apply migrations
docker compose exec app-dev python manage.py migrate
# Create superuser
docker compose exec app-dev python manage.py createsuperuser
make run-backend
# Django shell
docker compose exec app-dev python manage.py shell (we might add a command for this one if missing)
# Apply migrations
make migrate
# Create superuser
make superuser

Comment on lines +38 to +40
- `Development` - debug mode, relaxed security
- `Demo` - production-like with demo data
- `Production` - full production settings

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we also have a test one

Comment on lines +68 to +69
docker compose exec app-dev python manage.py makemigrations
docker compose exec app-dev python manage.py migrate

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same we do offer make commands

Comment on lines +47 to +65
# core/models.py

class Room(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
slug = models.SlugField(unique=True)
name = models.CharField(max_length=255)
access_level = models.CharField(...) # public, authenticated, restricted
configuration = models.JSONField(default=dict)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)

class Recording(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
room = models.ForeignKey(Room, on_delete=models.CASCADE)
status = models.CharField(...) # initiated, active, stopped, saved
mode = models.CharField(...) # screen_recording, transcript
key = models.CharField(...) # S3 object key (path in bucket)
```

After model changes, create and apply migrations:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't it be difficult to keep this duplicated code up to date? I'm concerned the documentation may drift over time, as developers are unlikely to remember to keep both in sync.

| Framework | React 18 |
| Language | TypeScript |
| Build tool | Vite |
| WebRTC | `@livekit/components-react` |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

livekit-client is the dependency encapsulating the webrtc logic. https://docs.livekit.io/reference/client-sdk-js/

| Language | TypeScript |
| Build tool | Vite |
| WebRTC | `@livekit/components-react` |
| Accessible UI | React Aria (Adobe) |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React aria are only Headless UI Components !

| Accessible UI | React Aria (Adobe) |
| State management | Zustand |
| i18n | i18next |
| Testing | Vitest + React Testing Library |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we don't have any test (yet)

npm run dev
```

Dev server runs at http://localhost:5173 with hot module replacement.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't it 3000 ?

Comment on lines +86 to +92
Meet uses React Aria for accessible component primitives. Rules:

- All interactive elements must have an accessible name (`aria-label` or visible text)
- State changes (mute/unmute, recording) must be announced via ARIA live regions
- Focus management: opening dialogs moves focus in; closing returns focus to the trigger
- Test every new interactive element with keyboard navigation

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Ovgodd could you review this section ?

@Ovgodd Ovgodd Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey I would be a bit more specific like :

Accessibility & React Aria

Meet builds on React Aria Components via styled primitives in src/frontend/src/primitives/. Prefer these over raw HTML or direct RAC imports.

Rules

  1. Accessible names : Every interactive element needs a name via aria-label, aria-labelledby, or visible text. Use i18n (t(...)) for all strings. Icon-only buttons must have aria-label; tooltips are supplementary, not a substitute.

  2. State announcements : Use useScreenReaderAnnounce() for programmatic screen reader feedback (e.g. recording state, effects). Use the toast system (@react-aria/toast) for room events. Do not add aria-live to visual-only UI : announce separately to avoid duplication.

  3. Focus management : RAC Dialog handles focus trap and return-to-trigger. Side panels and custom toolbars may need explicit focus (autoFocus, ref.focus(), or FocusScope from @react-aria/focus).

  4. Keyboard & screen reader testing : Test Tab navigation, arrow keys in menus/toolbars, and verify with a screen reader before merging.

  5. PiP / cross-document contexts : Use VisualOnlyTooltip instead of TooltipWrapper to prevent duplicate SR announcements.

Comment on lines +107 to +115
1. Add the key to `en.json` and `fr.json` (minimum)
2. Use in components:

```typescript
const { t } = useTranslation();
<span>{t('controls.mute')}</span>
```

Other languages are managed via Crowdin.

@lebaudantoine lebaudantoine Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're not using crowdin, it's installed but not in use, people need to add the key for all lang.

Comment on lines +120 to +126
make test-front

# Or directly
cd src/frontend
npm test
npm run test:coverage
```

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

doesn't exist


LiveKit integration has two sides:

1. **Backend (Python)**: Generates JWT tokens, calls LiveKit API for room management and Egress

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Egress, Agent, Sip etc.

LiveKit integration has two sides:

1. **Backend (Python)**: Generates JWT tokens, calls LiveKit API for room management and Egress
2. **Frontend (TypeScript)**: Connects to LiveKit for media using the LiveKit React SDK

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we connect using the JS SDK they provide, and the React components.

```toml
# pyproject.toml
[project.dependencies]
livekit-api = ">=0.7"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, what additional information does this provide? We usually pin dependencies, so I'm not sure this adds much.

Comment on lines +65 to +68
return Response({
"token": token,
"url": settings.LIVEKIT_CONFIGURATION["url"],
})

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, actually, I think this could be misleading. They are indeed returned to the client through the API (via a viewset, de facto), but the core logic still lives in the room serializer.

Overall, I'm in favor of documenting how the backend interacts with LiveKit, with pointers to the relevant code. However, I'm not a big fan of pseudo-code that doesn't accurately reflect how the backend actually works. Why not point directly to the implementation and complement it with a few sequence diagrams instead? I think that would be easier to maintain and less likely to become outdated.

Comment on lines +116 to +118
## Frontend integration

### Connection flow

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel we're documenting how the livekit js sdk works instead of the logic we wrote

docker compose exec app-dev python manage.py shell

# Create superuser
docker compose exec app-dev python manage.py createsuperuser

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make superuser

npm run dev
```

The frontend dev server runs at http://localhost:5173.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't it 3000?

## Before you start

- Read the [developer handbook](https://suitenumerique.gitbook.io/handbook) for team best practices
- Check the [roadmap](https://github.com/orgs/suitenumerique/projects/3/views/2) to avoid duplicating in-progress work

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this link is closed, we should remove it

# Pull Requests

## Before you start

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would add an initial step, "connect on matrix, present yourself"

1. Fork the repository
2. Create a branch: `git checkout -b feat/my-feature` or `fix/my-bug`
3. Make your changes with tests
4. Run `make test-back test-front` and `make lint-back lint-front`

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is no test-front

| `agents` | LiveKit agents |
| `summary` | Transcription/summary service |
| `docker` | Docker configuration |
| `deps` | Dependency updates |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we usually use the scope related to the dependency update

## PR checklist

- [ ] Tests added for new functionality or the bug fix
- [ ] All tests pass (`make test-back test-front`)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no test-front

Comment on lines +58 to +69
## Known security fixes (by version)

| Version | Component | Issue |
|---|---|---|
| v1.5.0 | Frontend | XSS on the recording download page |
| v1.6.0 | Backend | Object-level permission bypass on room endpoints |
| v1.6.0 | Backend | Application validation bypass for external JWTs |
| v1.13.0 | Backend | Email disclosure in room invitation endpoint |
| v1.14.0 | Backend | Participant metadata update permission enforcement |
| v1.14.0 | Multiple | CVEs: aiohttp, Vite, Django, Pillow |
| v1.15.0 | Backend | Room configuration validation |
| v1.16.0 | Frontend | Room IDs generated with non-cryptographic RNG (fixed) |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we list them? Why not rely on GitHub's security advisories feature?


### Object storage (MinIO/S3)

- Do not expose MinIO/S3 ports publicly

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we do expose the MinIO publicly for the recording download feature, isn't it?

@@ -0,0 +1,248 @@
# TURN Server

TURN (Traversal Using Relays around NAT) is a relay protocol that routes WebRTC media through a well-known port when direct UDP is blocked. Without TURN, participants on corporate networks, hotel Wi-Fi, or VPNs may connect to a meeting but have no audio or video.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
TURN (Traversal Using Relays around NAT) is a relay protocol that routes WebRTC media through a well-known port when direct UDP is blocked. Without TURN, participants on corporate networks, hotel Wi-Fi, or VPNs may connect to a meeting but have no audio or video.
TURN (Traversal Using Relays around NAT) is a relay protocol that routes WebRTC media through a well-known port when direct UDP is blocked. Without TURN, participants on corporate networks, hotel Wi-Fi, or VPNs may not connect to a meeting.

| Public instance, mixed networks | TURN recommended |
| Enterprise | TURN required - corporate firewalls routinely block non-standard UDP |

**How to tell if TURN is needed:** participants who connect (room appears joined, participants list shows them) but have no audio or video, and this resolves when they switch to a phone hotspot - that is a UDP-blocked network. TURN solves it.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LiveKit is not only about UDP. I think this part of the documentation is a bit oversimplified.

LiveKit offers a range of connection candidates, some over UDP and others over TCP, depending on what is available.

It might be related to how the LiveKit server is configured.

|---|---|
| Internal team, controlled network | TURN optional - direct media (7882/UDP) works |
| Public instance, mixed networks | TURN recommended |
| Enterprise | TURN required - corporate firewalls routinely block non-standard UDP |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

think we could be a bit more precise here.

Some corporate firewalls block all UDP traffic, forcing clients to fall back to TURN over TCP (or TLS).

TURN is also required when the client is behind a symmetric NAT, where STUN alone cannot establish a direct peer-to-peer connection. For less restrictive NAT types, STUN is usually sufficient. In fact, a STUN server is almost essential for WebRTC; LiveKit uses Google's public STUN server by default if you don't configure your own.

TURN over UDP may still be required depending on the client's NAT and firewall configuration. In general, LiveKit gathers multiple ICE candidates (host, STUN, TURN over UDP/TCP/TLS) and lets ICE negotiate the best available path.


---

## Option 1: Built-in TURN on 443/UDP (recommended)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One thing that could also be worth mentioning is that LiveKit's built-in TURN server doesn't support every TURN transport (e.g. TURN over UDP, TCP, and TLS). In some environments, especially those with restrictive corporate networks, it can be beneficial to deploy a dedicated TURN server such as coturn to provide the transports you need.

Comment thread docs/index.md
Comment on lines +75 to +78
| [visio.numerique.gouv.fr](https://visio.numerique.gouv.fr/) | DINUM | French central administration (ProConnect required) |
| [visio.suite.anct.gouv.fr](https://visio.suite.anct.gouv.fr/) | ANCT | French territorial administration (ProConnect required) |
| [visio.lasuite.coop](https://visio.lasuite.coop/) | lasuite.coop | Open demo, accounts reset monthly |
| [mosa.cloud](https://mosa.cloud/) | mosa.cloud | Dutch commercial instance |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we do have more now

@@ -0,0 +1,183 @@
# Theming

@lebaudantoine lebaudantoine Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since you moved the documentation, someone added details on how to modify the favicon


**Known limitations:**

- Participant identification is not implemented. Speakers are labeled generically (e.g., `SPEAKER_00`, `SPEAKER_01`)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually now we have a draft

Comment on lines +27 to +36
Backend->>Summary: POST /api/v1/tasks/ (bearer token)
Note right of Backend: Payload: owner_id, filename, email, sub, room, recording_date, recording_time

Summary->>Celery: Register task (transcribe-queue)
Celery->>MinIO: Fetch audio file
Celery->>STT: Transcribe audio (WhisperX)
STT-->>Celery: Segmented transcript
Celery->>Celery: Format transcript
Celery->>Docs: POST /create-for-owner (title, content, email, sub, api token)
Docs-->>Celery: Acknowledgement

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this doc is outdated with recent works from @FloChehab

@@ -0,0 +1,235 @@
# AI Transcription

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@FloChehab could you review this page?

| 7882 | UDP | WebRTC media - all audio and video streams multiplexed here |

!!!info
`7882/UDP` is the critical port. If it is blocked, participants connect to the room but have no audio or video and fall back to TCP (7881), which increases latency.

@lebaudantoine lebaudantoine Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hum, this not how ICE works, they won't connect to the room until they find a working pair.
They won't connect with no video/audio.

ICE will try every candidate until one works.

- LiveKit webhook configured to reach the Meet backend

!!!warning
An S3-compatible object storage with bucket event notifications is required. As an example we use MinIO but in production MinIO is not recommanded as the open source community version is not maintained anymore. This dependency is planned to be refactored in a future release see [PR #1386](https://github.com/suitenumerique/meet/pull/1386)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR was merged

@@ -0,0 +1,571 @@
# Recording

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cameledev we should update the documentation with your recent changes


### Meet frontend

The frontend container runs an internal nginx on port 8083 that routes traffic between the backend API and the React SPA. Traefik terminates TLS and forwards everything for `meet.example.com` to port 8083:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not in the "community" edition we build.
If I'm right, that's the k8s ingress that routes the traffic in our deployment, not the frontend image

@lebaudantoine lebaudantoine left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1st review, let's chat

@lebaudantoine

Copy link
Copy Markdown
Collaborator

It closes #937

make bootstrap FLUSH_ARGS='--no-input'
```

This builds the backend image, installs dependencies, runs migrations, creates a default user (`meet` / `meet`), and compiles translations.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This builds the backend image, installs dependencies, runs migrations, creates a default user (`meet` / `meet`), and compiles translations.
This builds the backend image, installs dependencies, runs migrations, creates a default user (`meet` / `meet`), compiles translations, adds demo data, and starts the stack.

## One-liner

```bash
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"
RAW="https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main"


```bash
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"
curl -fsSL $RAW/docs/docs/install.sh -o install.sh

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
curl -fsSL $RAW/docs/docs/install.sh -o install.sh
curl -fsSL $RAW/docs/install.sh -o install.sh

@camillem

Copy link
Copy Markdown
Contributor

In general, references to raw.githubusercontent.com miss a /refs/heads part. So we should have :

RAW="https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main"

and to test here :

RAW="https://raw.githubusercontent.com/unteem/meet/refs/heads/feat/documentation"

All three stacks share the same domain names. Download the hosts file once and edit it - each stack will copy it in later.

```bash
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"
RAW="https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main"

```bash
mkdir -p ~/docker/keycloak/env.d && cd ~/docker/keycloak

RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"
RAW="https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main"

Comment on lines +71 to +72
curl -fsSL -o compose.yml ${RAW}/docs/docs/examples/keycloak/compose.yml
curl -fsSL -o keycloak-realm.json ${RAW}/docs/docs/examples/keycloak/keycloak-realm.json

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
curl -fsSL -o compose.yml ${RAW}/docs/docs/examples/keycloak/compose.yml
curl -fsSL -o keycloak-realm.json ${RAW}/docs/docs/examples/keycloak/keycloak-realm.json
curl -fsSL -o compose.yml ${RAW}/docs/examples/keycloak/compose.yml
curl -fsSL -o keycloak-realm.json ${RAW}/docs/examples/keycloak/keycloak-realm.json

```bash
mkdir -p ~/docker/meet/env.d && cd ~/docker/meet

RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"
RAW="https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main"

Comment on lines +144 to +147
curl -fsSL -o compose.yml ${RAW}/docs/docs/examples/meet/compose.yml
curl -fsSL -o livekit-server.yaml ${RAW}/docs/docs/examples/meet/livekit-server.yaml
curl -fsSL -o nginx-routing.conf ${RAW}/docs/docs/examples/meet/nginx-routing.conf
curl -fsSL -o generate-secrets.sh ${RAW}/docs/docs/generate-secrets.sh

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
curl -fsSL -o compose.yml ${RAW}/docs/docs/examples/meet/compose.yml
curl -fsSL -o livekit-server.yaml ${RAW}/docs/docs/examples/meet/livekit-server.yaml
curl -fsSL -o nginx-routing.conf ${RAW}/docs/docs/examples/meet/nginx-routing.conf
curl -fsSL -o generate-secrets.sh ${RAW}/docs/docs/generate-secrets.sh
curl -fsSL -o compose.yml ${RAW}/docs/examples/meet/compose.yml
curl -fsSL -o livekit-server.yaml ${RAW}/docs/examples/meet/livekit-server.yaml
curl -fsSL -o nginx-routing.conf ${RAW}/docs/examples/meet/nginx-routing.conf
curl -fsSL -o generate-secrets.sh ${RAW}/docs/generate-secrets.sh

```bash
mkdir -p ~/docker/nginx-proxy && cd ~/docker/nginx-proxy

RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RAW="https://raw.githubusercontent.com/suitenumerique/meet/main"
RAW="https://raw.githubusercontent.com/suitenumerique/meet/refs/heads/main"

Comment on lines +64 to +65
curl -fsSL -o compose.yml ${RAW}/docs/docs/examples/nginx-proxy/compose.yml
curl -fsSL -o .env ${RAW}/docs/docs/examples/nginx-proxy/.env.example

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
curl -fsSL -o compose.yml ${RAW}/docs/docs/examples/nginx-proxy/compose.yml
curl -fsSL -o .env ${RAW}/docs/docs/examples/nginx-proxy/.env.example
curl -fsSL -o compose.yml ${RAW}/docs/examples/nginx-proxy/compose.yml
curl -fsSL -o .env ${RAW}/docs/examples/nginx-proxy/.env.example

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants