Aller au contenu

Exploitation · Tutoriel

Auto-hébergement

Construisez et exécutez Krakstack Auth avec PostgreSQL en tenant compte de la configuration de compilation et des dépendances actuelles.

Krakstack Auth est une application Bun avec PostgreSQL. Le déploiement actuel n'est pas encore un conteneur générique à configurer après téléchargement : les valeurs publiques Vite et l'ID de l'organisation d'administration sont intégrés aux ressources navigateur.

État de l'image publiée

Le paquet GitHub Container Registry sert au déploiement officiel. Sa compilation reçoit les URL et l'ID d'organisation de l'instance officielle. Les variables VITE_* à l'exécution ne remplacent pas les valeurs déjà intégrées par Vite.

N'utilisez pas ghcr.io/krakcons/krakstack-auth:latest comme service configuré pour une autre origine avant la disponibilité d'une image générique ou d'une configuration publique dynamique. Construisez une image propre au déploiement depuis une révision vérifiée.

Prérequis de compilation

La route admin actuelle exige VITE_KRAKSTACK_AUTH_ORGANIZATION_ID. L'établissement de cette organisation dans une nouvelle base dépend actuellement du déploiement; aucun amorçage automatique du premier administrateur n'est fourni. Résolvez cette étape avant d'exposer le service.

Construisez avec l'origine publique et l'organisation d'administration du déploiement :

shell
docker build \
  --build-arg VITE_SITE_URL=https://auth.example.com \
  --build-arg VITE_KRAKSTACK_AUTH_URL=https://auth.example.com \
  --build-arg VITE_KRAKSTACK_AUTH_ORGANIZATION_ID=organization_id \
  -t krakstack-auth:local .

Docker Compose

L'application écoute sur le port 3000. Sa commande de démarrage applique les migrations Effect SQL avant de lancer le serveur.

yaml
services:
  auth:
    image: krakstack-auth:local
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://krakstack:${POSTGRES_PASSWORD}@postgres:5432/krakstack_auth
      BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET}
      BETTER_AUTH_URL: https://auth.example.com
      BETTER_AUTH_TRUSTED_ORIGINS: https://auth.example.com,https://app.example.com
      S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
      S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
      S3_BUCKET: ${S3_BUCKET}
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:17
    restart: unless-stopped
    environment:
      POSTGRES_DB: krakstack_auth
      POSTGRES_USER: krakstack
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U krakstack -d krakstack_auth"]
      interval: 5s
      timeout: 5s
      retries: 10

volumes:
  postgres-data:

Générez BETTER_AUTH_SECRET avec openssl rand -base64 32 et gardez les secrets hors du dépôt. La couche API actuelle exige la configuration S3. Les flux courriel de production exigent SES lorsqu'ils s'exécutent. Consultez la configuration.

Démarrer et valider

shell
docker compose up -d
docker compose logs -f auth

Validez davantage que /api/auth/ok : testez une session utilisant la base, un flux courriel activé, une ressource, un rappel OAuth et l'administration. Le point ok vérifie uniquement la disponibilité.

Liste de production

  • Forcez HTTPS.
  • Sauvegardez PostgreSQL et testez la restauration.
  • Gardez l'origine auth publique stable.
  • Limitez l'organisation d'administration et renouvelez les clés de service.
  • Configurez la délivrabilité SES et la durabilité S3.
  • Surveillez la base et les dépendances séparément de la disponibilité.
  • Révisez les origines et URI OAuth après les changements.
  • Suivez la procédure de mise à jour et récupération; une ancienne image peut être incompatible avec une base migrée.