---
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
