OpenAdServer

Logo en forme de cible violette sur une carte blanche, au-dessus de trois badges : FastAPI, PyTorch CTR et Real-time eCPM.

Régie publicitaire à héberger, écrite en Python et PyTorch

OpenAdServer est un serveur publicitaire à installer sur ses propres machines. Sur le papier, pour chaque demande d'annonces sur un emplacement, il filtre les campagnes selon leur ciblage et leur budget, estime la probabilité de clic de chaque annonce avec un modèle PyTorch et renvoie les mieux classées par eCPM, avec leurs URL de suivi. L'éditeur garderait la main sur ses emplacements et ses données, sans régie intermédiaire.

En l'état, le serveur ne démarre pas : le code du dernier commit, du 21 décembre 2025, s'arrête au lancement sur une ImportError, et le mainteneur n'a pas répondu à l'issue qui le signale.

Ciblage par règles JSON et eCPM calculé selon le mode d'achat

  • Cinq étapes, un module chacune : sélection des candidats par ciblage, filtres, prédiction, classement, reclassement final.
  • Des règles de ciblage en JSON par campagne, en inclusion ou en exclusion : pays et villes, système et marque de l'appareil, tranche d'âge, centres d'intérêt.
  • Quatre modes d'achat ramenés à un seul eCPM : le CPM compte tel quel, le CPC est multiplié par le taux de clic prédit, le CPA par les taux de clic et de conversion prédits, l'oCPM reprend la formule du CPC.
  • Des plafonds par utilisateur, à la journée et à l'heure, et un filtre qui écarte une campagne quand son budget du jour, son budget total ou le solde de l'annonceur est épuisé.
  • Trois modèles de prédiction du clic (régression logistique, factorization machine, DeepFM), avec des scripts pour les entraîner et les comparer sur le jeu Criteo. Sur 100 000 lignes, la régression logistique obtient la meilleure AUC (0,7577 contre 0,7178 pour DeepFM) et le README la recommande en production.

README en v1.0, code alpha qui ne démarre pas

Le paquet s'appelle encore LiteAds et se déclare alpha. Le pyproject.toml publie liteads 0.1.0 en « Development Status :: 3 - Alpha », quand le README annonce une « v1.0 (Current) » « production-ready ». Le dépôt compte cinq commits, du 30 novembre au 21 décembre 2025, sans tag ni release.

Le code du dernier commit lève une ImportError au lancement. event_service.py, chargé au démarrage, importe AdEvent et EventType depuis liteads.models, qui ne définit ni l'un ni l'autre. L'issue #3, ouverte le 3 février 2026, décrit le conteneur qui redémarre en boucle sur cette erreur. Un autre utilisateur a demandé des nouvelles le 26 octobre 2026 ; le mainteneur n'a toujours pas répondu.

Les commandes du README visent un module absent. Le README lance openadserver.ad_server.main et openadserver.trainer.train_ctr ; le seul paquet du dépôt est liteads, dont le dossier trainer ne contient que des fichiers vides. Le lien de clonage vise pysean/openadserver, introuvable sur GitHub.

Pas d'API de gestion ni d'interface d'administration. Hors sondes de santé et /metrics, l'application ne sert que /api/v1/ad et /api/v1/event. Les routes CRUD des campagnes, créations et annonceurs que liste le README n'existent pas ; l'interface React et l'API de gestion des campagnes sont prévues pour la v1.1. Annonceurs, campagnes et ciblages s'écrivent directement dans PostgreSQL.

PostgreSQL, Redis et PyTorch dans tous les cas. Le docker-compose.yml lance PostgreSQL 15 et Redis 7, plafonné à 256 Mo, à côté du serveur. Nginx et Prometheus avec un tableau de bord Grafana fourni sont des profils optionnels. PyTorch figure dans les dépendances de base du paquet.

Les latences publiées sont mesurées sans PostgreSQL ni Redis. Le banc d'essai tourne sur SQLite en mémoire et FakeRedis, sans réseau : P99 de 10,02 ms en régression logistique, 14,13 ms avec DeepFM, quand la liste des fonctions promet moins de 10 ms. Le README prévoit lui-même 10 à 20 % de surcoût avec PostgreSQL et Redis.

Présenté comme une alternative auto-hébergée à Google Ad Manager, pour les PME. Le README prête à Google Ad Manager une commission de 20 à 30 % sur les revenus et oppose son Python au PHP de Revive Adserver. Il cite aussi les éditeurs de jeux, les développeurs d'applications, les chercheurs et les étudiants. OpenRTB 2.5, le header bidding et la vidéo VAST sont inscrits à la v2.0, sans date.

SOURCES

DÉPÔThttps://github.com/seanZhang414/openadserver
LICENCEApache-2.0