--- title: ShipShipShip created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, launch, product-hunt, marketing, landing] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/marclavergne/shipshipship] --- # 💻 ShipShipShip > **L'outil de « launch pages » self-hosted façon Product Hunt** — créez des pages de lancement stylées pour vos produits, avec vote, commentaires, file d'attente, badges « Top of the day », sans SaaS tiers. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | [shipshipship.dev](https://shipshipship.dev/) | | **GitHub** | [marclavergne/shipshipship](https://github.com/marclavergne/shipshipship) | | **License** | MIT | | **Langage** | TypeScript (Next.js) | | **Étoiles GitHub** | 290 ⭐ | | **Catégorie** | Development, Product Launch | | **Référence** | [selfh.st Development](https://selfh.st/apps/?tag=Development) | ## 📝 Description **ShipShipShip** est un **clone self-hosted de Product Hunt** (et de ses alternatives comme BetaList, Launching Next) : il permet de **créer des pages de lancement** pour vos produits, avec un système de **vote, classement, commentaires, badges** (« #1 Product of the Day ») et une **file d'attente** pour les lancements à venir. Le concept est simple : quand on lance un nouveau produit (SaaS, app mobile, projet open source), on veut le mettre en avant sur une page dédiée, avec un effet « monday morning launch » à la Product Hunt. Les services existants (Product Hunt, BetaList) sont **cloud only**, payants ou imposés, et on n'a pas le contrôle du branding. ShipShipShip propose la même mécanique **chez soi**, avec votre propre nom de domaine, votre branding, vos propres règles. L'outil est particulièrement adapté aux **indie hackers, studios indie et SaaS bootstrappés** qui lancent plusieurs produits par an et veulent un **hub de lancements** réutilisable. Possibilité d'**embed** la page sur son propre site, d'envoyer des **notifications email** aux abonnés à chaque nouveau produit, et de **tracker** les lancements passés (statut shipped / in queue). **Fonctionnalités clés** : pages produits avec images, vidéos, tags, vote up/down, classement par jour/semaine/mois, commentaires, file d'attente, badges « Top of the Day », newsletter, custom CSS, multi-tenants (plusieurs pages de lancement sur une instance). ## 🚀 Installation ### Via Docker (recommandé) ```yaml # docker-compose.yml version: '3.8' services: shipshipship: image: ghcr.io/marclavergne/shipshipship:latest container_name: shipshipship restart: unless-stopped ports: - "3000:3000" environment: DATABASE_URL: "postgresql://ship:***changeme***@db:5432/ship" NEXTAUTH_URL: "https://launch.example.com" NEXTAUTH_SECRET: "openssl-rand-hex-50" GITHUB_ID: "***" GITHUB_SECRET: "***" SMTP_HOST: "smtp.example.com" SMTP_PORT: 587 SMTP_USER: "noreply@example.com" SMTP_PASS: "***" SMTP_FROM: "noreply@example.com" depends_on: [db] labels: - "traefik.enable=true" - "traefik.http.routers.ship.rule=Host(`launch.example.com`)" - "traefik.http.routers.ship.entrypoints=websecure" - "traefik.http.routers.ship.tls.certresolver=letsencrypt" db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: ship POSTGRES_USER: ship POSTGRES_PASSWORD: ***changeme*** volumes: - ship_db:/var/lib/postgresql/data volumes: ship_db: ``` ### Installation manuelle ```bash git clone https://github.com/marclavergne/shipshipship.git cd shipshipship pnpm install cp .env.example .env.local # éditer DATABASE_URL, NEXTAUTH_*, SMTP_* pnpm prisma migrate deploy pnpm build && pnpm start ``` ## ⚙️ Configuration 1. **OAuth GitHub** (recommandé) : créer une app OAuth sur GitHub pour l'authentification des contributeurs et votes. 2. **NEXTAUTH_SECRET** : `openssl rand -hex 50` pour signer les sessions. 3. **Branding** : modifier `theme.config.ts` pour couleurs, logo, tagline — la page publique reflète votre marque. 4. **Premier admin** : créer un compte, se logguer, accéder à `/admin` pour modérer les soumissions. 5. **Webhook de déploiement** (optionnel) : ping à chaque release pour auto-publier un nouveau produit. ## 🔗 Alternatives - **Product Hunt** — Le référence, cloud only, audience massive mais algorithme opaque et pay-to-play. - **BetaList** — Historique, orienté early-adopters, payant pour soumettre. - **Launching Next** — Annuaire de lancements à venir, gratuit, pas self-hostable. - **Peerlist Launches** — Nouveau venu, orienté dev, gratuit. - **Une landing page Notion** — Solution minimaliste, sans dynamique de vote ni classement. ## 🔒 Sécurité - 🔐 **HTTPS obligatoire** via [[app-traefik]] : OAuth, sessions et votes transitent en clair sinon. - 🔒 **NEXTAUTH_SECRET robuste** : `openssl rand -hex 50`, sauvegarder hors-ligne. - 🛡️ **Modération** : prévoir un workflow d'approbation pour éviter le spam et les lancements frauduleux. - 🛡️ **Rate limiting** : activer un rate-limit sur `/api/vote` et `/api/submit` pour éviter les votes automatisés. - 🛡️ **Anti-bot sur les votes** : ajouter un CAPTCHA ([[app-private-captcha]]) pour empêcher la triche au classement. - 🛡️ **Backups PostgreSQL** : `ship_db` contient les votes, commentaires et métadonnées produits. ## 📚 Ressources - [Site officiel](https://shipshipship.dev/) - [Documentation](https://github.com/marclavergne/shipshipship#readme) - [GitHub marclavergne/shipshipship](https://github.com/marclavergne/shipshipship) - [Selfh.st — Development](https://selfh.st/apps/?tag=Development) ## 🔗 Pages Liées - [[cat-development]] — Catégorie Development - [[app-private-captcha]] — CAPTCHA self-hosted pour anti-bot sur les votes - [[app-traefik]] — Reverse proxy HTTPS - [[securisation-home-lab]] — Bonnes pratiques de sécurité - [[recettes-docker-compose]] — Templates Docker Compose