Ist das ganze für eine Produktivumgebung im gewerblichen Umfeld?
Die Docker-compose-nginx.txt benutzt keinen "normalen" nginx Container sondern ein das Open Source Projekt NGINX Proxy Manager.
https://github.com/NginxProxyManager/nginx-proxy-manager
Das Ding funktioniert soweit auch (habe ich privat im Einsatz), aber ich weiß nicht ob man das im "professionellen" Umfeld nutzen sollte. Insbesondere reicht es nicht das ganze hier einmal einzurichten und dann so zu lassen. Webserver müssen regelmäßig auf den neusten Stand gebracht werden, damit keiner etwas zu sehen bekommt was er nicht sollte, d.h. regelmäßige Updates fahren und auch checken ob ein container wie der nginx proxy manager noch geupdatet wird in den kommenden Jahren.
Ich bin kein Profi, das folgende wären meine Gedanken:
Um das ganze zum laufen zu bringen müsstest du einmal den Standardport von vimp ändern, weil der Proxy sämtliche Anfragen auf 80 und 443 beantworten sollte.
Also in der Docker Compose statt
ports:
- "80:80"
einmal bspw.
ports:
- "8080:80"
Für den Nginx Proxy Manager würde ich keine SQL Datenbank verwenden wie bisher versucht wurde, sqlite (standardmäßig) reicht da völlig aus.
Folgendermaßen würde ich das ganze konfigurieren:
version: "3"
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
default:
external: true
name: proxy
Alles anzeigen
VIMP sähe dann so aus:
version: '3'
services:
httpd:
image: registry.vimp.dev/vimp/enterprise:5.2.1-38
container_name: vimp_httpd
restart: always
ports:
- "8080:80"
environment:
- APACHE_SERVER_NAME=localhost
volumes:
- ./config:/var/www/html/config:cached
- ./templates:/var/www/html/templates:cached
- ./userdata:/var/www/html/userdata
links:
- db
depends_on:
- db
db:
image: mariadb:latest
container_name: vimp_db
#command: mysqld --sql_mode="" --character-set-server=utf8 --init-connect='SET NAMES UTF8;'
command: mysqld --sql_mode="IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO"
restart: always
expose:
- 3306
volumes:
- "./vimp4_db:/var/lib/mysql"
environment:
MYSQL_USER: admin
MYSQL_PASSWORD: geheim
MYSQL_ROOT_PASSWORD: geheim
MYSQL_DATABASE: vimp
networks:
default:
external: true
name: proxy
Alles anzeigen
Wichtig ist bei beiden der neue Abschnitt "networks". Durch das Netzwerk "proxy" können die Container ohne Probleme untereinander kommunzieren, sonst gibt es da bei Docker gerne mal verwirrende Fehler.
Vor dem Start der Container einmal
docker network create proxy
ausführen, um das Docker Netzwerk zu erstellen.
Unter der IP deines Servers :81 ist dann die Weboberfläche vom Nginx Proxy Manager erreichbar.
Dort kannst du einen neuen Host hinzufügen (also deine Domain acompanion.net und bei Bedarf auch www.acompanion.net) und unter dem Hostnamen trägst du vimp_httpd ein, als Port den vorher festgelegten 8080. Unter SSL generierst du ein neues Zertifkat (request new certificate) und wählst mindestens Force SSL und HTTP/2.
pasted-from-clipboard.png
Ich würde nicht empfehlen die Nutzeroberfläche auf :81 öffentlich zugänglich zu machen. Generell sollte bei deinem Server nur das offen sein, was auch wirklich offen sein muss. Den Rest würde ich über einen VPN wie Wireguard lösen. Also wirklich nur 80, 443, den SSH-Port und den VPN-Port öffnen.
Da ich den VIMP Container nicht pullen kann, kann ich nicht selbst testen ob das ganze funktioniert, aber wenn man es richtig macht vermutlich schon.
Bankverbindung für die Lösung kann dann per PM erfragt werden