# Self-Hosted Infrastructure > Allt är self-hosted. Inga externa beroenden. --- ## Filosofi **"Om vi inte kontrollerar infrastrukturen, kontrollerar vi inte produkten."** Allt körs på egna servrar. Inga externa AI-tjänster. Inga externa lagringstjänster. Inga externa monitoreringstjänster. --- ## Infrastruktur ### Core Services | Tjänst | Teknik | Port | Beskrivning | |---|---|---|---| | **Database** | PostgreSQL + PostGIS | 5432 | Huvuddatabas | | **Cache** | Redis | 6379 | Cache + Message broker | | **Object Storage** | MinIO | 9000/9001 | S3-kompatibel lagring | | **Search** | Elasticsearch | 9200 | Fulltextsökning | | **Message Queue** | RabbitMQ | 5672/15672 | Advanced messaging | ### Monitoring & Logging | Tjänst | Teknik | Port | Beskrivning | |---|---|---|---| | **Metrics** | Prometheus | 9090 | Metrikinsamling | | **Dashboards** | Grafana | 3000 | Visualisering | | **Log Aggregation** | Loki | 3100 | Logghantering | | **Log Collector** | Promtail | 9080 | Loggskrapning | ### Networking | Tjänst | Teknik | Port | Beskrivning | |---|---|---|---| | **Reverse Proxy** | Nginx | 80/443 | Lastbalansering | | **VPN/Mesh** | Headscale | 8080 | Zero-trust nätverk | ### DevOps | Tjänst | Teknik | Port | Beskrivning | |---|---|---|---| | **CI/CD** | Jenkins | 8081 | Bygg och deploy | | **Container Registry** | Docker Registry | 5000 | Image-lagring | | **Backup** | Restic | — | Krypterade backups | ### Application | Tjänst | Teknik | Port | Beskrivning | |---|---|---|---| | **API** | FastAPI | 8000 | Huvudapplikation | | **Worker** | Celery | — | Bakgrundsjobb | | **Scheduler** | Celery Beat | — | Schemalagda uppgifter | --- ## Snabbstart ```bash # 1. Klona repo git clone cd iom # 2. Konfigurera miljö cp .env.example .env # Redigera .env med dina värden # 3. Starta allt docker-compose -f docker-compose.selfhosted.yml up -d # 4. Verifiera docker-compose -f docker-compose.selfhosted.yml ps # 5. Skapa första användare curl -X POST http://localhost:8000/auth/register \ -d '{"username": "admin", "password": "***", "role": "admin"}' ``` --- ## Tjänster ### MinIO (Object Storage) - **URL:** http://localhost:9000 - **Console:** http://localhost:9001 - **Buckets:** iom-images, iom-exports - **Användning:** Bilder, exports, backups ### Elasticsearch (Search) - **URL:** http://localhost:9200 - **Användning:** Fulltextsökning, logganalys ### RabbitMQ (Message Queue) - **URL:** http://localhost:15672 - **Användning:** Advanced messaging, event-driven arkitektur ### Headscale (VPN) - **URL:** http://localhost:8080 - **Användning:** Zero-trust nätverk för noder ### Jenkins (CI/CD) - **URL:** http://localhost:8081 - **Användning:** Bygg, test, deploy ### Registry (Container Registry) - **URL:** http://localhost:5000 - **Användning:** Docker image-lagring --- ## Backup ```bash # Manuell backup ./scripts/backup.sh # Automatisk backup (dagligen) # Redigerar crontab crontab -e # Lägg till: 0 2 * * * /path/to/iom/scripts/backup.sh ``` --- ## Övervakning ### Grafana Dashboards - **System Overview:** CPU, minne, disk - **API Metrics:** Requests, latency, errors - **Business Metrics:** Observations, signals, decisions - **AI Metrics:** Model accuracy, predictions ### Alerts - API nere - Hög felprocent - Disk full - Minne lågt - Database connections hög --- ## Säkerhet ### Nätverk - All kommunikation inom Docker-nätverk - Nginx som enda exponerad tjänst - Headscale för zero-trust VPN ### Autentisering - JWT tokens - Role-based access control - API keys för tjänster ### Kryptering - Restic för krypterade backups - HTTPS via Nginx - PostgreSQL SSL --- ## Skalning ### Horisontell skalning ```bash # Skala API docker-compose -f docker-compose.selfhosted.yml up -d --scale api=3 # Skala workers docker-compose -f docker-compose.selfhosted.yml up -d --scale worker=5 ``` ### Vertikal skalning - Öka resurser för PostgreSQL - Mer minne för Elasticsearch - Större disk för MinIO --- ## Felsökning ```bash # Loggar docker-compose -f docker-compose.selfhosted.yml logs -f api docker-compose -f docker-compose.selfhosted.yml logs -f worker # Status docker-compose -f docker-compose.selfhosted.yml ps # Resurser docker stats # Nätverk docker network inspect iom-network ``` --- ## Sammanfattning **Komplett self-hosted infrastruktur:** - ✅ Database (PostgreSQL + PostGIS) - ✅ Cache (Redis) - ✅ Object Storage (MinIO) - ✅ Search (Elasticsearch) - ✅ Message Queue (RabbitMQ) - ✅ Monitoring (Prometheus + Grafana) - ✅ Logging (Loki + Promtail) - ✅ VPN (Headscale) - ✅ CI/CD (Jenkins) - ✅ Registry (Docker Registry) - ✅ Backup (Restic) - ✅ API (FastAPI) - ✅ Workers (Celery) **Inga externa beroenden. Full kontroll.**