# Ausführen Um die Anwendung lokal auszuführen, können die folgenden Befehle verwendet werden. ``` export GOPATH=/tmp source bootstrap.sh authelia-scripts suites setup Standalone ``` Nun sollte der "Haupt-Enpunkt" unter `https://home.example.com:8080` und die API unter `https://authelia.example.com:9091` erreichbar sein. Achtung: es wird ein selbstsigniertes Zertifikat verwendet! Mithilfe der Hot-Reload kann jetzt gecoded werden. --- Nach der Entwicklung kann die Testumgebung durch den folgenden Befehl wieder zurückgesetzt werden. ``` go run ./cmd/authelia-scripts/ suites teardown Standalone ``` ## Benutzerdefinierte Zertifikate Um ein benutzerdefiniertes Zertifikat für die Ausführung zu verwenden, muss die Datai `public.backend.crt` und `private.bakend.pem` unter [diesem](/internal/suites/common/pki/) Verzeichnis abgeändert werden. Um die Gültigkeit zu testen, kann der folgendende Befehl ausgeführt werden. ``` curl https://auth.rpjosh.de:9091 --connect-to 'auth.rpjosh.de:9091:authelia.example.com:9091' ``` ## Externe erreichbarkeit Im aktuellen Zustand sind die Endpunkte nur unter den Docker internen IP-Adressen erreichbar. Daher muss noch ein NAT Regel angelegt werden. ``` ip=$(ping -c 1 authelia.example.com | gawk -F'[()]' '/PING/{print $2}') sudo iptables -t nat -A PREROUTING -p tcp --dport 9091 -d 192.168.0.15 -j DNAT --to-destination 192.168.240.50:9091 -m comment --comment "Authelia-Test" sudo iptables -t nat -A PREROUTING -p tcp --dport 9092 -d 192.168.0.15 -j DNAT --to-destination 192.168.240.50:9092 -m comment --comment "Authelia-Test" sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 9091 -j DNAT --to-destination 192.168.240.50:9091 ``` # Customizations Für das Starten des *gRPC* Servers müssen die folgenden Abhängigkeiten installiert werden. ``` go get github.com/envoyproxy/go-control-plane go get github.com/envoyproxy/go-control-plane/envoy/config/core/v3 go get github.com/gogo/googleapis/google/rpc go get google.golang.org/grpc ``` ## Konfiguration ändern Wenn die Konfiguration geändert wurde, müssen die Keys zur Validierung wieder erneut gebaut werden. ``` go run ./cmd/authelia-gen code keys ``` ## Mocks abgeändert Wenn interfaces von den Mocks geändert werden, muss folgendes wieder ausgeführt werden: ``` export PATH=$PATH:$(go env GOPATH)/bin go generate ./... ``` ## Bauen Um ein Docker Image für authelia zu bauen, müssen die folgenden Befehle ausgeführt werden. ```sh # Dieser Befehle funktionieren aktuell nicht authelia-scripts docker build authelia-scripts build # => Manuell bauen export CC=musl-gcc authelia-scripts build cp -r dist/public_html internal/server/ go build -buildmode=pie -ldflags "-linkmode=external -s -w" -trimpath -buildmode=pie -o authelia ./cmd/authelia mv authelia authelia-linux-amd64-musl # Build docker image docker build --tag git.rpjosh.de/rpjosh/authelia/authelia:4.38.0-dev . docker push git.rpjosh.de/rpjosh/authelia/authelia:4.38.0-dev # Cleanup rm -rf internal/server/public_html/ ./authelia-linux-amd64-musl ``` # gRCP Um einen gRCP Endpunkt nutzen zu können, brauch mein eine *.proto* Datei. Für Envoy sieht diese wie in [dieser Datei](/ext-auth.proto) folgendermaßen aus.