114 lines
4.4 KiB
Markdown
114 lines
4.4 KiB
Markdown
# Anleitung für Proxy Server in der FET
|
|
## Überblick
|
|
Der Proxy ist aufgeteilt in zwei Git Projekte auf git.fet.at
|
|
1. [Openresty mit Erweiterungen](https://git.fet.at/andis/openrestyextended)
|
|

|
|
* Der wichtigste Teil ist *nginx.conf* diese wird ins Dockerimage gepackt. Diese sollte nicht zwischendurch verändert werden.
|
|
* *Dockerfile* in diesem Dockerfile sind alle Schritte für die Vorbereitung des Images mit openresty.
|
|
2. [Konfiguration & Doku](https://git.fet.at/andis/triton2_config/)
|
|
|
|

|
|
Wichtige Teile sind:
|
|
|
|
* *conf.d* enthält die Konfiguation der Seiten und wird nach /etc/nginx/conf.d kopiert / gemappt
|
|
* *snippets* enthält snippets die für die kürzere Konfiguration genutzt werden können. Diese sind fix ins Dockerimage zu kopieren. In dem Ornder im Image sind noch andere Config Files. ggf. können ergänzende Dateien in einen SubFolder gemappt werden
|
|
* *Dockerfile* das Dockerfile erzeugt das Image, das bei docker-compose genutzt werden soll. Achtung, dieses Dockerfile nutzt das Image, dass im ersten Projekt erstellt wird als Basis. Wenn die Docker registry nicht zur Verfügung steht müssen beide neu erzeugt werden.
|
|
|
|
|
|
## Installation
|
|
|
|
### Docker
|
|
Damit dieses Projekt genutzt werden kann ist eine docker Installation erforderlich. Dafür einfach Google mit Docker-ce + dem jeweiligen Betriebssystem nutzen.
|
|
|
|
Für Debian
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install \
|
|
ca-certificates \
|
|
curl \
|
|
gnupg \
|
|
lsb-release
|
|
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
|
|
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install docker-ce docker-ce-cli containerd.io
|
|
|
|
Überprüfen ob das geklappt hat mit:
|
|
sudo docker run hello-world
|
|
|
|
|
|
### Variante: Deployen via Portainer
|
|
Der Vorteil das Projekt so zu deployen ist, dass es sehr schnell geht und ein grafisches Interface zur Verfügung steht.
|
|
|
|
#### Portainer installieren
|
|
Falls Portainer noch gar nicht installiert ist:
|
|
[Portainer from scratch](https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux)
|
|
|
|
Falls Portainer schon installiert ist und die neue Docker Umgebung verwaltet werden soll
|
|
[Portainer Agent installieren](https://docs.portainer.io/v/ce-2.9/start/install/agent/docker/linux)
|
|
|
|
|
|
#### Stack deployen
|
|

|
|

|
|
Mit diesem Befehl wird direkt das file "docker-compose.yml" deployed.
|
|
Alernativ kann auch der Inhalt aus dem docker-compose.yml in den Editor in Portainer kopiert werden.
|
|
|
|
|
|
|
|
### Variante diekt clonen + docker-compose
|
|
|
|
|
|
git clone https://git.fet.at/andis/triton2_config
|
|
|
|
docker-compose up
|
|
|
|
|
|
### Updates
|
|
Wenn der Code gepusht wird und keine Fehler in der Konfiguration sind wird das neueste Template auf die Docker registry gepusht.
|
|
[Jenkins Pipeline](jenkins.fet.at)
|
|
|
|
dann kann einfach mit docker das neueste Image deployd werden. Besonders mit Portainer ist das einfach.
|
|
|
|
#### Bind
|
|
Wenn das Projekt auf dem Server gecloned ist kann auch die conf.d mit bind in den Container gemountet werden. Achtung Änderungen am Image können dann weniger leicht deployed werden.
|
|
# bei der Produktivvariante macht es Sinn hier einen Ordner zu mappen
|
|
# zB: /srv/conf.d/:/etc/nginx/conf.d/
|
|
|
|
|
|

|
|
Wir haben bis jetzt
|
|
|
|
|
|
|
|
|
|
## Einrichten einer externen Seite:
|
|
In diesem Projekt sind mehrere Snippets vorbereitet, die genutzt werden können um eine externe Seite einzurichten.
|
|
Für eine einfache externe Seite verwenden wir "default_proxy"
|
|
|
|
Snippet default_proxy.conf
|
|
location / {
|
|
include proxy.conf;
|
|
include secure.conf;
|
|
proxy_buffering off;
|
|
proxy_pass http://$proxy_host:$proxy_port;
|
|
}
|
|
Die zugehörige Konfiguration sieht so aus:
|
|
server {
|
|
listen 443 ssl;
|
|
server_name fet.at;
|
|
set $proxy_host fetsite21;
|
|
set $proxy_port 8001;
|
|
include ssl.conf;
|
|
include default_proxy.conf;
|
|
proxy_set_header Host fet.at;
|
|
}
|
|
Es ist nicht notwendig, das Zertifiat zu erzeugen oder einen Endpunkt für den Port 80 zu konfigurieren.
|
|
Dies ist bereits in der default.conf erledigt. Das SSL Zertifkat wir bezogen wenn die Url das erste mal aufgerufen wird.
|
|
|
|
|
|
include internal_proxy.conf; |