Files
Key-service-Server/README.md
T
Aiirondev_dev d9b812812f Refactor and streamline project setup and management scripts
- Removed `run.sh` and `test.sh` scripts to simplify the project structure.
- Added `setup-first-install.sh` to handle initial setup tasks with options to skip specific steps.
- Updated `invario-stack-autostart.service` to use `gitea.sh` for starting the stack on boot.
- Removed `start-stack-on-boot.sh` as its functionality is now integrated into the service.
- Enhanced `admin_system.html` with a new live logs panel, including automatic updates and log source selection.
- Improved CSS styles for the new logs panel for better UI consistency.
- Added JavaScript functionality to fetch and display live logs from the server.
2026-04-18 20:09:44 +02:00

4.2 KiB

Key Service Server

Dieses Repository ist auf einen schlanken, Docker-first Betrieb ausgerichtet.

Voraussetzungen

  • Docker Engine + Docker Compose Plugin
  • Nginx
  • OpenSSL
  • Optional: UFW (Ports 80/443 werden bei aktivem UFW automatisch freigegeben)

Script Matrix

Core-Skripte (aktiv)

Setup-Skripte (optional, aktiv)

Legacy-Skripte (entfernt)

  • start-stack-on-boot.sh (durch direkten systemd-ExecStart auf gitea.sh ersetzt)
  • provision_instance.sh im Repo-Root (Duplikat, Website-Version ist Single Source)
  • Website/run.sh (alt, nicht Teil des aktuellen Flows)
  • Website/test.sh (alt, nicht Teil des aktuellen Flows)

Core Betrieb

Docker Services

Datei: gitea.sh

Befehle:

  • sudo ./gitea.sh start
  • sudo ./gitea.sh stop
  • sudo ./gitea.sh restart
  • sudo ./gitea.sh status

Wichtige Ports:

  • Gitea intern: 127.0.0.1:3001
  • Gitea SSH: 2222
  • Website Upstream: 4999

Nginx

Datei: nginx.sh

Befehle:

  • sudo ./nginx.sh apply
  • sudo ./nginx.sh disable
  • sudo ./nginx.sh deactivate

Nginx-Templates:

Inventarsystem Instanzen

Admin-Oberfläche:

  • Route: /admin/instances
  • Menu: Schul-Instanzen

Provisioning-Flow:

  1. Admin wählt Nutzer, Schule, Version und optional Subdomain.
  2. Backend ruft Website/provision_instance.sh auf.
  3. Provisioning installiert release-basiert aus GitHub-Releases.
  4. Wenn verfügbar, wird docker-compose-multitenant.yml bevorzugt genutzt.
  5. Instanzstatus wird in school_instances gespeichert.

Wichtige Website-Variablen:

Berechtigungen für Provisioning:

  • Docker-Zugriff
  • Schreibrechte auf /etc/nginx/sites-available und /etc/nginx/sites-enabled
  • nginx -t und nginx reload/signal-Rechte

Betriebsmodi Website

Beispiel Production:

cd Website
export INSTANCE_PARENT_DOMAIN=example.de
export INSTANCE_WILDCARD_CERT_FILE=/etc/nginx/certs/wildcard.example.de.crt
export INSTANCE_WILDCARD_KEY_FILE=/etc/nginx/certs/wildcard.example.de.key
./launch_prod.sh

Empfohlener Ablauf

  1. sudo ./gitea.sh start
  2. sudo ./nginx.sh apply
  3. sudo ./gitea.sh status

Erstinstallation (automatisiert)

Für eine neue Maschine kann die Erstinstallation in einem Schritt ausgeführt werden:

sudo ./setup-first-install.sh

Standardmäßig macht das Skript:

  1. Startet den Stack über gitea.sh.
  2. Wendet nginx.sh apply an.
  3. Installiert den Hosts-Sync-systemd-Service.
  4. Installiert den Stack-Autostart-systemd-Service.

Optionen:

  • --skip-start
  • --skip-nginx
  • --skip-hosts-sync
  • --skip-autostart