Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/todo-media-storage.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Integrate MinIO (or Nhost Storage) for handling file uploads including avatars,
```yaml
# docker-compose.yml
minio:
image: minio/minio:latest
image: quay.io/minio/minio:latest
ports:
- '9000:9000'
- '9001:9001'
Expand Down
2 changes: 1 addition & 1 deletion .github/deploy/docker/docker-compose.production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ services:
# MinIO Storage (Production)
# --------------------------------------------------------------------------
storage:
image: minio/minio:latest
image: quay.io/minio/minio:latest
container_name: nchat-storage
restart: unless-stopped
environment:
Expand Down
2 changes: 1 addition & 1 deletion .github/deploy/docker/docker-compose.staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ services:
# MinIO Storage (S3-compatible)
# --------------------------------------------------------------------------
storage:
image: minio/minio:latest
image: quay.io/minio/minio:latest
container_name: nchat-storage-staging
restart: unless-stopped
ports:
Expand Down
2 changes: 1 addition & 1 deletion .github/deploy/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ services:
# MinIO Storage (S3-compatible)
# --------------------------------------------------------------------------
storage:
image: minio/minio:latest
image: quay.io/minio/minio:latest
container_name: nchat-storage
restart: unless-stopped
ports:
Expand Down
2 changes: 1 addition & 1 deletion .github/deploy/k8s/minio-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ spec:
spec:
containers:
- name: minio
image: minio/minio:latest
image: quay.io/minio/minio:latest
imagePullPolicy: IfNotPresent
ports:
- name: api
Expand Down
2 changes: 1 addition & 1 deletion .github/wiki/nself-cli/Services.md
Original file line number Diff line number Diff line change
Expand Up @@ -1204,7 +1204,7 @@ Enable these services via environment variables in `.backend/.env`.

| Property | Value |
| ---------------- | --------------------- |
| **Image** | `minio/minio:latest` |
| **Image** | `quay.io/minio/minio:latest` |
| **API Port** | 9000 |
| **Console Port** | 9001 |
| **Console URL** | http://localhost:9001 |
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/hygiene.yml
Original file line number Diff line number Diff line change
Expand Up @@ -280,12 +280,40 @@ jobs:
exit 0
fi

# backend/docker-compose.yml is DELIBERATELY tracked, for CI E2E
# provisioning — `nself start --skip-build` needs it present at
# checkout. The Doc-Sync step above already carves it out by name and
# points at .github/wiki/E2E-Backend-Setup.md; this step did not, so
# the two gates contradicted each other: one declared the file
# legitimately tracked, the other refused every commit that touched
# it. The file could be kept but never corrected, which is how it sat
# on a MinIO image that Docker Hub had deleted.
#
# The carve-out is VERIFIED, not blanket. This gate exists to stop
# generated files carrying plaintext credentials into a public repo
# (the ntask incident: a generated compose with the postgres password,
# Hasura admin secret and JWT keys). That protection is what the
# secret check below preserves: every credential-shaped key in this
# file must be a ${...} reference, never a literal. A literal value
# fails the gate exactly as before, so nothing this gate was built to
# catch gets through.
ALLOWED_TRACKED_GENERATED='backend/docker-compose.yml'

FAIL=0
while IFS= read -r f; do
[ -f "$f" ] || continue
if head -n 5 "$f" | grep -q "# GENERATED BY"; then
if git check-ignore -q "$f"; then
echo "OK: $f is generated but gitignored."
elif [ "$f" = "$ALLOWED_TRACKED_GENERATED" ]; then
if literals=$(grep -nE '(PASSWORD|SECRET|KEY|TOKEN)[[:space:]]*[:=]' "$f" | grep -v '\${'); then
echo "ERROR: $f is an allowed tracked generated file, but it now carries literal credential values."
echo "$literals" | sed 's/^/ /'
echo " Move the value into .env and reference it as \${VAR}, or de-track the file."
FAIL=1
else
echo "OK: $f is generated and tracked by design (CI E2E provisioning); no literal credentials."
fi
else
echo "ERROR: Refusing to commit generated file. Add to .gitignore first."
echo " -> $f"
Expand Down
2 changes: 1 addition & 1 deletion backend/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ services:
# MinIO Object Storage
# SECURITY: Bound to localhost only - access via nginx reverse proxy
minio:
image: minio/minio:latest
image: quay.io/minio/minio:latest
container_name: ${PROJECT_NAME}_minio
restart: unless-stopped
user: "1000:1000"
Expand Down
Loading