docs: add consolidated installation guide and helper scripts #62

Merged
forbes merged 5 commits from install-guide-and-scripts into main 2026-02-12 15:02:26 +00:00
Owner

Summary

Add a consolidated installation guide (docs/INSTALL.md) and improved helper scripts for two installation paths: Docker Compose (all-in-one) and systemd daemon with external services.

Changes

New files (8)

  • docs/INSTALL.md — consolidated installation guide with Option A (Docker Compose) and Option B (daemon/systemd) paths
  • scripts/setup-docker.sh — interactive helper that generates .env and config.docker.yaml with random credentials
  • deployments/docker-compose.allinone.yaml — all-in-one stack: PostgreSQL + MinIO + OpenLDAP + Silo + nginx (optional via --profile nginx)
  • deployments/config.dev.yaml — checked-in dev config for make docker-up (fixes broken mount)
  • deployments/ldap/memberof.ldif — enables memberOf overlay in OpenLDAP
  • deployments/ldap/silo-groups.ldif — creates silo-admins/silo-users/silo-viewers role groups
  • deployments/nginx/nginx.conf — reverse proxy config with optional HTTPS block
  • deployments/nginx/nginx-nossl.conf — HTTP-only nginx variant

Bug fixes

  • deployments/docker-compose.yaml — fix broken mount (../configs/config.yaml did not exist)
  • deployments/docker-compose.prod.yaml — remove unsupported env vars (SILO_DB_SSLMODE, SILO_BASE_URL, etc.) that the Go config loader silently ignores

Script improvements

  • scripts/setup-host.sh — parameterize hostnames via SILO_DB_HOST/SILO_MINIO_HOST, update Go 1.23→1.24, expand env template
  • scripts/deploy.sh — parameterize via SILO_DEPLOY_TARGET and SILO_DB_HOST
  • scripts/setup-ipa-nginx.sh — parameterize via SILO_HOSTNAME and SILO_PORT, nginx template uses variables

Documentation updates

  • README.md — updated Quick Start to point to INSTALL.md, added to docs table
  • docs/DEPLOYMENT.md — added redirect banner for first-time users
  • .env.example — expanded with all SILO_* and LDAP_* variables
  • config.example.yaml — changed hostnames to localhost with Docker Compose comments

Design decisions

  • OpenLDAP (bitnami/openldap:2.6) is always included in the allinone stack (not a profile) — provides LDAP auth out of the box with memberOf overlay for role mapping
  • Nginx is optional via Docker Compose profiles (--profile nginx)
  • All existing scripts retain backward-compatible defaults — env var overrides use the old hardcoded values as fallbacks
  • setup-docker.sh supports --non-interactive mode for CI/automation

Testing

# Docker Compose path
./scripts/setup-docker.sh --non-interactive
docker compose -f deployments/docker-compose.allinone.yaml up -d
curl http://localhost:8080/health

# Dev compose (verify fix)
make docker-up

