Files
wiki/Catalogue-Self-Hosted/apps/app-shipshipship.md
T
2026-06-09 18:40:21 +02:00

6.0 KiB


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
GitHub marclavergne/shipshipship
License MIT
Langage TypeScript (Next.js)
Étoiles GitHub 290
Catégorie Development, Product Launch
Référence selfh.st 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é)

# 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

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

🔗 Pages Liées