Skip to content

fix(synkronus-quickstart): support docker and podman quickstart flows#1

Open
bokchan wants to merge 11 commits intomainfrom
revise-and-validate-docs
Open

fix(synkronus-quickstart): support docker and podman quickstart flows#1
bokchan wants to merge 11 commits intomainfrom
revise-and-validate-docs

Conversation

@bokchan
Copy link
Copy Markdown

@bokchan bokchan commented Apr 19, 2026

Pull Request Title

fix(synkronus-quickstart): support docker and podman quickstart flows

Description

This draft PR tightens the Synkronus quickstart flow so the documented manual setup works consistently across Docker and Podman.

It updates the runtime scripts and docs, fixes the manual database bootstrap flow, and adds GitHub Actions coverage for both runtimes.

TODO:

  • Remove - update-docs from on.push.branches before merging

Type of Change

  • Bug Fix
  • New Feature / Enhancement
  • Refactor / Code Cleanup
  • Documentation Update
  • Maintenance / Chore
  • Other (please specify): CI workflow coverage for Docker and Podman quickstart validation

Component(s) Affected

  • formulus (React Native mobile app)
  • formulus-formplayer (React web app)
  • synkronus (Go backend server)
  • synkronus-cli (Command-line utility)
  • Documentation
  • DevOps / CI/CD
  • Other: synkronus-quickstart installer and helper scripts

Related Issue(s)

Closes/Fixes/Resolves: None


Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manually tested
  • Tested on multiple platforms (if applicable)
  • Not applicable

Breaking Changes

  • This PR introduces breaking changes
  • This PR does NOT introduce breaking changes

If breaking changes, please describe migration steps:

None.


Documentation Updates

  • Documentation has been updated
  • Documentation update is not required

Checklist

  • Code follows project style guidelines
  • All existing tests pass
  • New tests added for new functionality
  • PR title follows Conventional Commits format

Thank you for contributing to Open Data Ensemble (ODE)!

@bokchan bokchan force-pushed the revise-and-validate-docs branch from 9567f88 to d0fbbf6 Compare April 19, 2026 12:18
@bokchan bokchan force-pushed the revise-and-validate-docs branch from d0fbbf6 to 65c560b Compare April 19, 2026 12:26
bokchan

This comment was marked as duplicate.

@bokchan bokchan marked this pull request as ready for review April 19, 2026 12:54
@bokchan bokchan requested a review from Copilot April 19, 2026 12:54
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to make the Synkronus quickstart flow work consistently across Docker and Podman by updating helper scripts/docs and adding CI validation for both runtimes.

Changes:

  • Added a data-volume migration utility and an automated upgrade-path validation workflow.
  • Updated backup/bootstrap scripts to support selecting Docker vs Podman via SYNK_RUNTIME.
  • Added GitHub Actions coverage for Docker/Podman manual + installer flows and adjusted installer/docs for rootless-friendly localhost access.

Reviewed changes

Copilot reviewed 14 out of 16 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
utilities/migrate-synkronus-data.sh New script to migrate legacy volume layout into the current /app/data structure.
utilities/backup-db.sh Adds runtime selection via SYNK_RUNTIME; adjusts output path handling.
utilities/backup-attachments.sh Adds runtime selection via SYNK_RUNTIME.
utilities/README.md Documents the utilities list in a clearer table format.
install.sh Switches localhost Caddy binding to host port 8081 and updates printed next steps.
docker-compose.yml Adds container_name for synkronus, changes default credentials, and publishes Postgres port 5432.
create_sync_db.sh Adds runtime detection + container discovery for Docker/Podman and uses it for DB bootstrap.
README.md Updates quickstart/manual-install docs and clarifies localhost + rootless Podman behavior.
.gitignore Ignores generated Caddyfile and docker-compose.override.yml.
.github/workflows/test-upgrade-path.yml New workflow to test migration flow on Docker and Podman.
.github/workflows/test-podman-runtime.yml New workflow to test Podman quickstart flows via reusable workflow.
.github/workflows/test-docker-runtime.yml New workflow to test Docker quickstart flows via reusable workflow.
.github/workflows/reusable-runtime-flow.yml Reusable workflow to run runtime scenario scripts.
.github/scripts/upgrade-path-flow.sh Scripted end-to-end upgrade-path/migration test used by CI.
.github/scripts/runtime-flow.sh Scripted end-to-end manual + installer quickstart tests used by CI.
.github/actions/setup-runtime/action.yml Composite action to install/auth/verify Docker or Podman tooling in CI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docker-compose.yml Outdated
Comment on lines +10 to +13
DB_CONNECTION: "postgres://synkronus_user:im97C1wauDvbHDREP51Vk2OfVeFp092@db:5432/synkronus?sslmode=disable" # create with ~/create_synk_db demo
JWT_SECRET: "ib2Xz57D7VQhkmMTWL0AVubCZblH8fvQzUKiEz6T8M" # Generate a new one with: openssl rand -base64 32
ADMIN_USERNAME: "admin_0d16c0"
ADMIN_PASSWORD: "orK5BcLcpDPamf5OKiYFC0hw"
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The compose file now hard-codes DB/JWT/admin credentials. This is a security risk (secrets committed to git) and it also breaks install.sh, which currently does string replacement on the old placeholder values (e.g., "strong_password", "please_change_the_username", and the previous JWT seed) and will no longer update these fields. Consider reverting these values back to placeholders (or moving secrets into an untracked .env / override file) so the installer can inject generated credentials without committing them.

Copilot uses AI. Check for mistakes.
Comment thread docker-compose.yml Outdated
Comment on lines +38 to +39
ports:
- "5432:5432"
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Publishing Postgres on host port 5432 by default increases exposure (any local-network access to the host can attempt DB connections) and can cause port conflicts on developer machines/CI runners. Unless there is a strong reason to access Postgres directly from the host, prefer removing this ports mapping and relying on the internal compose network (or documenting an optional override for users who need host access).

Suggested change
ports:
- "5432:5432"

Copilot uses AI. Check for mistakes.
Comment thread utilities/backup-db.sh Outdated
Comment thread create_sync_db.sh
Comment on lines 9 to 18
USERNAME="$1"
RECREATE=false

if [ "$2" == "--recreate" ]; then
RECREATE=true
fi

DB_USER="synk_$USERNAME"
DB_NAME="synk_$USERNAME"
PASSWORD=$(openssl rand -base64 30 | tr -d /=+ | cut -c1-40)
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

USERNAME is incorporated into DB_USER/DB_NAME and then interpolated into SQL identifiers without validation/quoting. A username containing spaces, quotes, or SQL metacharacters can fail unexpectedly or (in the worst case) alter the executed SQL. Add a strict validation step (e.g., allow only [a-zA-Z0-9_]+) and fail fast with a clear message before constructing SQL.

Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants