Skip to content

notch8/dataverseup

Repository files navigation

DataverseUp

Notch8's ops wrapper around stock Dataverse (GDCC container images), aligned with the DataverseUp plan: pinned versions, compose-first bring-up, and a Helm chart for Kubernetes without forking core.

Repository github.com/notch8/dataverseup
Live demo demo-dataverseup.notch8.cloud — deployed from this stack (Helm/Kubernetes); seeded demo data for smoke tests

Quick start (local / lab)

  1. Prerequisites: Docker + Docker Compose v2 (docker compose), ~4 GB+ RAM (Payara + Solr + Postgres), and Ruby + RubyGems for Stack Car (edge TLS — same *.localhost.direct pattern as Hyku). On Apple Silicon, images use linux/amd64 (emulation).

  2. Edge proxy (Stack Car): This repo does not ship Traefik; labels target the shared Docker network stackcar (same as sc proxy up). Install the gem, trust the CA once, then keep the proxy running while you use the site:

    gem install stack_car
    sc proxy cert   # usually once per machine
    sc proxy up     # Traefik on 80/443, network stackcar
  3. Secrets (never commit real .env or secrets/):

    cp .env.example .env
    # Defaults use *.localhost.direct; adjust hostname/traefikhost only if your edge differs.
    mkdir -p secrets
    cp -r secrets.example/. secrets/

    Use secrets.example/.secrets/ so files land as secrets/admin/..., not nested under secrets/secrets.example/.

  4. Start: A single docker compose up -d brings up Postgres, Solr, MinIO (optional), Dataverse, then runs dev_bootstrapdev_brandingdev_seed in order (see x-dataverseup-workflow in docker-compose.yml).

  5. Watch first boot (can take several minutes):

    docker compose logs -f dataverse
    docker compose logs -f dev_bootstrap
    docker compose logs -f dev_branding
    docker compose logs -f dev_seed
  6. URLs (defaults in .env.example, traefikhost=localhost.direct):

    • Dataverse (via Stack Car): https://localhost.direct/ and https://www.localhost.direct/
    • Direct Payara: http://localhost:8080/
    • Traefik dashboard (Stack Car): https://traefik.localhost.direct/
    • Bootstrap admin (after dev_bootstrap succeeds): dataverseAdmin / admin1 (change before any shared or AWS host; see docs/DEPLOYMENT.md when you maintain it)
  7. Branding / seed (re-runs): On first boot, configbaker writes API_TOKEN to secrets/api/bootstrap.env; dev_branding / dev_seed refresh secrets/api/key from that when API_TOKEN is set. To re-apply after you change branding/ or fixtures/seed/:

    docker compose run --rm dev_branding
    docker compose run --rm dev_seed

    If you need a manual token, put it on one line in secrets/api/key (superuser token from the UI), then run dev_branding again.

Kubernetes (Helm)

  • Chart: charts/dataverseup — see charts/dataverseup/README.md for a feature summary and helm commands.
  • Runbook: docs/DEPLOYMENT.md — Helm (prereqs, Secrets, Solr, S3, bootstrap), GitHub Actions deploy, ./bin/helm_deploy, smoke tests, upgrades.

Compose remains the default path for local/lab; Helm reuses the same Payara scripts from scripts/init.d/ (chart symlinks under charts/dataverseup/files/init.d/) where applicable.

Layout

Path Purpose
docker-compose.yml Stack: Postgres, Solr, MinIO (optional), Dataverse, bootstrap, branding, seed; Traefik labels + networks.default.name: stackcar (Stack Car proxy)
.env.example Version pins and env template — copy to .env
secrets.example/ Payara/Dataverse secret files template — copy to secrets/ (see Quick start)
scripts/ All automation: Payara init.d/, Compose/K8s entrypoints, apply-branding.sh, seed-content.sh, solr-initdb/, solr/update-fields.sh, triggers/, k8s/
scripts/init.d/vendor-solr/ Vendored Solr helpers for 1002-custom-metadata.sh
config/schema.xml, config/solrconfig.xml Solr XML bind-mounts / upstream copies (see scripts/solr-initdb/)
branding/ Installation branding + static assets
fixtures/seed/ JSON + files for dev_seed
charts/dataverseup/ Helm chart for Dataverse on Kubernetes (optional Solr, bootstrap Job, S3, Ingress, …)
bin/helm_deploy Wrapper around helm upgrade --install with sane defaults (see docs/DEPLOYMENT.md)
docs/DEPLOYMENT.md Deployment runbook: Helm/Kubernetes, optional GitHub Actions, Compose pointer, learnings log

Version pin

Default image tag in .env.example targets Dataverse 6.10.x (GDCC tags, e.g. 6.10.1-noble-r0). Bump only after checking release notes and Solr/schema compatibility.

Compose uses solr:9.10.1 with IQSS schema.xml / solrconfig.xml vendored under config/. Refresh those when you upgrade Dataverse:

REF=develop  # or a release tag, e.g. v6.10.1
curl -fsSL -o config/schema.xml "https://raw.githubusercontent.com/IQSS/dataverse/${REF}/conf/solr/schema.xml"
curl -fsSL -o config/solrconfig.xml "https://raw.githubusercontent.com/IQSS/dataverse/${REF}/conf/solr/solrconfig.xml"
curl -fsSL -o scripts/solr/update-fields.sh "https://raw.githubusercontent.com/IQSS/dataverse/${REF}/conf/solr/update-fields.sh"
chmod +x scripts/solr/update-fields.sh

If you previously ran Solr 8, remove the compose Solr volume once so the core is recreated under Solr 9, then reindex from Dataverse.

Upstream references

License

Dataverse is licensed by IQSS; container images by their publishers.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors