# 📋 AI-Impress Complete Server Administration Report

> **Generated:** $(date '+%Y-%m-%d %H:%M:%S')  
> **Server:** ai-impress-prod  
> **IP:** 51.89.231.46  
> **Purpose:** Full system overview for non-technical administrators

---

## 📑 TABLE OF CONTENTS

1. [Quick Summary](#quick-summary) - See everything at a glance
2. [System Health](#system-health) - Is everything working?
3. [All Services](#all-services) - What's installed and running
4. [Websites & Access](#websites--access) - URLs and how to login
5. [Databases](#databases) - Where data is stored
6. [Storage & Backups](#storage--backups) - Disk space and backups
7. [Networks](#networks) - How containers communicate
8. [Secrets & Passwords](#secrets--passwords) - Where to find credentials
9. [How To Guides](#how-to-guides) - Step-by-step instructions
10. [Troubleshooting](#troubleshooting) - Fix common problems
11. [System Architecture](#system-architecture) - How everything connects

---

## 1️⃣ QUICK SUMMARY

### System Overview

| **Metric** | **Value** |
|------------|-----------|
| **Hostname** | ai-impress-prod |
| **Uptime** | up 4 hours, 5 minutes |
| **OS** | Ubuntu 24.04.3 LTS |
| **Kernel** | 6.8.0-87-generic |
| **Memory** | 10Gi / 57Gi |
| **Disk (/)** | 42G / 387G (11%) |
| **Docker Containers** | 50 running / 50 total |
| **Unhealthy Containers** | 2 |
| **Databases Size** | 71M
N/A |
| **Backups Size** | 6.6G |
| **Docker Networks** | 13 |


---

## 2️⃣ SYSTEM HEALTH

### Critical Services Status

| Service | Status | Health | Notes |
|---------|--------|--------|-------|
| **traefik** | 🟢 Running | 
no healthcheck | - |
| **postgres-main** | 🟢 Running | healthy | - |
| **redis-main** | 🟢 Running | healthy | - |
| **vault** | 🔴 Unhealthy | unhealthy | - |

### Website Status

| Website | Status | Response Time |
|---------|--------|---------------|
| https://wiki.ai-impress.com | ✅ Online | 0.105815s |
| https://n8n.ai-impress.com | ✅ Online | 0.066157s |
| https://marketing.ai-impress.com | ❌ Offline | HTTP 000 |
| https://odoo.ai-impress.com | ✅ Online | 0.078556s |
| https://auth.ai-impress.com | ✅ Online | 0.095615s |

---

## 3️⃣ ALL SERVICES

### Docker Containers


#### 🟡 **alertmanager**
- **Status:** Up 31 minutes
- **Image:** `prom/alertmanager:latest`
- **Memory:** 20.66MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 alertmanager`
- **Restart:** `docker restart alertmanager`


#### 🟢 **authentik-postgres**
- **Status:** Up 4 hours (healthy)
- **Image:** `postgres:16-alpine`
- **Memory:** 185.4MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 authentik-postgres`
- **Restart:** `docker restart authentik-postgres`


#### 🟢 **authentik-proxy**
- **Status:** Up 2 hours (healthy)
- **Image:** `ghcr.io/goauthentik/proxy:2025.10`
- **Memory:** 15.41MiB 
- **Restarts:** 6
- **Logs:** `docker logs -f --tail 100 authentik-proxy`
- **Restart:** `docker restart authentik-proxy`


#### 🟢 **authentik-redis**
- **Status:** Up 4 hours (healthy)
- **Image:** `redis:alpine`
- **Memory:** 29.14MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 authentik-redis`
- **Restart:** `docker restart authentik-redis`


#### 🟢 **authentik-server**
- **Status:** Up 2 hours (healthy)
- **Image:** `ghcr.io/goauthentik/server:2025.10`
- **Memory:** 528MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 authentik-server`
- **Restart:** `docker restart authentik-server`


#### 🟢 **authentik-worker**
- **Status:** Up 2 hours (healthy)
- **Image:** `ghcr.io/goauthentik/server:2025.10`
- **Memory:** 495.2MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 authentik-worker`
- **Restart:** `docker restart authentik-worker`


#### 🟡 **blackbox-exporter**
- **Status:** Up 4 hours
- **Image:** `prom/blackbox-exporter:latest`
- **Memory:** 35.75MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 blackbox-exporter`
- **Restart:** `docker restart blackbox-exporter`


#### 🟢 **cadvisor**
- **Status:** Up 31 minutes (healthy)
- **Image:** `gcr.io/cadvisor/cadvisor:v0.47.0`
- **Memory:** 219.4MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 cadvisor`
- **Restart:** `docker restart cadvisor`


#### 🟡 **documenso**
- **Status:** Up 4 hours
- **Image:** `documenso-custom:latest`
- **Memory:** 271.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 documenso`
- **Restart:** `docker restart documenso`


#### 🟡 **evolution-api**
- **Status:** Up 4 hours
- **Image:** `atendai/evolution-api:latest`
- **Memory:** 190MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 evolution-api`
- **Restart:** `docker restart evolution-api`


#### 🟡 **grafana**
- **Status:** Up 19 minutes
- **Image:** `grafana/grafana:latest`
- **Memory:** 99.74MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 grafana`
- **Restart:** `docker restart grafana`


#### 🟡 **loki**
- **Status:** Up 4 hours
- **Image:** `grafana/loki:3.5.7`
- **Memory:** 174.2MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 loki`
- **Restart:** `docker restart loki`


#### 🔴 **mautic-odoo-sync-v2**
- **Status:** Up 4 hours (unhealthy)
- **Image:** `python:3.11-slim`
- **Memory:** 38.72MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 mautic-odoo-sync-v2`
- **Restart:** `docker restart mautic-odoo-sync-v2`


#### 🟡 **mautic-sync-webhook**
- **Status:** Up 4 hours
- **Image:** `python:3.11-slim`
- **Memory:** 49MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 mautic-sync-webhook`
- **Restart:** `docker restart mautic-sync-webhook`


#### 🟡 **n8n-shared**
- **Status:** Up 4 hours
- **Image:** `n8nio/n8n:latest`
- **Memory:** 256.5MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 n8n-shared`
- **Restart:** `docker restart n8n-shared`


#### 🟡 **n8n-worker-1**
- **Status:** Up 4 hours
- **Image:** `n8nio/n8n:latest`
- **Memory:** 166.9MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 n8n-worker-1`
- **Restart:** `docker restart n8n-worker-1`


#### 🟡 **n8n-worker-2**
- **Status:** Up 4 hours
- **Image:** `n8nio/n8n:latest`
- **Memory:** 181.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 n8n-worker-2`
- **Restart:** `docker restart n8n-worker-2`


#### 🟡 **n8n-worker-3**
- **Status:** Up 4 hours
- **Image:** `n8nio/n8n:latest`
- **Memory:** 208.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 n8n-worker-3`
- **Restart:** `docker restart n8n-worker-3`


#### 🟡 **n8n-worker-4**
- **Status:** Up 4 hours
- **Image:** `n8nio/n8n:latest`
- **Memory:** 164.7MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 n8n-worker-4`
- **Restart:** `docker restart n8n-worker-4`


#### 🟡 **node-exporter**
- **Status:** Up 31 minutes
- **Image:** `prom/node-exporter:latest`
- **Memory:** 9.445MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 node-exporter`
- **Restart:** `docker restart node-exporter`


#### 🟡 **odoo**
- **Status:** Up 4 hours
- **Image:** `odoo:17`
- **Memory:** 328.7MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 odoo`
- **Restart:** `docker restart odoo`


#### 🟢 **outline**
- **Status:** Up 4 hours (healthy)
- **Image:** `outlinewiki/outline:latest`
- **Memory:** 620.9MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 outline`
- **Restart:** `docker restart outline`


#### 🟡 **pgadmin**
- **Status:** Up 4 hours
- **Image:** `dpage/pgadmin4:9.9`
- **Memory:** 209.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 pgadmin`
- **Restart:** `docker restart pgadmin`


#### 🟡 **portainer**
- **Status:** Up 4 hours
- **Image:** `portainer/portainer-ce:latest`
- **Memory:** 84.54MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 portainer`
- **Restart:** `docker restart portainer`


#### 🟢 **postgres-main**
- **Status:** Up 4 hours (healthy)
- **Image:** `postgres:16-alpine`
- **Memory:** 396.8MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 postgres-main`
- **Restart:** `docker restart postgres-main`


#### 🟢 **postiz-postgres**
- **Status:** Up 4 hours (healthy)
- **Image:** `postgres:16-alpine`
- **Memory:** 55.95MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 postiz-postgres`
- **Restart:** `docker restart postiz-postgres`


#### 🟢 **postiz-redis**
- **Status:** Up 4 hours (healthy)
- **Image:** `redis:7-alpine`
- **Memory:** 15.8MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 postiz-redis`
- **Restart:** `docker restart postiz-redis`


#### 🟡 **postiz**
- **Status:** Up 4 hours
- **Image:** `ghcr.io/gitroomhq/postiz-app:latest`
- **Memory:** 1.083GiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 postiz`
- **Restart:** `docker restart postiz`


#### 🟡 **prometheus**
- **Status:** Up 31 minutes
- **Image:** `prom/prometheus:latest`
- **Memory:** 854.8MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 prometheus`
- **Restart:** `docker restart prometheus`


#### 🟡 **promtail**
- **Status:** Up 4 hours
- **Image:** `grafana/promtail:3.5.7`
- **Memory:** 130.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 promtail`
- **Restart:** `docker restart promtail`


#### 🟢 **rabbitmq**
- **Status:** Up 4 hours (healthy)
- **Image:** `rabbitmq:3.13-management-alpine`
- **Memory:** 165.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 rabbitmq`
- **Restart:** `docker restart rabbitmq`


#### 🟢 **realtime-dev.supabase-realtime**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/realtime:v2.51.11`
- **Memory:** 262.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 realtime-dev.supabase-realtime`
- **Restart:** `docker restart realtime-dev.supabase-realtime`


#### 🟢 **redis-main**
- **Status:** Up 4 hours (healthy)
- **Image:** `redis:7-alpine`
- **Memory:** 4.469MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 redis-main`
- **Restart:** `docker restart redis-main`


#### 🟢 **supabase-analytics**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/logflare:1.22.6`
- **Memory:** 675.3MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-analytics`
- **Restart:** `docker restart supabase-analytics`


#### 🟢 **supabase-auth**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/gotrue:v2.180.0`
- **Memory:** 9.156MiB 
- **Restarts:** 1
- **Logs:** `docker logs -f --tail 100 supabase-auth`
- **Restart:** `docker restart supabase-auth`


#### 🟢 **supabase-db**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/postgres:15.8.1.085`
- **Memory:** 166.6MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-db`
- **Restart:** `docker restart supabase-db`


#### 🟡 **supabase-edge-functions**
- **Status:** Up 4 hours
- **Image:** `supabase/edge-runtime:v1.69.6`
- **Memory:** 98.07MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-edge-functions`
- **Restart:** `docker restart supabase-edge-functions`


#### 🟢 **supabase-imgproxy**
- **Status:** Up 4 hours (healthy)
- **Image:** `darthsim/imgproxy:latest`
- **Memory:** 97.02MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-imgproxy`
- **Restart:** `docker restart supabase-imgproxy`


#### 🟢 **supabase-kong**
- **Status:** Up 4 hours (healthy)
- **Image:** `kong:latest`
- **Memory:** 1.414GiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-kong`
- **Restart:** `docker restart supabase-kong`


#### 🟢 **supabase-meta**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/postgres-meta:v0.91.6`
- **Memory:** 125.9MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-meta`
- **Restart:** `docker restart supabase-meta`


#### 🟢 **supabase-pooler**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/supavisor:2.7.0`
- **Memory:** 236.2MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-pooler`
- **Restart:** `docker restart supabase-pooler`


#### 🟡 **supabase-rest**
- **Status:** Up 4 hours
- **Image:** `postgrest/postgrest:latest`
- **Memory:** 32.9MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-rest`
- **Restart:** `docker restart supabase-rest`


#### 🟢 **supabase-storage**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/storage-api:v1.28.0`
- **Memory:** 193.9MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-storage`
- **Restart:** `docker restart supabase-storage`


#### 🟢 **supabase-studio**
- **Status:** Up 4 hours (healthy)
- **Image:** `supabase/studio:2025.10.01-sha-8460121`
- **Memory:** 241.7MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-studio`
- **Restart:** `docker restart supabase-studio`


#### 🟢 **supabase-vector**
- **Status:** Up 4 hours (healthy)
- **Image:** `timberio/vector:latest-alpine`
- **Memory:** 98.73MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 supabase-vector`
- **Restart:** `docker restart supabase-vector`


#### 🟡 **traefik**
- **Status:** Up 4 hours
- **Image:** `traefik:latest`
- **Memory:** 38.81MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 traefik`
- **Restart:** `docker restart traefik`


#### 🟢 **uptime-kuma**
- **Status:** Up 4 hours (healthy)
- **Image:** `louislam/uptime-kuma:latest`
- **Memory:** 187.3MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 uptime-kuma`
- **Restart:** `docker restart uptime-kuma`


#### 🟢 **vaultwarden**
- **Status:** Up 4 hours (healthy)
- **Image:** `vaultwarden/server:1.30.5-alpine`
- **Memory:** 50.92MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 vaultwarden`
- **Restart:** `docker restart vaultwarden`


#### 🔴 **vault**
- **Status:** Up 4 hours (unhealthy)
- **Image:** `0b85ae483e53`
- **Memory:** 197.3MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 vault`
- **Restart:** `docker restart vault`


#### 🟡 **wikijs**
- **Status:** Up 4 hours
- **Image:** `ghcr.io/requarks/wiki:2`
- **Memory:** 178.3MiB 
- **Restarts:** 0
- **Logs:** `docker logs -f --tail 100 wikijs`
- **Restart:** `docker restart wikijs`


---

## 4️⃣ WEBSITES & ACCESS

### Public Services

| Service | URL | Purpose | Auth Method |
|---------|-----|---------|-------------|
| **Wiki** | https://wiki.ai-impress.com | Documentation & Knowledge Base | Authentik SSO |
| **N8N** | https://n8n.ai-impress.com | Workflow Automation | Authentik SSO |
| **Mautic** | https://marketing.ai-impress.com | Marketing Automation | Direct Login |
| **Odoo** | https://odoo.ai-impress.com | ERP & Business Management | Direct Login |
| **Authentik** | https://auth.ai-impress.com | Single Sign-On (SSO) | Direct Login |
| **Grafana** | https://grafana.ai-impress.com | Monitoring Dashboard | Admin Only |
| **Portainer** | https://portainer.ai-impress.com | Docker Management UI | Admin Only |
| **Vault UI** | https://vault-admin.ai-impress.com | Secrets Management | Root Token |
| **Uptime Kuma** | https://uptime.ai-impress.com | Uptime Monitoring | Direct Login |

### How to Login

#### Get Password from Vault

```bash
# SSH to server
ssh ubuntu@51.89.231.46

# Get Vault token
export VAULT_TOKEN=$(cat /opt/00-infrastructure/vault/.vault-token)

# Get specific password
vault kv get aimpress/<service-name>

# Examples:
vault kv get aimpress/mautic          # Mautic admin password
vault kv get aimpress/odoo            # Odoo admin password
vault kv get aimpress/authentik       # Authentik admin password
vault kv get aimpress/postgres/admin  # PostgreSQL admin password
```

#### Get All Credentials

```bash
# List all secrets
vault kv list aimpress/

# Get specific service secrets
vault kv get -format=json aimpress/<service> | jq '.data.data'
```


---

## 5️⃣ DATABASES

### Database Location

**All databases are stored in:** `/mnt/psql-data/`


### Database Instances

