recipe-maintainer: public snapshot (secrets + deployment plans removed, single commit)

Sanitized single-commit public mirror of recipe-maintainer.
- Removed test-ssh/.testenv (live creds); added test-ssh/.testenv.example placeholders.
- Removed plans/ and planned-updates/ (deployment-planning docs) so no client/
  deployment domains appear in the public repo.
- All other secret stores were already gitignored.
- docs.coopcloud.tech retained as a submodule (public upstream).
This commit is contained in:
2026-06-16 20:18:24 +00:00
commit f283a371bb
253 changed files with 15975 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
name = "n8n"
+33
View File
@@ -0,0 +1,33 @@
# n8n — First-Time Setup
## Prerequisites
- DNS: `n8n.<DOMAIN_SUFFIX>` must resolve to the server (wildcard covers this)
- No external dependencies required for default SQLite setup
## Steps
1. **Create the app:**
```bash
abra app new n8n --server <SERVER> --domain n8n.<DOMAIN_SUFFIX> --no-input
```
2. **No secrets needed** for the default SQLite setup. If enabling postgres (`compose.postgres.yml`), generate secrets:
```bash
abra app secret generate n8n.<DOMAIN_SUFFIX> --all -m --no-input
```
3. **Deploy:**
```bash
abra app deploy n8n.<DOMAIN_SUFFIX> --chaos --force --no-input
```
4. **First-time setup:** Open `https://n8n.<DOMAIN_SUFFIX>` in a browser and complete the admin account creation wizard.
## Optional overlays
Edit the app env file to enable optional features:
- **Postgres backend:** Append `:compose.postgres.yml` to `COMPOSE_FILE` and set `SECRET_DB_PASSWORD_VERSION=v1`
- **SSO (traefik-forward-auth):** Append `:compose.sso.yml` to `COMPOSE_FILE`
- **Basic auth:** Append `:compose.basicauth.yml` to `COMPOSE_FILE` and set `N8N_BASIC_AUTH_ACTIVE=true`, `N8N_BASIC_AUTH_USER=username`, `SECRET_ADMIN_PASSWORD_VERSION=v1`
+16
View File
@@ -0,0 +1,16 @@
# n8n Tests
## Target
- **URL:** https://n8n.<DOMAIN_SUFFIX>
## Automated Checks
- `health_check.py` — Confirms the instance is reachable and returns HTTP 200.
## Manual Verification
1. Open `https://n8n.<DOMAIN_SUFFIX>` in a browser.
2. Confirm the n8n setup/login page loads without errors.
3. Complete the admin account creation wizard if first time.
4. Create a simple workflow and verify it executes successfully.
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env python3
"""Health check for n8n."""
import argparse
import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..'))
from utils.tests.helpers import http_get, resolve_domain
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--domain', default=os.environ.get('TEST_DOMAIN'))
args = parser.parse_args()
domain = args.domain or resolve_domain('n8n')
url = f"https://{domain}"
print(f"Checking n8n at {url} ...")
status, _ = http_get(url)
if status == 200:
print(f"PASS: n8n returned HTTP {status}")
else:
print(f"FAIL: n8n returned HTTP {status} (expected 200)")
sys.exit(1)
if __name__ == '__main__':
main()
+15
View File
@@ -0,0 +1,15 @@
# n8n Upstream
## Main Project
- **Repository:** https://github.com/n8n-io/n8n
- **Releases:** https://github.com/n8n-io/n8n/releases
- **Website:** https://n8n.io
- **Docs:** https://docs.n8n.io
## Images
| Service | Image | Release Notes |
|---------|-------|---------------|
| app | `n8nio/n8n` | https://github.com/n8n-io/n8n/releases |
| db (optional) | `postgres` | https://www.postgresql.org/docs/release/ |