Bunker

French sovereign cloud from France Nuage: managed open-source apps, PostgreSQL and S3-compatible storage in its own datacenters. Source is public but under SSPL-1.0, which is not OSI-approved. ISO 27001 is targeted, not held, and card-only payment means no anonymous signup.

No Security Audit Not Open Source

Bunker Source Code

Author

France-Nuage

Description

Monorepo de France-Nuage (Control-plane, agents, clients) 🇫🇷

#iaas#iaas-cloud#onp#onpremise#paas#paas-framework#private-ia

Homepage

https://france-nuage.fr/

Repository

  • LicenseOther
  • Created25 Nov 24
  • Primary languageRust
  • Size40,744 KB
  • Stars55
  • ForksNone
  • Watchers55

Language Usage

Language Usage

Project Health

  • Last commit8 days ago
  • Open issuesNone
  • Latest releasev1.68.1

Recent Commits

  • semantic-release-bot(26 Aug 26)

    chore(release): 1.68.1 [skip ci] ## [1.68.1](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.68.0...v1.68.1) (2026-08-26) ### Performance Improvements * **ci:** cache les dépendances de test pour accélérer les unit-tests ([09c6a02](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/09c6a02479270b8e46e0354cca79b21b65997142))

  • Robin(26 Aug 26)

    perf(ci): cache les dépendances de test pour accélérer les unit-tests Le job `unit tests / controlplane` a été mesuré à ~26 min : ~17 min de compilation + ~9 min d'exécution. La compilation repart d'un pod vide et reconstruit toutes les dépendances tierces (~12 min) plus le workspace (~5 min) à chaque pipeline, sans aucun cache — alors que les jobs de build d'images réutilisent déjà le buildcache registry via cargo-chef. Ajoute une image `test-deps` qui porte les dépendances déjà compilées en profil test (`cargo chef cook --tests`, mise en cache cross-branche via le buildcache registry, comme le build release). Le job `unit tests` part de cette image et ne compile plus que les crates du workspace avant d'exécuter les tests, sur le runner (20Gi, parallélisme complet). Les macros `query!` sont validées hors-ligne (SQLX_OFFLINE + cache .sqlx committé) ; les 175 `#[sqlx::test]` s'exécutent toujours contre un Postgres réel. Compiler toute la suite de tests dans BuildKit a été écarté : le pod builder (8Gi) tombe en OOM, et bridé il dépasse le timeout d'1h. Compiler le workspace sur le runner évite les deux. Mesuré sur cette MR : unit tests 1587s -> 645s (-59%), pour un job `build / test-image` de 68s.

  • semantic-release-bot(22 Aug 26)

    chore(release): 1.68.0 [skip ci] # [1.68.0](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.67.3...v1.68.0) (2026-08-22) ### Features * **billing:** catalogue Stripe source de vérité + déploiement self-service ([6bc8613](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/6bc8613e3afcdf15582a105009bc4d6f69d88363)), closes [#8033](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/issues/8033)

  • Robin(22 Aug 26)

    feat(billing): catalogue Stripe source de vérité + déploiement self-service Fait de controlplane/catalog/catalog.yaml la source de vérité du catalogue Stripe (produits/prix), réconcilié au démarrage du control-plane (bloquant, no-op sans clé Stripe) et via la CLI `catalog validate|sync|prune`. Remplace le seed SQL bancal. - Réconciliateur Stripe (ensure_product/price, archivage des prix immuables, tag managed_by, sync_catalog + prune_catalog). - Découverte des versions déployables depuis le registry OCI des charts (client reqwest, auth Bearer, pull+dézip, lecture Chart.yaml + schémas frn/), filtre semver, en tâche de fond + concurrence bornée, best-effort. - E2E paiement Vaultwarden : plan payant → Stripe Checkout (carte 4242) → webhook → abonnement actif → instance en provisioning. - Helm/CI éphémères : sidecar stripe listen, secrets Stripe + registry injectés, env de test keyé par branche et recréé à neuf à chaque run, bootstrap admin. Mentions issue #8033

  • semantic-release-bot(21 Aug 26)

    chore(release): 1.67.3 [skip ci] ## [1.67.3](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.67.2...v1.67.3) (2026-08-21) ### Bug Fixes * **auth:** résout le sujet OIDC via UserInfo quand l'access token n'a pas de sub ([bea4355](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/bea4355973aeb1ad752a04ae54c394c9ae7053c7))

  • Robin Straub(21 Aug 26)

    fix(auth): résout le sujet OIDC via UserInfo quand l'access token n'a pas de sub Le control-plane pinne l'identité sur le `sub` (sujet immuable) et l'extrayait des claims de l'access token présenté en Bearer. Or OIDC ne normalise PAS le format de l'access token : le `sub` n'y est pas garanti. Keycloak en met un, FerrisKey non — d'où des appels authentifiés rejetés en `missing sub claim` alors que le jeton est parfaitement valide. On adopte la voie idiomatique OIDC : quand l'access token ne porte pas de `sub` exploitable, on le résout depuis le UserInfo endpoint du fournisseur (OpenID Connect Core 1.0, §5.3) — l'usage même de l'access token, qui identifie toujours le sujet. Portable avec tout fournisseur conforme, sans hypothèse propre à un IdP. Le flux BFF (cookie scellé au login) est inchangé : il tient déjà son `sub` de l'id_token. - `OpenIDProviderConfiguration` expose `userinfo_endpoint` (optionnel). - `OpenID::userinfo_subject` interroge le endpoint et renvoie le `sub` ; échoue closed (`UserInfoSubjectUnresolved`) si absent/injoignable/vide. - `iam::user` bascule sur UserInfo uniquement quand le token n'a pas de sub. Tests : `userinfo_subject` (résolution + fail-closed sans endpoint) au niveau auth ; au niveau server, un Bearer à email vérifié mais sans `sub` s'authentifie désormais via UserInfo (mock `WithUserInfo`) au lieu d'être rejeté.

  • semantic-release-bot(16 Aug 26)

    chore(release): 1.67.2 [skip ci] ## [1.67.2](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.67.1...v1.67.2) (2026-08-16) ### Bug Fixes * **console:** durcir le lien d'auth BFF côté frontend ([9e7960f](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/9e7960f0d62ae599d6c23900e3d41ec03c9e375f))

  • fgbot(16 Aug 26)

    fix(console): durcir le lien d'auth BFF côté frontend Ferme les trous de robustesse du non-happy-path du flux confidentiel : - OrganizationGuard ne spinne plus à l'infini si le fetch de la liste des orgs échoue : resources.slice gère .pending/.rejected et expose organizationsError, le guard affiche une erreur + bouton Réessayer. - fetchMe distingue un 5xx serveur (BffAuthServerError) d'un état déconnecté : un /auth/me en 500 (corps text/plain) n'est plus interprété comme « non authentifié » → plus de boucle login↔callback↔500. user-provider rend un état d'erreur avec retry au lieu de monter le Router sur sessionError. - user-provider affiche un Spinner (plus null) pendant la résolution de session. Tests : admin-guard (rendu admin vs « Accès refusé »), resources orgs loading/error/retry, fetchSession 5xx vs non-auth, fetchMe 200 vs 5xx. Ajoute une config vitest (jsdom + injection de __RUNTIME_CONFIG__) : la suite console tournait déjà rouge en env node et n'avait aucun job CI. Purge oidc-client-ts des lockfiles (mort depuis le passage au BFF).

  • semantic-release-bot(13 Aug 26)

    chore(release): 1.67.1 [skip ci] ## [1.67.1](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.67.0...v1.67.1) (2026-08-13) ### Bug Fixes * **plateforme:** OIDC_URL doit être l'URL de découverte complète (.well-known) ([d92510c](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/d92510cfc16920d215e081e54745126406a4cccc))

  • François-Guillaume Ribreau(13 Aug 26)

    fix(plateforme): OIDC_URL doit être l'URL de découverte complète (.well-known) Le control-plane (BFF, Bff::discover) et le synchronizer fetchent OIDC_URL verbatim au boot et exigent un champ `issuer`. La valeur pointait sur la racine de realm (https://auth.france-nuage.fr/realms/france-nuage) qui renvoie un JSON sans `issuer` (622 octets) → panic "missing field issuer" → crashloop des deux Deployments et échec du deploy prod. On fixe l'URL de découverte complète (.../.well-known/openid-configuration), cohérente avec le helper CI existant.

  • semantic-release-bot(13 Aug 26)

    chore(release): 1.67.0 [skip ci] # [1.67.0](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.66.0...v1.67.0) (2026-08-13) ### Features * **auth:** bascule la console sur le BFF confidentiel FerrisKey + retire le Keycloak in-cluster ([bc1ee50](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/bc1ee50c9af761a1c3afc68dca159d09612eaaa0))

  • fgbot(13 Aug 26)

    feat(auth): bascule la console sur le BFF confidentiel FerrisKey + retire le Keycloak in-cluster

  • semantic-release-bot(08 Aug 26)

    chore(release): 1.66.0 [skip ci] # [1.66.0](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.65.3...v1.66.0) (2026-08-08) ### Features * **helm:** ajoute les ingress console/controlplane/keycloak et dérive les URLs du baseDomain ([b8db09e](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/b8db09e9a7564ae4bdb0cbf6a7681127339d5229))

  • Robin(07 Aug 26)

    ci(buildkit): monte le builder de 2 à 8 CPU pour accélérer le build rust Le job 'build / rust-services' prend ~22 min car le pod buildkit est limité à 2 CPU, sérialisant la compilation release du workspace (37 crates). Mesure locale (à froid, release): 76s sur 14 cœurs vs 5m08 avec --jobs 2, soit un facteur ~4x lié au parallélisme CPU. Le workspace compile bien; le goulot est le sous-dimensionnement du builder. - limits.cpu: 2 -> 8 (aligné sur les tenants big/netir) - requests.cpu: 100m -> 2 (réservation réelle, évite le throttling) Aucun LimitRange/ResourceQuota sur le namespace runner; nœuds prod à 13-20 CPU allocatable -> 8 CPU tient largement.

  • Robin Straub(07 Aug 26)

    feat(helm): ajoute les ingress console/controlplane/keycloak et dérive les URLs du baseDomain Ajoute trois templates Ingress paramétrables (console, controlplane, keycloak) rendus dès qu'un ingress.baseDomain est fourni, selon la convention de nommage prod (controlplane./console./auth.<domain>). Les URLs (control plane, console, OIDC, keycloak) sont désormais dérivées d'une source unique via des helpers, au lieu d'être dupliquées dans plusieurs sous-sections de values. ingress.baseDomain devient obligatoire ; les clés d'URL redondantes sont supprimées. Configure KC_HOSTNAME de keycloak à partir du helper d'URL dédié.

  • semantic-release-bot(27 Jul 26)

    chore(release): 1.65.3 [skip ci] ## [1.65.3](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.65.2...v1.65.3) (2026-07-27) ### Bug Fixes * **plateforme:** colocalise les apps DB avec la zone du primary CNPG ([cd7f52c](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/cd7f52c8b8cf9e769b0c0aab7aa6722b3f90a3b2))

  • François-Guillaume Ribreau(26 Jul 26)

    fix(plateforme): colocalise les apps DB avec la zone du primary CNPG keycloak, spicedb, controlplane, operation-worker et synchronizer se connectent au cluster CNPG unique (-db) mais n'avaient aucune affinité → placés hors de la zone du primary (apps en dc02, primary en dc01), chaque requête d'auth/permission (session keycloak, check spicedb) payant un hop FTTH inter-DC. Helper plateforme.dbColocation (podAffinity soft weight 100 vers le pod role=primary du cluster <fullname>-db, topologyKey zone) câblé sur les 5 Deployments qui parlent à Postgres. Soft (preferred, jamais Pending), suit le primary. Console (sans DB) non touché.

  • semantic-release-bot(22 Jul 26)

    chore(release): 1.65.2 [skip ci] ## [1.65.2](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.65.1...v1.65.2) (2026-07-22) ### Bug Fixes * **cnpg-backup:** corrige les creds S3 + bucket de plateforme-prod-db ([65782c3](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/65782c3f73cf615084ecee65a83c455644304834))

  • FranceNuage(22 Jul 26)

    fix(cnpg-backup): corrige les creds S3 + bucket de plateforme-prod-db Le SealedSecret cnpg-backup-s3-credentials chiffrait une service-account du user MinIO `frn-cnpg-backup-managed-france-nuage-controlplane-prod` (un AUTRE cluster), alors que plateforme-prod-db écrit dans le bucket `frn-cnpg-backup-plateforme-prod-db`. La policy de ces creds n'autorisant pas ce bucket → `PutObject AccessDenied` sur l'archivage WAL → réplica db-1 en crashloop (ne peut plus archiver) → cluster dégradé 1/2 + aucun PITR possible (incident 2026-07-22, détecté par backup-monitor : last backup > 32h). - SealedSecret : re-scellé avec une service-account du bon user `frn-cnpg-backup-plateforme-prod-db` (propriétaire du bucket, testée en écriture). - values-prod : backup `enabled: true` (était false) + destinationPath aligné sur `s3://frn-cnpg-backup-plateforme-prod-db/` (bucket existant qui contient déjà les base backups + WAL du cluster, était `frn-cnpg-backup-plateforme-prod` non créé). Appliqué en live (SealedSecret + secret patché) : archivage WAL a repris ("Continuous archiving is working"), réplica db-1 sort du crashloop et re-sync. 🤖 Generated with [Claude Code](https://claude.com/claude-code)

  • semantic-release-bot(21 Jul 26)

    chore(release): 1.65.1 [skip ci] ## [1.65.1](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.65.0...v1.65.1) (2026-07-21) ### Bug Fixes * **controlplane:** ajoute betterstack.io/monitor-type=expected_status_code ([791d67b](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/791d67b2094f65824573c2de0e5fb48d95f4188f))

  • kevin_gillet(21 Jul 26)

    fix(controlplane): ajoute betterstack.io/monitor-type=expected_status_code Le monitor BetterStack de l'ingress controlplane restait de type "status" (attend un 2xx) et voyait donc le 400 attendu de l'endpoint Connect/gRPC comme DOWN (incident permanent k8s:plateforme-prod/plateforme-prod-controlplane). betterstack-sync n'injecte expected-status-code dans le monitor QUE si monitor-type == expected_status_code (sinon défaut "status" → code ignoré). L'annotation expected-status-code=400 posée précédemment était donc inerte. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

  • semantic-release-bot(19 Jul 26)

    chore(release): 1.65.0 [skip ci] # [1.65.0](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.64.0...v1.65.0) (2026-07-19) ### Features * **helm:** sonde BetterStack controlplane attend un HTTP 400 ([18a8201](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/18a82018404a3e5291bd0a83836e58b08f1e3367))

  • FranceNuage(19 Jul 26)

    feat(helm): sonde BetterStack controlplane attend un HTTP 400 Endpoint Connect/gRPC : un GET nu renvoie 400 (requete non-gRPC), verifie en reel sur controlplane.france-nuage.fr. Sans ca la sonde BetterStack considererait le 400 comme un incident. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

  • semantic-release-bot(17 Jul 26)

    chore(release): 1.64.0 [skip ci] # [1.64.0](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.63.0...v1.64.0) (2026-07-17) ### Features * **helm:** expose console et controlplane via Ingress ([bfd47f3](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/bfd47f3bbdf7952a949ff2be2dc37884ae2efb77))

  • Kévin GILLET(17 Jul 26)

    feat(helm): expose console et controlplane via Ingress Le chart plateforme bundlait console + controlplane dans le namespace plateforme-prod sans aucun Ingress : controlplane.france-nuage.fr retournait 404 (aucun backend cote kingress) et la console publique dependait encore de l'ancien chart standalone. Ajoute deux templates Ingress parametrables (kingress, classe nginx requise par Capsule, TLS via cert-manager letsencrypt-prod, annotations BetterStack), desactives par defaut et actives dans values-prod.yaml : - console.france-nuage.fr -> svc <fullname>-console:80 - controlplane.france-nuage.fr -> svc <fullname>-controlplane:80 Le controlplane parle Connect/gRPC-web sur HTTP/1.1, un Ingress standard suffit cote kingress. Meme pattern que charts/console et charts/controlplane de l'ancienne archi. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

  • semantic-release-bot(16 Jul 26)

    chore(release): 1.63.0 [skip ci] # [1.63.0](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.62.1...v1.63.0) (2026-07-16) ### Features * **db:** migre les 3 bases vers un cluster CloudNativePG unique ([b28ff67](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/b28ff6765c63db3dd9dcd048bc41f31b74448adf))

  • Kévin GILLET(16 Jul 26)

    feat(db): migre les 3 bases vers un cluster CloudNativePG unique Remplace les StatefulSets postgres/keycloak-db/spicedb-db (mono-instance, sans backup) par un Cluster CNPG unique hébergeant les 3 bases : - controlplane -> base `postgres` via le superuser - keycloak / spicedb -> bases + rôles dédiés (managed.roles + postInitSQL) Services alias ExternalName -> conserve les hostnames attendus par les apps (aucun changement de template d'app ni de helper). HA 2 réplicas + storage local + anti-affinité zone + backup S3 barman en prod. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

  • semantic-release-bot(16 Jul 26)

    chore(release): 1.62.1 [skip ci] ## [1.62.1](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/compare/v1.62.0...v1.62.1) (2026-07-16) ### Bug Fixes * on arrête d'utiliser la ada car trop d'erreur de manque de place dispo du scheduler ([f78b0f5](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/f78b0f5785352c88f855fc9f377a005e75d6e99b)) * use prod kubeconfig ([12cd992](https://gitlab.com/getbunker-france-nuage/france-nuage/plateforme/commit/12cd99288d98ba999cf4287b2acd2207ab5ed5fd))

  • Kévin GILLET(16 Jul 26)

    fix: on arrête d'utiliser la ada car trop d'erreur de manque de place dispo du scheduler

  • Kévin GILLET(16 Jul 26)

    fix: use prod kubeconfig

Bunker Website

Website

Bunker - GDPR-Compliant Cloud Hosting in Europe

European sovereign cloud outside US jurisdiction. Open-source infrastructure hosted in France with zero vendor lock-in. The Cloud Act alternative.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address172.67.147.126
  • LocationSan Francisco,California,United States of America,NA
  • ISPCloudFlare Inc.
  • ASNAS13335

Associated Countries

  • USUS

Safety Score

Website marked as safe

100%

Blacklist Check

getbunker.net was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Bunker Reviews

More Cloud Hosting

  • Icelandic hosting, VPS and email, running on its own network (AS44925) and hardware since 2006. Bitcoin and Monero accepted, ISO 27001 certified, and powered by geothermal and hydro. Iceland sits outside the 14 Eyes, and 1984 only releases data on an Icelandic court order.

    Crypto Payments Accepted No Security AuditNot Open Source
  • Swiss web hosting, VPS and OpenStack cloud, from a company that builds and runs its own datacenters and network (AS29222). ISO 27001 certified since 2018, and Swiss law keeps it outside the 14 Eyes and the CLOUD Act. Card payment only, so there is no anonymous signup.

    No Security AuditNot Open Source
  • VPS, VPN and domain service run by njalla.srl in Costa Rica, on its own Swedish machines. Sign up with an email or XMPP address, and pay in crypto. Njalla is the legal registrant of domains you buy: you keep full usage rights and can transfer out, but never own them on paper.

    Crypto Payments Accepted No Security AuditNot Open Source

About the Data: Bunker

Change History

  • Amended (acceptsCrypto, description, openSource, securityAudited) by @lissy93 #751
  • Added by @FGRibreau #525

Edit Bunker Data

You can edit Bunker's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

Origin Data

Modify Data

API

You can access Bunker's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/bunker

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Bunker

Help your friends compare Cloud Hosting, and pick privacy-respecting software and services.
Share Bunker and Awesome Privacy with your network!