---
name: scoold
description: Scoold recipe for open-forge. Stack Overflow-inspired Q&A and knowledge-sharing platform for teams with SAML/LDAP/social login, full-text search, spaces, webhooks, and REST API. Source: https://github.com/Erudika/scoold
---

# Scoold

Q&A and knowledge-sharing platform for teams, inspired by Stack Overflow. Features full-text search, reputation/voting, custom badges, Spaces (isolated team groups), SAML/LDAP/social login, webhooks, and a REST API. Runs as a Spring Boot JAR backed by the Para data service. Upstream: https://github.com/Erudika/scoold. Docs: https://scoold.com/documentation/.

## Compatible install methods

| Method | Platform | Notes |
|---|---|---|
| Docker Compose (Scoold + Para) | Docker | Recommended. Official images. |
| JAR (standalone) | Java 17+ | Download JAR, configure application.conf, run directly. |
| Kubernetes | K8s | Helm chart and manifests available in docs. |
| Cloud PaaS | Heroku, AWS, DigitalOcean, Azure | Deploy JAR or Docker image. |

## Inputs to collect

| Phase | Prompt | Notes |
|---|---|---|
| setup | "Public URL for Scoold?" | e.g. https://qa.example.com — set in scoold-application.conf as scoold.host_url |
| setup | "Para app name?" | A short identifier for the Para backend app (para.app_name) |
| setup | "Para access/secret keys?" | Auto-generated by Para on first boot; or pre-set in para-application.conf |
| auth | "Social login providers?" | Google, GitHub, Facebook, etc. — provide app ID + secret per provider |
| auth | "SAML or LDAP?" | Enterprise SSO options; configure in application.conf |

## Software-layer concerns

### Docker Compose (recommended)

Uses official images: erudikaltd/para:latest_stable and erudikaltd/scoold:latest_stable.

  # Directory layout
  ./
    para-application.conf    # Para backend config
    scoold-application.conf  # Scoold frontend config
    docker-compose.yml

Key Para config (para-application.conf):

  para.app_name = "scoold"
  para.port = 8080
  para.db.hostname = "h2"       # default: H2 embedded; or configure DynamoDB/MongoDB/SQL
  para.security.secret = "change-me-strong-secret"

Key Scoold config (scoold-application.conf):

  scoold.host_url = "https://qa.example.com"
  scoold.port = 8000
  scoold.para_endpoint = "http://para:8080"
  scoold.para_access_key = "app:scoold"
  scoold.para_secret_key = "<from-para-logs-on-first-boot>"

Docker Compose structure (from upstream repo):

  services:
    para:
      image: erudikaltd/para:latest_stable
      ports: ["8080:8080"]
      volumes:
        - paraData:/para/data
        - paraLib:/para/lib
        - ./para-application.conf:/para/application.conf
    scoold:
      depends_on: [para]
      image: erudikaltd/scoold:latest_stable
      ports: ["8000:8000"]
      volumes:
        - ./scoold-application.conf:/scoold/application.conf
        - ./para-application.conf:/scoold/para-application.conf
      environment:
        - BOOT_SLEEP=5
        - JAVA_OPTS=-Dscoold.para_endpoint=http://para:8080

### Para access keys

On first boot, Para prints the generated access/secret keys in its logs:
  docker-compose logs para | grep "access key\|secret key"
Copy these into scoold-application.conf (para_access_key, para_secret_key).

### Data storage

Para supports multiple backends: H2 (embedded, dev), PostgreSQL, MySQL, MongoDB, DynamoDB, Cassandra.
Configure in para-application.conf (para.db.* keys). H2 is fine for small teams; use PostgreSQL for production.

## Upgrade procedure

  docker-compose pull
  docker-compose up -d

Always check the Scoold changelog for breaking config key renames before upgrading.

## Gotchas

- Para must be running before Scoold starts — BOOT_SLEEP=5 in the Compose file handles this; increase if Para starts slowly.
- Para access/secret keys: Scoold will fail to connect if these don't match Para's generated keys. Check logs if login fails.
- H2 embedded DB: data lives in the Para container volume. Back up /para/data before upgrading.
- Port 8000 (Scoold) and 8080 (Para) — expose only Scoold behind a reverse proxy; Para should not be public-facing.
- Scoold Pro: premium features (SSO deep config, advanced analytics) require a paid license from scoold.com.
- scoold.host_url: must be the exact public URL; OAuth redirect URIs are derived from this.

## References

- Upstream README: https://github.com/Erudika/scoold#readme
- Documentation: https://scoold.com/documentation/
- Docker Hub: https://hub.docker.com/r/erudikaltd/scoold
- Para (backend): https://github.com/Erudika/para
- Demo: https://live.scoold.com
