TEAMS ist ein Einrichtungsskript fuer einen Team-Server auf Debian. Per SSH einloggen, eine Zeile ausfuehren, den Rest regelt TEAMS.

Jedes Modul ist ein eigenes Shell-Skript – lesbar, pruefbar, nachvollziehbar. Keine Magie, kein Overengineering. Admins sollen jede Zeile verstehen koennen.

Verwandtes Projekt: SARBS – Suckless Auto-Rice Bootstrapping Scripts

Konzept


  • Ein Skript pro Dienst – modularer Aufbau, chronologisch abarbeitbar
  • POSIX-Shell – kein Bash-ismus, laeuft ueberall
  • Menschlich lesbar – kommentiert, keine cleveren Einzeiler
  • Debian-fokussiert – apt, systemd, keine Abstraktionsschichten
  • Idempotent – mehrfach ausfuehrbar ohne Seiteneffekte
  • Config im Repo – Konfiguration wird manuell gepflegt, nicht generiert

Dienste


Modul Dienst Status
00-base.sh System-Grundkonfiguration, Updates, Pakete geplant
01-firewall.sh UFW Firewall-Regeln geplant
02-ssh.sh SSH-Haertung, Key-Only, Fail2ban geplant
03-nginx.sh Nginx Reverse Proxy + Let’s Encrypt geplant
04-wireguard.sh WireGuard VPN geplant
05-forgejo.sh Forgejo Git-Plattform geplant
06-nextcloud.sh Nextcloud (Dateien, Kalender, Kontakte) geplant
07-matrix.sh Matrix/Synapse + Element Chat geplant
08-mail.sh Postfix + Dovecot Mailserver geplant

Schnellstart


Ein Befehl auf einem frischen Debian-Server:

curl -sL https://sarbs.xyz/teams.sh | sh

Was passiert:

  1. Erkennt automatisch curl | sh und startet sich interaktiv neu
  2. Git und curl werden installiert
  3. TEAMS-Repository wird nach /root/teamserver geklont
  4. Alle in config.sh aktivierten Module werden ausgefuehrt

Konfiguration

Die config.sh liegt im Repo und wird dort gepflegt:

DOMAIN="example.org"
SSH_PORT=2222
ENABLE_BASE=true
ENABLE_FIREWALL=true
ENABLE_SSH=true
ENABLE_NGINX=true
ENABLE_FORGEJO=false

Module mit true werden ausgefuehrt, mit false uebersprungen.

Erneut ausfuehren

cd /root/teamserver
./teams.sh                        # Alle aktivierten Module
./teams.sh --module 05-forgejo    # Einzelnes Modul
./teams.sh --list                 # Module auflisten
./teams.sh --check                # Systemcheck (Dry-Run)

Voraussetzungen


  • Debian 12 (Bookworm) oder neuer
  • Root-Zugang per SSH
  • Eigene Domain mit DNS-Zugriff

Philosophie


Dieses Projekt folgt der Suckless-Philosophie:

  • Einfachheit – Shell-Skripte statt Ansible/Terraform/Docker
  • Transparenz – Jede Zeile macht genau eine Sache
  • Modularitaet – Nimm was du brauchst, lass den Rest weg
  • Dokumentation im Code – Kommentare erklaeren das Warum, nicht das Was

Verzeichnisstruktur


teamserver/
├── teams.sh              # Hauptskript - Bootstrap + Modul-Ausfuehrung
├── config.sh             # Zentrale Konfiguration (im Repo gepflegt)
├── lib/                  # Hilfsfunktionen (Logging, Checks, Farben)
│   └── common.sh
├── modules/              # Ein Skript pro Dienst
│   ├── 00-base.sh
│   ├── 01-firewall.sh
│   └── ...
├── conf/                 # Konfigurations-Vorlagen fuer Dienste
│   ├── nginx/
│   ├── wireguard/
│   └── ...
├── Makefile              # check, install, list, test
├── LICENSE               # MIT
└── README.md

MIT Lizenz | Issues auf Codeberg