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:
@@ -0,0 +1 @@
|
||||
name = "n8n"
|
||||
@@ -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`
|
||||
@@ -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.
|
||||
@@ -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()
|
||||
@@ -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/ |
|
||||
Reference in New Issue
Block a user