refactor: update project references from Agathos to Ouranos across documentation and configuration files
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Service Documentation Template
|
||||
|
||||
This is a template for documenting services deployed in the Agathos sandbox. Copy this file and replace placeholders with service-specific information.
|
||||
This is a template for documenting services deployed in the Ouranos sandbox. Copy this file and replace placeholders with service-specific information.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Ansible Project Structure - Best Practices
|
||||
|
||||
This document describes the clean, maintainable Ansible structure implemented in the Agathos project. Use this as a reference template for other Ansible projects.
|
||||
This document describes the clean, maintainable Ansible structure implemented in the Ouranos project. Use this as a reference template for other Ansible projects.
|
||||
|
||||
## Overview
|
||||
|
||||
@@ -661,17 +661,17 @@ casdoor_s3_region: "us-phoenix-1"
|
||||
**OCI Vault Organization**:
|
||||
```
|
||||
OCI Compartment: production
|
||||
├── Vault: agathos-databases
|
||||
├── Vault: ouranos-databases
|
||||
│ ├── Secret: postgres-admin-password
|
||||
│ └── Secret: casdoor-db-password
|
||||
│
|
||||
├── Vault: agathos-services
|
||||
├── Vault: ouranos-services
|
||||
│ ├── Secret: casdoor-s3-access-key
|
||||
│ ├── Secret: casdoor-s3-secret-key
|
||||
│ ├── Secret: casdoor-s3-bucket
|
||||
│ └── Secret: openwebui-db-password
|
||||
│
|
||||
└── Vault: agathos-integrations
|
||||
└── Vault: ouranos-integrations
|
||||
├── Secret: apikey-openai
|
||||
└── Secret: apikey-anthropic
|
||||
```
|
||||
@@ -713,7 +713,7 @@ ansible-playbook remove_s3.yml -e bucket_name=casdoor -e service_name=casdoor
|
||||
- Incus CLI must be configured and accessible
|
||||
|
||||
**What Gets Created**:
|
||||
1. Incus storage bucket in project `agathos`, pool `default`
|
||||
1. Incus storage bucket in project `ouranos`, pool `default`
|
||||
2. Admin access key for the bucket
|
||||
3. Encrypted vault entries: `vault_<service>_s3_access_key`, `vault_<service>_s3_secret_key`, `vault_<service>_s3_bucket`
|
||||
|
||||
@@ -764,5 +764,5 @@ src: "{{playbook_dir}}/{{inventory_hostname_short}}/config.j2"
|
||||
---
|
||||
|
||||
**Last Updated**: December 2025
|
||||
**Project**: Agathos Infrastructure
|
||||
**Project**: Ouranos Infrastructure
|
||||
**Approval**: Red Panda Approved™
|
||||
|
||||
@@ -98,7 +98,7 @@ No Terraform changes required—AnythingLLM uses port 22084 within Rosalind's ex
|
||||
|
||||
```bash
|
||||
cd ansible
|
||||
source ~/env/agathos/bin/activate
|
||||
source ~/env/ouranos/bin/activate
|
||||
|
||||
# Deploy PostgreSQL database first (if not already done)
|
||||
ansible-playbook postgresql/deploy.yml
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Casdoor SSO Identity Provider
|
||||
|
||||
Casdoor provides Single Sign-On (SSO) authentication for Agathos services. This document covers the design decisions, architecture, and deployment procedures.
|
||||
Casdoor provides Single Sign-On (SSO) authentication for Ouranos services. This document covers the design decisions, architecture, and deployment procedures.
|
||||
|
||||
## Design Philosophy
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ This playbook deploys certbot with the Namecheap DNS plugin for DNS-01 validatio
|
||||
|
||||
### Titania (ouranos.helu.ca)
|
||||
|
||||
Production deployment providing Let's Encrypt certificates for the Agathos sandbox HAProxy reverse proxy.
|
||||
Production deployment providing Let's Encrypt certificates for the Ouranos sandbox HAProxy reverse proxy.
|
||||
|
||||
| Setting | Value |
|
||||
|---------|-------|
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Daedalus — Deployment Requirements
|
||||
|
||||
All infrastructure runs within the Agathos Incus sandbox. Hosts are resolved via DNS using the `.incus` suffix.
|
||||
All infrastructure runs within the Ouranos Incus sandbox. Hosts are resolved via DNS using the `.incus` suffix.
|
||||
|
||||
---
|
||||
|
||||
@@ -24,7 +24,7 @@ backend daedalus
|
||||
**Requirements:**
|
||||
- ACL entry in the HAProxy `frontend https` block
|
||||
- Backend definition with health check on `/api/health`
|
||||
- Casdoor application configured for `daedalus.ouranos.helu.ca` (same pattern as other Agathos services)
|
||||
- Casdoor application configured for `daedalus.ouranos.helu.ca` (same pattern as other Ouranos services)
|
||||
- TLS certificate covering `daedalus.ouranos.helu.ca` (wildcard or SAN)
|
||||
|
||||
---
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<div class="container-fluid">
|
||||
<nav class="navbar navbar-dark bg-dark rounded mb-4">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="agathos.html">
|
||||
<a class="navbar-brand" href="ouranos.html">
|
||||
<i class="bi bi-arrow-left"></i> Back to Main Documentation
|
||||
</a>
|
||||
<div class="navbar-nav d-flex flex-row">
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="agathos.html"><i class="bi bi-house-door"></i> Main Documentation</a></li>
|
||||
<li class="breadcrumb-item"><a href="ouranos.html"><i class="bi bi-house-door"></i> Main Documentation</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">Style Guide</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Gitea MCP Server - Red Panda Approved™
|
||||
|
||||
Model Context Protocol (MCP) server providing programmatic access to Gitea repositories, issues, and pull requests. Deployed as a Docker container on Miranda (MCP Docker Host) in the Agathos sandbox.
|
||||
Model Context Protocol (MCP) server providing programmatic access to Gitea repositories, issues, and pull requests. Deployed as a Docker container on Miranda (MCP Docker Host) in the Ouranos sandbox.
|
||||
|
||||
---
|
||||
|
||||
@@ -612,7 +612,7 @@ The Gitea MCP Server exposes these resources and tools via the MCP protocol:
|
||||
|
||||
The assistant can interact with Gitea repositories through natural language:
|
||||
- "List all repositories in the organization"
|
||||
- "Show me open issues in the agathos repository"
|
||||
- "Show me open issues in the ouranos repository"
|
||||
- "Create an issue about improving documentation"
|
||||
- "Search for 'ansible' in repository code"
|
||||
|
||||
@@ -714,10 +714,10 @@ rate({job="syslog", container_name="gitea-mcp"} |= "error" [5m])
|
||||
|
||||
## Related Documentation
|
||||
|
||||
### Agathos Infrastructure
|
||||
- [Agathos Overview](agathos.md) - Complete infrastructure documentation
|
||||
### Ouranos Infrastructure
|
||||
- [Ouranos Overview](ouranos.md) - Complete infrastructure documentation
|
||||
- [Ansible Best Practices](ansible.md) - Deployment patterns and structure
|
||||
- [Miranda Host](agathos.md#miranda---mcp-docker-host) - MCP Docker host details
|
||||
- [Miranda Host](ouranos.md#miranda---mcp-docker-host) - MCP Docker host details
|
||||
|
||||
### Related Services
|
||||
- [Gitea Service](gitea.md) - Gitea server deployment and configuration
|
||||
@@ -753,7 +753,7 @@ docker inspect gitea-mcp | jq '.[0].Config.Image'
|
||||
---
|
||||
|
||||
**Last Updated**: February 2026
|
||||
**Project**: Agathos Infrastructure
|
||||
**Project**: Ouranos Infrastructure
|
||||
**Host**: Miranda (MCP Docker Host)
|
||||
**Status**: Red Panda Approved™ ✓
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ The name "act" comes from [nektos/act](https://github.com/nektos/act), an open-s
|
||||
4. Logs and status are streamed back to Gitea in real time
|
||||
5. The container is destroyed after the job completes
|
||||
|
||||
### Architecture in Agathos
|
||||
### Architecture in Ouranos
|
||||
|
||||
```
|
||||
Gitea (Rosalind) Act Runner (Puck)
|
||||
|
||||
@@ -58,7 +58,7 @@ The GitHub MCP server requires a **read-only Personal Access Token (PAT)** with
|
||||
|
||||
1. Navigate to GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
|
||||
2. Click "Generate new token (classic)"
|
||||
3. Set name: `Agathos GitHub MCP - Read Only`
|
||||
3. Set name: `Ouranos GitHub MCP - Read Only`
|
||||
4. Set expiration: Custom or 90 days (recommended)
|
||||
5. Select scopes: `public_repo`, `read:org`, `read:user`
|
||||
6. Click "Generate token"
|
||||
@@ -158,7 +158,7 @@ client = openai.OpenAI(
|
||||
### Deploy GitHub MCP Server
|
||||
|
||||
```bash
|
||||
cd /home/robert/dv/agathos/ansible
|
||||
cd /home/robert/dv/ouranos/ansible
|
||||
ansible-playbook github_mcp/deploy.yml
|
||||
```
|
||||
|
||||
@@ -319,7 +319,7 @@ Useful Loki queries in Grafana:
|
||||
## Security Considerations
|
||||
|
||||
✔ **Read-Only PAT** - Server uses minimal scopes, cannot modify repositories
|
||||
✔ **Network Isolation** - Only accessible within Agathos network (miranda.incus)
|
||||
✔ **Network Isolation** - Only accessible within Ouranos network (miranda.incus)
|
||||
✔ **Vault Storage** - PAT stored encrypted in Ansible Vault
|
||||
✔ **No Public Exposure** - MCP endpoint not exposed to internet
|
||||
⚠️ **PAT Rotation** - Consider rotating PAT every 90 days
|
||||
@@ -340,5 +340,5 @@ Useful Loki queries in Grafana:
|
||||
- [GitHub MCP Server Repository](https://github.com/github/github-mcp-server)
|
||||
- [Model Context Protocol Specification](https://modelcontextprotocol.io/)
|
||||
- [MCPO Documentation](https://github.com/open-webui/mcpo)
|
||||
- [Agathos README](../../README.md)
|
||||
- [Agathos Sandbox Documentation](../sandbox.html)
|
||||
- [Ouranos README](../../README.md)
|
||||
- [Ouranos Sandbox Documentation](../sandbox.html)
|
||||
|
||||
@@ -419,4 +419,4 @@ If this fails, check:
|
||||
- [Grafana MCP Server](https://github.com/grafana/mcp-grafana) — Upstream project
|
||||
- [Model Context Protocol Specification](https://modelcontextprotocol.io/)
|
||||
- [Ansible Practices](ansible.md)
|
||||
- [Agathos Overview](agathos.md)
|
||||
- [Ouranos Overview](ouranos.md)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
[Home Assistant](https://github.com/home-assistant/core) is an open-source home automation platform. In the Agathos sandbox it runs as a native Python application inside a virtual environment, backed by PostgreSQL for state recording and fronted by HAProxy for TLS termination.
|
||||
[Home Assistant](https://github.com/home-assistant/core) is an open-source home automation platform. In the Ouranos sandbox it runs as a native Python application inside a virtual environment, backed by PostgreSQL for state recording and fronted by HAProxy for TLS termination.
|
||||
|
||||
**Host:** Oberon
|
||||
**Role:** container_orchestration
|
||||
|
||||
@@ -84,7 +84,7 @@ Valid values for `pull`:
|
||||
|
||||
They are independent mechanisms. The Ansible `pull` parameter runs a pull step before compose up, regardless of what the compose file says. Belt and suspenders.
|
||||
|
||||
# Agathos Fix
|
||||
# Ouranos Fix
|
||||
|
||||
Applied to `ansible/gitea_mcp/` as the first instance. The same pattern should be applied to any service using mutable tags (`:latest`, `:stable`, etc.).
|
||||
|
||||
|
||||
@@ -56,8 +56,8 @@ If you need to fix this manually (e.g., before running Terraform/Ansible):
|
||||
|
||||
```bash
|
||||
# On the HOST (pan.helu.ca), not in the container
|
||||
incus config set <container-name> raw.lxc "lxc.apparmor.profile=unconfined" --project agathos
|
||||
incus restart <container-name> --project agathos
|
||||
incus config set <container-name> raw.lxc "lxc.apparmor.profile=unconfined" --project ouranos
|
||||
incus restart <container-name> --project ouranos
|
||||
```
|
||||
|
||||
## Step 2: Disable AppArmor for Docker inside the container
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
MCPO is an OpenAI-compatible proxy that aggregates multiple Model Context Protocol (MCP) servers behind a single HTTP endpoint. It acts as the central MCP gateway for the Agathos sandbox, exposing tools from 13 MCP servers through a unified REST API with interactive Swagger documentation.
|
||||
MCPO is an OpenAI-compatible proxy that aggregates multiple Model Context Protocol (MCP) servers behind a single HTTP endpoint. It acts as the central MCP gateway for the Ouranos sandbox, exposing tools from 13 MCP servers through a unified REST API with interactive Swagger documentation.
|
||||
|
||||
**Host:** miranda.incus
|
||||
**Role:** MCP Docker Host
|
||||
@@ -300,4 +300,4 @@ ssh miranda.incus "ss -tlnp | grep 25530"
|
||||
- **MCPO Repository**: https://github.com/nicobailey/mcpo
|
||||
- **MCP Specification**: https://modelcontextprotocol.io/
|
||||
- [Ansible Practices](ansible.md)
|
||||
- [Agathos Overview](agathos.md)
|
||||
- [Ouranos Overview](ouranos.md)
|
||||
|
||||
@@ -280,4 +280,4 @@ See [Neo4j MCP documentation](#neo4j-mcp-servers) for deployment details.
|
||||
- [APOC Library Documentation](https://neo4j.com/labs/apoc/)
|
||||
- [Terraform Practices](../terraform.md)
|
||||
- [Ansible Practices](../ansible.md)
|
||||
- [Sandbox Overview](../agathos.html)
|
||||
- [Sandbox Overview](../ouranos.html)
|
||||
|
||||
@@ -229,7 +229,7 @@ Nextcloud requires a PostgreSQL database on Portia. This is automatically create
|
||||
resource "incus_storage_volume" "nextcloud_data" {
|
||||
name = "nextcloud-data"
|
||||
pool = "default"
|
||||
project = "agathos"
|
||||
project = "ouranos"
|
||||
config = { size = "100GB" }
|
||||
}
|
||||
```
|
||||
|
||||
@@ -8,7 +8,7 @@ It acts as a reverse proxy that requires users to authenticate via Casdoor befor
|
||||
accessing the upstream service.
|
||||
|
||||
This document describes the generic approach for adding OAuth2-Proxy authentication
|
||||
to any service in the Agathos infrastructure.
|
||||
to any service in the Ouranos infrastructure.
|
||||
|
||||
## Architecture
|
||||
|
||||
|
||||
@@ -459,7 +459,7 @@ terraform apply
|
||||
|
||||
# Start all containers
|
||||
cd ../ansible
|
||||
source ~/env/agathos/bin/activate
|
||||
source ~/env/ouranos/bin/activate
|
||||
ansible-playbook sandbox_up.yml
|
||||
|
||||
# Deploy all services
|
||||
|
||||
@@ -185,7 +185,7 @@ terraform apply
|
||||
|
||||
# Start all containers
|
||||
cd ../ansible
|
||||
source ~/env/agathos/bin/activate
|
||||
source ~/env/ouranos/bin/activate
|
||||
ansible-playbook sandbox_up.yml
|
||||
|
||||
# Deploy all services
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
PostgreSQL 17 serves as the primary relational database engine for the Agathos sandbox. There are **two separate deployment playbooks**, each targeting a different host with a distinct purpose:
|
||||
PostgreSQL 17 serves as the primary relational database engine for the Ouranos sandbox. There are **two separate deployment playbooks**, each targeting a different host with a distinct purpose:
|
||||
|
||||
| Playbook | Host | Purpose |
|
||||
|----------|------|---------|
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
RabbitMQ 3 (management-alpine) serves as the central message broker for the Agathos sandbox, providing AMQP-compliant message queuing for asynchronous communication between services. The deployment includes the management web interface for monitoring and administration.
|
||||
RabbitMQ 3 (management-alpine) serves as the central message broker for the Ouranos sandbox, providing AMQP-compliant message queuing for asynchronous communication between services. The deployment includes the management web interface for monitoring and administration.
|
||||
|
||||
**Host:** Oberon (container_orchestration)
|
||||
**Role:** Message broker for event-driven architectures
|
||||
@@ -542,5 +542,5 @@ Each service operates in its own virtual host:
|
||||
---
|
||||
|
||||
**Last Updated**: February 12, 2026
|
||||
**Project**: Agathos Infrastructure
|
||||
**Project**: Ouranos Infrastructure
|
||||
**Approval**: Red Panda Approved™
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
smtp4dev is a fake SMTP server for development and testing. It accepts all incoming email without delivering it, capturing messages for inspection via a web UI and IMAP client. All services in the Agathos sandbox that send email (Casdoor, Gitea, etc.) are wired to smtp4dev so email flows can be tested without a real mail server.
|
||||
smtp4dev is a fake SMTP server for development and testing. It accepts all incoming email without delivering it, capturing messages for inspection via a web UI and IMAP client. All services in the Ouranos sandbox that send email (Casdoor, Gitea, etc.) are wired to smtp4dev so email flows can be tested without a real mail server.
|
||||
|
||||
**Host:** Oberon (container_orchestration)
|
||||
**Web UI Port:** 22085 → `https://smtp4dev.ouranos.helu.ca`
|
||||
@@ -48,7 +48,7 @@ smtp4dev connection details are defined once in `ansible/inventory/group_vars/al
|
||||
| `smtp_host` | `oberon.incus` | SMTP server hostname |
|
||||
| `smtp_port` | `22025` | SMTP server port |
|
||||
| `smtp_from` | `noreply@ouranos.helu.ca` | Default sender address |
|
||||
| `smtp_from_name` | `Agathos` | Default sender display name |
|
||||
| `smtp_from_name` | `Ouranos` | Default sender display name |
|
||||
|
||||
Any service that needs to send email references these shared variables rather than defining its own SMTP config. This means switching to a real SMTP server only requires changing `group_vars/all/vars.yml`.
|
||||
|
||||
@@ -115,7 +115,7 @@ The Casdoor email provider is declared in `ansible/casdoor/init_data.json.j2` an
|
||||
"port": 22025,
|
||||
"disableSsl": true,
|
||||
"fromAddress": "noreply@ouranos.helu.ca",
|
||||
"fromName": "Agathos"
|
||||
"fromName": "Ouranos"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -28,9 +28,9 @@ Never rely solely on implicit resource ordering for critical infrastructure. Cod
|
||||
|
||||
## Repository Strategy
|
||||
|
||||
### Agathos (Sandbox)
|
||||
### Ouranos (Sandbox)
|
||||
|
||||
Agathos is the **Sandbox repository** — isolated, safe for external demos, and uses local state.
|
||||
Ouranos is the **Sandbox repository** — isolated, safe for external demos, and uses local state.
|
||||
|
||||
| Aspect | Decision |
|
||||
|--------|----------|
|
||||
@@ -78,7 +78,7 @@ A pattern is a good module candidate when it meets these criteria:
|
||||
|
||||
### The `incus_host` Module
|
||||
|
||||
The standard container provisioning pattern extracted from Agathos:
|
||||
The standard container provisioning pattern extracted from Ouranos:
|
||||
|
||||
**Inputs:**
|
||||
- `hosts` — Map of host definitions (name, role, image, devices, config)
|
||||
@@ -123,7 +123,7 @@ Key differences in tfvars:
|
||||
|
||||
## State Management
|
||||
|
||||
### Sandbox (Agathos)
|
||||
### Sandbox (Ouranos)
|
||||
|
||||
Local state is acceptable because:
|
||||
- Environment is ephemeral
|
||||
@@ -154,10 +154,10 @@ terraform {
|
||||
|
||||
### Terraform → DHCP/DNS
|
||||
|
||||
The `agathos_inventory` output provides host information for DHCP/DNS provisioning:
|
||||
The `ouranos_inventory` output provides host information for DHCP/DNS provisioning:
|
||||
|
||||
1. Terraform creates containers with cloud-init
|
||||
2. `agathos_inventory` output includes hostnames and IPs
|
||||
2. `ouranos_inventory` output includes hostnames and IPs
|
||||
3. MAC addresses registered in DHCP server
|
||||
4. DHCP server creates DNS entries (`hostname.incus` domain)
|
||||
5. Ansible uses DNS names for host connectivity
|
||||
@@ -185,7 +185,7 @@ ubuntu:
|
||||
The `ssh_key_update.sh` script demonstrates proper integration:
|
||||
|
||||
```bash
|
||||
terraform output -json agathos_inventory | jq -r \
|
||||
terraform output -json ouranos_inventory | jq -r \
|
||||
'.uranian_hosts.hosts | to_entries[] | "\(.key) \(.value.ipv4)"' | \
|
||||
while read hostname ip; do
|
||||
ssh-keyscan -H "$ip" >> ~/.ssh/known_hosts
|
||||
@@ -198,7 +198,7 @@ terraform output -json agathos_inventory | jq -r \
|
||||
All infrastructure changes flow through this pipeline:
|
||||
|
||||
```
|
||||
Agathos (Sandbox)
|
||||
Ouranos (Sandbox)
|
||||
↓ Validate pattern works
|
||||
↓ Extract to module if reusable
|
||||
Dev
|
||||
@@ -213,7 +213,7 @@ Prod
|
||||
↓ Deploy from tested artifacts
|
||||
```
|
||||
|
||||
**Critical:** Nothing starts in Prod. Every change originates in Agathos, is validated through the pipeline, and only then deployed to production.
|
||||
**Critical:** Nothing starts in Prod. Every change originates in Ouranos, is validated through the pipeline, and only then deployed to production.
|
||||
|
||||
### Promotion Includes
|
||||
|
||||
@@ -224,12 +224,12 @@ When promoting Terraform changes, always update corresponding:
|
||||
|
||||
## Output Conventions
|
||||
|
||||
### `agathos_inventory`
|
||||
### `ouranos_inventory`
|
||||
|
||||
The primary output for documentation and DNS integration:
|
||||
|
||||
```hcl
|
||||
output "agathos_inventory" {
|
||||
output "ouranos_inventory" {
|
||||
description = "Host inventory for documentation and DHCP/DNS provisioning"
|
||||
value = {
|
||||
uranian_hosts = {
|
||||
|
||||
Reference in New Issue
Block a user