Skip to main content

asgard

Der Host asgard ist der interne Haupserver im deckeigenen Rechenzentrum.

IP: 192.168.0.107

Hostnamen:
  • asgard.maschinendeck.org
  • tuer.maschinendeck.org
  • docs.maschinendeck.org
  • nextcloud.maschinendeck.org
  • api.maschinendeck.org

Spezifikation

CPU

Intel Celeron J4105 CPU, 4 x 1.50GHz

GPU

Intel UHD Graphics 600

RAM

8 Gb, DDR4, 2400 MT/s

Speicher

1 Tb, Intenso SSD SATAIII

Netzwerk

1000BASE-T

OS

Ubuntu 24.04.1 LTS


Aufbau

Der Server läuft vollständig im Dockermodus. Die Konfiguration der Container liegt unter /config, deren Daten unter /data und etwaige Backups der Datenbanken und der in den Containern laufenden Dienste unter /backup.

Die Umgebungsvariablen für einen Container, welche unter Umständen auch Passwörter oder Zugriffstoken enthalten, befinden sich in einer Datei mit dem Namen .env in dem jeweiligen Verzeichnis unter /config.

Stack

Ankommende HTTP-Anfragen werden von einem traefik Reverseproxy entgegengenommen, welcher diese an die unterliegenden Dockercontainer weiterreicht. Der traefik-Container kümmert sich vollautomatisch um die SSL-Zertifikate via Letsencrypt.

Zur Konfiguration von traefik für einen einzelnen Container, muss die docker-compose.yml des Stacks lediglich mit entsprechenden Labels ausgestattet werden. Das Routing auf den exponierten Port geschieht dann automatisch. Hier eine beispielhafte Konfiguration für ein Standardsetup:

services:
  example:
    image: example/example
    container_name: example
    env_file: .env
    expose:
      - 80
    networks:
      - public
      - mysql
    labels:
      - traefik.enable=true
      - traefik.http.routers.example.rule=Host(`example.maschinendeck.org`)
      - traefik.http.routers.example.entrypoints=web
      - traefik.http.routers.example_ssl.rule=Host(`example.maschinendeck.org`)
      - traefik.http.routers.example_ssl.tls=true
      - traefik.http.routers.example_ssl.tls.certresolver=letsencrypt
      - traefik.http.routers.example_ssl.entrypoints=websecure
    restart: unless-stopped

networks:
  public:
    external: true

Der entsprechende Container muss mindestens dieses Set an Labels aufweisen um funktionieren zu können (die Strings example und example_ssl sind für jeden Stack einzigartig zu wählen, müssen also geändert werden). Zusätzlich muss er Zugriff auf das Netzwerk public erhalten und selbstverständlich muss die entsprechende Domain auf den DynDNS des Maschinendeck aufgeschaltet sein.