etc/ssh | ||
script | ||
templates | ||
.gitignore | ||
docker-compose.yml | ||
Dockerfile | ||
README.md | ||
renovate.json | ||
setup.sh |
First Steps
Initiales Setup
Öffne ein Terminal und führe die setup.sh
Datei aus.
Das Script:
- Behebt Berechtigungsprobleme und legt alle nötigen Ordner/Dateien an, die zum starten des Proxies benötigt werden.
- Installiert den
myssh
Befehl nach$HOME/bin
und fügt diesen ggf. zurPATH
variable hinzu - Erstellt SSH Keys für den SSH Docker Container (wenn diese nicht bereits existieren)
- Erstellt und Konfiguriert einen Client SSH Key, dessen public Key wird dem SSH Docker Container hinzugefügt
Starten des Reverse-Proxies
Der Proxy kann über docker compose gestartet werden
docker compose up -d
Proxy Konfiguration
HTTP-Proxy
Hinzufügen von Docker Containern (Hosts)
Container werden automatisch vom reverse proxy/host manager aufgegriffen wenn sie:
- Das Label
local.web.host
gesetzt haben. - Im gleichen Docker-Netzwek (Default:
proxy
) sind.
Einem Container können mehrere Hostnamen vergeben werden indem die gewünschten Adressen Leerzeichen Separiert dem local.web.host
Label hinzugefügt werden.
Optional kann über das Label local.web.port
der gebundene Port gesetzt werden (Default: 80)
SSL Zertifikat Konfiguration
Nach starten des docker containers ist das von Caddy erstellte SSL Zertifikat in ./caddy_data/pki/authorities/local/root.crt
auffindbar.
Relevante Dokumentation:
SQL Proxy
Hinzufügen von DB Docker Containern
Container werden automatisch vom reverse proxy/host manager aufgegriffen wenn sie:
- Die Umgebungsvariable
local.db.type
(mysql
oderpostgres
) undlocal.db.host
gesetzt haben. - Im gleichen Docker-Netzwek (Default:
proxy
) sind.
Optional kann über das Label local.web.port
der gebundene Port gesetzt werden (Default mysql: 3306, Default postgres: 5432)
Label Liste
Erforderlich
local.db.type
- DEFAULT:
unset
- DESCRIPTION: Datenbank Typ. Muss auf
mysql
oderpostgres
gesetzt werden.
- DEFAULT:
local.db.host
- DEFAULT:
unset
- DESCRIPTION: Der Hostname unter dem der Container registriert wird
- DEFAULT:
Optional
local.db.port
- DEFAULT (mysql):
3306
- DEFAULT (postgres):
5432
- DESCRIPTION: Der Datenbank Port des Zielcontainers
- DEFAULT (mysql):
local.db.dbname
- DEFAULT (mysql):
unset
- DEFAULT (postgres):
postgres
- DESCRIPTION: Name der initialen Zieldatenbank
- DEFAULT (mysql):
local.db.user
- DEFAULT:
unset
- DESCRIPTION: Nutzername für den Datenbank Login
- DEFAULT:
local.db.password
- DEFAULT:
unset
- DESCRIPTION: Passwort für den Datenbank Login
- DEFAULT:
Minimale Beispiel-Konfiguration
In diesem Beispiel sind zwei Container, beide sind Teil des proxy
Netzwerks.
Der app
Container hat das Label local.web.host
und wird deshalb als HTTP Proxy Target registriert.
Der db
Container hat die Label local.db.type
und local.db.host
und wird deshalb als SQL Proxy Target registriert.
version: "3.4"
services:
db:
image: mariadb:10.4
labels:
# SQL-Proxy Configuration
# Required labels
local.db.type: "mysql"
local.db.host: "db.myapp.localhost"
# Optional labels
local.db.dbname: "db_name"
local.db.port: "3306"
local.db.user: "db_user"
local.db.password: "db_user_pass"
environment:
MYSQL_DATABASE: db_name
MYSQL_USER: db_user
MYSQL_PASSWORD: db_user_pass
MYSQL_ROOT_PASSWORD: db_root_pass
restart: unless-stopped
volumes:
- db-data:/var/lib/mysql
networks:
- default
- proxy
app:
image: some_base/image
depends_on:
- db
labels:
# HTTP-Proxy Configuration
# Required Label
local.web.host: "myapp.localhost"
# "Optional" Label to set the correct port
local.web.port: "3000"
restart: unless-stopped
networks:
- default
- proxy
networks:
proxy:
name: proxy
external: true
Alternativ kann auch das default Netzwerk Überschrieben werden. Dadurch sind alle Container Teil des Netzwerks.
networks:
default:
name: proxy
external: true
Fortgeschrittene Optionen (für docker compose)
Hostman Script Umgebugsvariablen
DOCKER_SOCK_PATH
- DEFAULT:
"/tmp/docker.sock"
- DESCRIPTION: Docker Socket Pfad
- DEFAULT:
NETWORK_NAME
- DEFAULT:
"proxy"
- DESCRIPTION: Docker netzwerk in dem nach Containern gesucht wird
- DEFAULT:
Template Spezifische Umgebungsvariablen
Caddy
DOCKER_CADDY_NAME
- DEFAULT:
proxy
- DESCRIPTION: Der Caddy Container-/Host-Name unter dem das Caddy Admin Interface erreichbar ist.
- DEFAULT:
DOCKER_CADDY_PORT
- DEFAULT:
2020
- DESCRIPTION: Der Port des Caddy Admin Interfaces.
- DEFAULT:
Hosts
HOST_CONF_PATH
- DEFAULT:
"/config/hosts"
- DESCRIPTION: hosts Datei-Pfad
- DEFAULT:
RESOLVE_DOCKERHOST
- DEFAULT:
false
- DESCRIPTION: Setzt ob IP Addressen in der hosts Datei auf die der Docker Container (true) oder 127.0.0.1 (false) aufgelöst werden.
- DEFAULT:
DOCKER_HOSTNAME_VAR
- DEFAULT:
"LOCAL_WEB_HOST"
(entspricht:local.web.host
) - DESCRIPTION: Docker Container Umgebungsvariable die den Hostnamen bestimmt (das auto generierte Öabel ist lower case und verwendet Punkte statt Unterstriche)
- DEFAULT:
SQLProxy
EXCLUDE_USERPASS
- DEFAULT:
false
- DESCRIPTION: Ob Nutzername und Passwort für die Authentifizierung ausgelassen werden soll.
- DEFAULT:
myssh cli
Der SQL Proxy Client hat folgende Optionen:
ls: Gibt eine Liste an verfügbaren DB Hosts zurück
connect $DB_HOST [-u $USERNAME ] [-p $PASSWORD]: Erstellt einen Tunnel zum DB Host, wenn Nutzername und Passwort angegeben werden wird eine DB Anwendung geöffnet
disconnect: schließt die SSH Multiplex Session und damit auch alle aktuellen Verbindungen
myssh Umgebungsvariablen
SQL_PROXY_HOST
- DEFAULT:
"localhost"
- DESCRIPTION: Setzt den Target Proxy Host
- DEFAULT: