From fc92fa4eb4d2d87a498220be04363986545a242c Mon Sep 17 00:00:00 2001 From: Bastien Ogier Date: Mon, 9 Feb 2026 23:48:55 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80(docs)=20document=20Scalingo=20depl?= =?UTF-8?q?oyment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (docs) document Scalingo deployment --- docs/installation/README.md | 4 + docs/installation/scalingo.md | 185 ++++++++++++++++++++++++++++++++++ 2 files changed, 189 insertions(+) create mode 100644 docs/installation/scalingo.md diff --git a/docs/installation/README.md b/docs/installation/README.md index efbe4c7f..cf75a02d 100644 --- a/docs/installation/README.md +++ b/docs/installation/README.md @@ -9,6 +9,10 @@ La Suite Meet maintainers use only the Kubernetes deployment method in productio We understand that not everyone has a Kubernetes cluster available, please follow the instructions provided [here](/docs/installation/compose.md) to set up a docker compose instance. We also provide [Docker images](https://hub.docker.com/u/lasuite?page=1&search=meet) that can be deployed using Compose. +## Scalingo + +La Suite Meet can be deployed on Scalingo PaaS using the Suite Numérique buildpack. See the [Scalingo deployment guide](./scalingo.md) for detailed instructions. + ## Other ways to install La Suite Meet Community members have contributed alternative ways to install La Suite Meet 🙏. While maintainers may not provide direct support, we help keep these instructions up to date, and you can reach out to contributors or the community for assistance. diff --git a/docs/installation/scalingo.md b/docs/installation/scalingo.md new file mode 100644 index 00000000..40d1ebf8 --- /dev/null +++ b/docs/installation/scalingo.md @@ -0,0 +1,185 @@ +# Deployment on Scalingo + +This guide explains how to deploy La Suite Meet on [Scalingo](https://scalingo.com/) using the [Suite Numérique buildpack](https://github.com/suitenumerique/buildpack). + +## Overview + +Scalingo is a Platform-as-a-Service (PaaS) that simplifies application deployment. This setup uses a custom buildpack to handle both the frontend (Vite) and backend (Django) builds, serving them through Nginx. + +## Prerequisites + +- A Scalingo account +- Scalingo CLI installed (optional but recommended) +- A PostgreSQL database addon +- A Redis addon (for caching and sessions) + +## Step 1: Create Your App + +Create a new app on Scalingo using `scalingo` cli or using the [Scalingo dashboard](https://dashboard.scalingo.com/). + +## Step 2: Provision Addons + +Add the required PostgreSQL and Redis services. + +This will set the following environment variables automatically: +- `SCALINGO_POSTGRESQL_URL` - Database connection string +- `SCALINGO_REDIS_URL` - Redis connection string + +## Step 3: Configure Environment Variables + +Set the following environment variables in your Scalingo app: + +### Buildpack Configuration + +```bash +scalingo env-set BUILDBACK_URL="https://github.com/suitenumerique/buildpack#main" +scalingo env-set LASUITE_APP_NAME="meet" +scalingo env-set LASUITE_BACKEND_DIR="." +scalingo env-set LASUITE_FRONTEND_DIR="src/frontend/" +scalingo env-set LASUITE_NGINX_DIR="." +scalingo env-set LASUITE_SCRIPT_POSTCOMPILE="bin/buildpack_postcompile.sh" +scalingo env-set LASUITE_SCRIPT_POSTFRONTEND="bin/buildpack_postfrontend.sh" +``` + +### Database and Cache + +```bash +scalingo env-set DATABASE_URL="\$SCALINGO_POSTGRESQL_URL" +scalingo env-set REDIS_URL="\$SCALINGO_REDIS_URL" +``` + +### Django Settings + +```bash +scalingo env-set DJANGO_SETTINGS_MODULE="meet.settings" +scalingo env-set DJANGO_CONFIGURATION="Production" +scalingo env-set DJANGO_SECRET_KEY="" +scalingo env-set DJANGO_ALLOWED_HOSTS="my-meet-app.osc-fr1.scalingo.io" +``` + +### OIDC Authentication + +Configure your OIDC provider (e.g., Keycloak, Authentik): + +```bash +scalingo env-set OIDC_OP_BASE_URL="https://auth.yourdomain.com/realms/meet" +scalingo env-set OIDC_RP_CLIENT_ID="meet-client-id" +scalingo env-set OIDC_RP_CLIENT_SECRET="" +scalingo env-set OIDC_RP_SIGN_ALGO="RS256" +``` + +### LiveKit Configuration + +Meet requires a LiveKit server for video conferencing: + +```bash +scalingo env-set LIVEKIT_API_URL="wss://livekit.yourdomain.com" +scalingo env-set LIVEKIT_API_KEY="" +scalingo env-set LIVEKIT_API_SECRET="" +``` + +### Email Configuration (Optional) + +For email notifications see https://doc.scalingo.com/platform/app/sending-emails: + +```bash +scalingo env-set DJANGO_EMAIL_HOST="smtp.example.org" +scalingo env-set DJANGO_EMAIL_PORT="587" +scalingo env-set DJANGO_EMAIL_HOST_USER="" +scalingo env-set DJANGO_EMAIL_HOST_PASSWORD="" +scalingo env-set DJANGO_EMAIL_USE_TLS="True" +scalingo env-set DJANGO_EMAIL_FROM="meet@yourdomain.com" +``` + +## Step 4: Deploy + +Deploy your application: + +```bash +git push scalingo main +``` + +The Procfile will automatically: +1. Build the frontend (Vite) +2. Build the backend (Django) +3. Run the post-compile script (cleanup) +4. Run the post-frontend script (move assets and prepare for deployment) +5. Start Nginx and Gunicorn +6. Run django migrations + +## Step 5: Create superuser + +After the first deployment, create an admin user: + +```bash +scalingo run python manage.py createsuperuser +``` + +## Custom Domain (Optional) + +To use a custom domain: + +1. Add the domain in Scalingo dashboard +2. Update `DJANGO_ALLOWED_HOSTS` with your custom domain +3. Configure your DNS to point to Scalingo + +```bash +scalingo domains-add meet.yourdomain.com +scalingo env-set DJANGO_ALLOWED_HOSTS="meet.yourdomain.com,my-meet-app.osc-fr1.scalingo.io" +``` + +## Custom Logo (Optional) + +To use a custom logo, set the `CUSTOM_LOGO_URL` environment variable with an HTTPS URL pointing to an SVG item (max 5MB): + +```bash +scalingo env-set CUSTOM_LOGO_URL="https://cdn.yourdomain.com/logo.svg" +``` + +## Troubleshooting + +### Check Logs + +```bash +scalingo logs --tail +``` + +### Common Issues + +1. **Build fails**: Check that all required environment variables are set +2. **Database connection error**: Verify `DATABASE_URL` is correctly set to `$SCALINGO_POSTGRESQL_URL` +3. **Static files not served**: Ensure the buildpack post-frontend script ran successfully +4. **OIDC errors**: Verify your OIDC provider configuration and callback URLs + +### Useful Commands + +```bash +# Open a console +scalingo run bash + +# Restart the app +scalingo restart + +# Scale containers +scalingo scale web:2 + +# One-off command +scalingo run python manage.py shell +``` + +## Architecture + +On Scalingo, the application runs as follows: + +1. **Build Phase**: The buildpack compiles both frontend and backend +2. **Runtime**: + - Nginx serves static files and proxies to the backend + - Gunicorn runs the Django WSGI application + - Both processes are managed by the `bin/buildpack_start.sh` script + +## Additional Resources + +- [Scalingo Documentation](https://doc.scalingo.com/) +- [Suite Numérique Buildpack](https://github.com/suitenumerique/buildpack) +- [Meet Environment Variables](../../src/helm/meet/README.md) +- [Django Configurations Documentation](https://django-configurations.readthedocs.io/)