# Shellcheck
shellcheck scripts/setup-docker.sh  # passes clean
## Summary Add a consolidated installation guide (`docs/INSTALL.md`) and improved helper scripts for two installation paths: Docker Compose (all-in-one) and systemd daemon with external services. ## Changes ### New files (8) - **`docs/INSTALL.md`** — consolidated installation guide with Option A (Docker Compose) and Option B (daemon/systemd) paths - **`scripts/setup-docker.sh`** — interactive helper that generates `.env` and `config.docker.yaml` with random credentials - **`deployments/docker-compose.allinone.yaml`** — all-in-one stack: PostgreSQL + MinIO + OpenLDAP + Silo + nginx (optional via `--profile nginx`) - **`deployments/config.dev.yaml`** — checked-in dev config for `make docker-up` (fixes broken mount) - **`deployments/ldap/memberof.ldif`** — enables memberOf overlay in OpenLDAP - **`deployments/ldap/silo-groups.ldif`** — creates silo-admins/silo-users/silo-viewers role groups - **`deployments/nginx/nginx.conf`** — reverse proxy config with optional HTTPS block - **`deployments/nginx/nginx-nossl.conf`** — HTTP-only nginx variant ### Bug fixes - **`deployments/docker-compose.yaml`** — fix broken mount (`../configs/config.yaml` did not exist) - **`deployments/docker-compose.prod.yaml`** — remove unsupported env vars (`SILO_DB_SSLMODE`, `SILO_BASE_URL`, etc.) that the Go config loader silently ignores ### Script improvements - **`scripts/setup-host.sh`** — parameterize hostnames via `SILO_DB_HOST`/`SILO_MINIO_HOST`, update Go 1.23→1.24, expand env template - **`scripts/deploy.sh`** — parameterize via `SILO_DEPLOY_TARGET` and `SILO_DB_HOST` - **`scripts/setup-ipa-nginx.sh`** — parameterize via `SILO_HOSTNAME` and `SILO_PORT`, nginx template uses variables ### Documentation updates - **`README.md`** — updated Quick Start to point to INSTALL.md, added to docs table - **`docs/DEPLOYMENT.md`** — added redirect banner for first-time users - **`.env.example`** — expanded with all SILO_* and LDAP_* variables - **`config.example.yaml`** — changed hostnames to localhost with Docker Compose comments ## Design decisions - **OpenLDAP** (`bitnami/openldap:2.6`) is always included in the allinone stack (not a profile) — provides LDAP auth out of the box with memberOf overlay for role mapping - **Nginx** is optional via Docker Compose profiles (`--profile nginx`) - All existing scripts retain **backward-compatible defaults** — env var overrides use the old hardcoded values as fallbacks - `setup-docker.sh` supports `--non-interactive` mode for CI/automation ## Testing ```bash # Docker Compose path ./scripts/setup-docker.sh --non-interactive docker compose -f deployments/docker-compose.allinone.yaml up -d curl http://localhost:8080/health # Dev compose (verify fix) make docker-up # Shellcheck shellcheck scripts/setup-docker.sh # passes clean ```
forbes added 4 commits 2026-02-12 15:00:09 +00:00
- Fix docker-compose.yaml: mount config.dev.yaml instead of nonexistent
  configs/config.yaml
- Add deployments/config.dev.yaml with Docker service names and dev
  defaults for zero-setup make docker-up
- Expand .env.example with all SILO_* and LDAP_* variables
- Update config.example.yaml hostnames to localhost with Docker comments
- Add deployments/config.docker.yaml to .gitignore (generated file)
Add docker-compose.allinone.yaml with five services:
- PostgreSQL 16 with auto-applied migrations
- MinIO for S3-compatible file storage
- OpenLDAP (bitnami/openldap:2.6) with memberOf overlay and
  preconfigured silo-admins/silo-users/silo-viewers groups
- Silo API server built from Dockerfile
- Nginx reverse proxy (optional, via --profile nginx)

Add scripts/setup-docker.sh interactive helper that generates
deployments/.env and deployments/config.docker.yaml with random
credentials. Supports --non-interactive for CI.

Add deployments/ldap/ LDIF init scripts for memberOf overlay and
Silo role groups. Add deployments/nginx/ reverse proxy configs.
- setup-host.sh: add SILO_DB_HOST and SILO_MINIO_HOST env var
  overrides, update Go version from 1.23 to 1.24, expand generated
  silod.env template with session secret and admin password fields
- deploy.sh: add SILO_DEPLOY_TARGET and SILO_DB_HOST env var
  overrides for target host and database host
- setup-ipa-nginx.sh: replace hardcoded hostname with SILO_HOSTNAME
  env var (default: silo.example.internal), parameterize SILO_PORT,
  use variable substitution in nginx config template

All scripts retain backward-compatible defaults.
Add docs/INSTALL.md with two installation paths:
- Option A: Docker Compose (all-in-one with PostgreSQL, MinIO,
  OpenLDAP, and optional nginx)
- Option B: Daemon install (systemd with external services, links to
  setup instructions for PostgreSQL, MinIO, FreeIPA, nginx)

Includes LDAP user/group management instructions, verification steps,
and upgrade procedures for both paths.

Update README.md Quick Start to point to INSTALL.md, add to docs table.
Add redirect banner to DEPLOYMENT.md for first-time users.
Add comments to docker-compose.prod.yaml noting unsupported env vars.
forbes added 1 commit 2026-02-12 15:02:15 +00:00
forbes merged commit 6f1504021c into main 2026-02-12 15:02:26 +00:00
forbes deleted branch install-guide-and-scripts 2026-02-12 15:02:27 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/silo#62