Auf welche Anleitung beziehst Du dich konkret?
Da kann ich doch evtl. aus dem Compose File *.yml den entsprechenden MariaDB Teil entnehmen?
Wenn ich andauernd neue Anleitungen nehme, komme ich zu nichts.
Wie baue ich die Variable ein?
Auf welche Anleitung beziehst Du dich konkret?
Da kann ich doch evtl. aus dem Compose File *.yml den entsprechenden MariaDB Teil entnehmen?
Wenn ich andauernd neue Anleitungen nehme, komme ich zu nichts.
Wie baue ich die Variable ein?
nein. das ist ja dein fehler. du kopierst einfach das beispiel aus der mariadb anleitung auf docker hub. ohne zu beachten, dass es nur ein beispiel ist.
die dateien in meiner anleitung funktionieren genauso. wenn du was löscht, ohne zu wissen, was dann passiert, wird es nicht funktionieren.
Ok, deine Anleitung muss ich mir übersetzen.
Da sind vier Dateien —>
Datei 1 (Link korrigiert)
https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/apache/docker-compose.yml#L25
dort musst du hier —>
Datei 2
https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/apache/docker-compose.yml
und hier —>
Datei 3
https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/apache/docker-compose.yml#L26)
deine Domain eintragen. hier —>
Datei 4
https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/apache/docker-compose.yml#L27)
Sind Probleme zu erwarten, wenn ich Anstelle der Domain eine IP-Adresse oder eine kostenfreie Subdomain verwende?
Unter dem ersten Link finde ich mehr als vier Dateien.
Oder stimmt der Link nicht? Link wurde korrigiert.
- VIRTUAL_HOST=
- LETSENCRYPT_HOST=
- LETSENCRYPT_EMAIL=
Was habe ich da konkret und wie einzutragen?
Antwort:
https://github.com/nginx-proxy/acme-companion
Beispiel:
$ docker run --detach \
--name your-proxied-app \
--env "VIRTUAL_HOST=subdomain.yourdomain.tld" \
--env "LETSENCRYPT_HOST=subdomain.yourdomain.tld" \
nginx
Warum habel alle 4 Dateien die gleiche Bezeichnung “docker-compose.yml”?
Antwort: Weil es 4 verschiedene System sind?
@Reiner_Nippes
Mit deiner Anleitung, auch übersetzt komme nicht klar.
Hast Du evtl. eine docker-compose.yml Mustervorlage für mich, wo
die erforderlichen Eintragungen vorhanden und markiert sind?
Vorlage
Datei3
https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/apache/docker-compose.yml
docker-compose.yml
version: '3'
services:
db:
image: mariadb:10.5
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=geheimpasswort
env_file:
- db.env
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html
environment:
- VIRTUAL_HOST=nc-kay.dynv6.net
- LETSENCRYPT_HOST=nc-kay.dynv6.net
- LETSENCRYPT_EMAIL=nc-kay@posteo.org
- MYSQL_HOST=db
- REDIS_HOST=redis
env_file:
- db.env
depends_on:
- db
- redis
networks:
- proxy-tier
- default
cron:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
proxy:
build: ./proxy
restart: always
ports:
- 80:80
- 443:443
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
volumes:
- certs:/etc/nginx/certs:ro
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- proxy-tier
letsencrypt-companion:
image: nginxproxy/acme-companion
restart: always
volumes:
- certs:/etc/nginx/certs
- acme:/etc/acme.sh
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- proxy-tier
depends_on:
- proxy
# self signed
# omgwtfssl:
# image: paulczar/omgwtfssl
# restart: "no"
# volumes:
# - certs:/certs
# environment:
# - SSL_SUBJECT=servhostname.local
# - CA_SUBJECT=my@example.com
# - SSL_KEY=/certs/servhostname.local.key
# - SSL_CSR=/certs/servhostname.local.csr
# - SSL_CERT=/certs/servhostname.local.crt
# networks:
# - proxy-tier
volumes:
db:
nextcloud:
certs:
acme:
vhost.d:
html:
networks:
proxy-tier:
Fehlermeldung:
docker-compose -f /home/ubuntu/docker-compose.yml up -d
ERROR: Couldn't find env file: /home/ubuntu/db.env
Versuch neu mit:
docker-compose.yml
version: '3'
services:
db:
image: mariadb:10.5
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=geheimpasswort
env_file:
- db.env
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html
environment:
- VIRTUAL_HOST=nckay.dynv6.net
- LETSENCRYPT_HOST=nckay.dynv6.net
- LETSENCRYPT_EMAIL=kay@posteo.org
- MYSQL_HOST=db
- REDIS_HOST=redis
env_file:
- db.env
depends_on:
- db
- redis
networks:
- proxy-tier
- default
cron:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
proxy:
build: ./proxy
restart: always
ports:
- 80:80
- 443:443
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
volumes:
- certs:/etc/nginx/certs:ro
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- proxy-tier
letsencrypt-companion:
image: nginxproxy/acme-companion
restart: always
volumes:
- certs:/etc/nginx/certs
- acme:/etc/acme.sh
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- proxy-tier
depends_on:
- proxy
# self signed
# omgwtfssl:
# image: paulczar/omgwtfssl
# restart: "no"
# volumes:
# - certs:/certs
# environment:
# - SSL_SUBJECT=servhostname.local
# - CA_SUBJECT=my@example.com
# - SSL_KEY=/certs/servhostname.local.key
# - SSL_CSR=/certs/servhostname.local.csr
# - SSL_CERT=/certs/servhostname.local.crt
# networks:
# - proxy-tier
volumes:
db:
nextcloud:
certs:
acme:
vhost.d:
html:
networks:
proxy-tier:
docker-compose -f /home/ubuntu/docker-compose.yml up -d
Gleicher Fehler
ERROR: Couldn't find env file: /home/ubuntu/db.env
Was mache ich falsch?
Diese Anleitung funktioniert:
Install Nextcloud with Docker Compose
Posted on [20/02/2022]
https://jommy.net/install-nextcloud-with-docker-compose/
version: '2'
services:
db:
image: mariadb:10.5
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- /home/dock/nextcloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=nextclouddb
- MYSQL_PASSWORD=nextclouddb
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
restart: unless-stopped
app:
image: nextcloud
restart: always
ports:
- 8081:80
links:
- db
volumes:
- /home/dock/nextcloud/nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=nextclouddb
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
restart: unless-stopped
docker-compose up -d
So sieht das System jetzt aus:
https://i.imgur.com/J154mnK.jpg
Aus der Nextcloud-GUI entnommen:
---
Nextcloud
Version:
Nextcloud Hub II (23.0.2)
---
VPS auf Oracle Ubuntu 20.04 basierend
Betriebssystem: Linux 5.11.0-1028-oracle x86_64
Prozessor: AMD EPYC 7551 32-Core Processor (2 cores)
Speicher: 967.00 MB
---
PHP
8.0.16
Arbeitspeicher-Grenzwert: 512 MB
Maximale Ausführungszeit: 3600
Maximale Größe zum Hochladen: 512 MB
---
Datenbank MariaDB
mysql
10.5.13
Größe: 2,1 MB
---
Expose your Nextcloud to the internet – Nginx Proxy host config:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_pass http://localhost:5001;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Port 8081;
proxy_set_header Forwarded "for=$remote_addr;proto=$scheme";
proxy_set_header Host $host;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass_header Authorization;
proxy_request_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_ssl_session_reuse off;
fastcgi_param HTTPS on;
fastcgi_param REQUEST_SCHEME https;
}
Was bedeutet das?
Was habe ich damit zu tun?
Untergrundinformationen zur Anleitung zuvor "Posted on [20/02/2022]"
Basishostsystem: Ubuntu 20.04
docker -v
Docker version 20.10.12, build e91ed57
docker-compose -v
docker-compose version 1.26.0, build d4451659
#################################
#################################
#################################
Docker Container Nextcloud
cat /etc/debian_version
Debian 11.02
erstellt aus:
https://github.com/nextcloud/docker/blob/ababef74e96d028e67361ab097ca1a9e9e9919ec/23/apache/Dockerfile
Docker Container MariaDB
cat /etc/debian_version
bullseye/sid
vermutlich aus dem Dockerfile erstellt:
https://github.com/MariaDB/mariadb-docker/blob/8414e4ff9ebff49f28148a860d85131e11c049c6/10.5/Dockerfile
Warum wird in den Dockerfile auf Ubuntu Focal verwiesen, bzw. wieso ist die Info “bullseye/sid Version” abweichend?
Grundsatzfrage:
Wie finde ich “ohne” Trial and Error die passenden kompatiblen Container aus?
Die mit Alpine erstellten Image sollte man wohl meiden.
Welche Kombinationen sind von den Developern getestet bzw. werden von diesen selbst genutzt?
Beide verwendeten Docker Images basieren auf dem Ubuntu Stack (siehe Portainer Screenshot).
Wie hätte ich das ohne Portainer herausfinden können?
Edit: Die Fragen werden sich bestimmt später mit zunehmenden Wissen selbst beantworten.
Ich bedanke mich bei allen.
Der nächste Schritt wird vermutlich sein das funktionierende System mit Letsencrypt und Traefik aufzurüsten.
Dazu werde ich dann einen neuen Thread aufmachen.
Oder ich finde eine Anleitung dazu.
MfG
nc-kay
da muss beim übersetzen was schiefgegangen sein.
der erste link der anleitung führt zu einem ordner auf github mit zwei dateien und einem ordner mit nochmal zwei dateien. sind vier dateien.
nein. wie du richtig erkannt hast, ist das nur eine datei. beim “übersetzen” ist dir aber ein fehler unterlaufen. zum beispiel fehlt in dem zweiten link deiner liste am ende das “#+zeilennummer”.
ja natürlich geht das nicht, weil letsencrypt keine zertifakte für ip adressen ausstellt.
die frage kann man so nicht beantworten. aber geh’ mal davon aus, dass auch das nicht funktioniert, solange die domain nicht dir gehört. gehört dir die domain, kannst du beliebige zertifikate ausstellen.
ok. hatte vergessen zu schreiben, dass du alle vier dateien in der selben ordnerstruktur runterladen musst. also die beiden dateien im ordner proxy müssen auch bei dir wieder im ordner proxy sein.
aber dir ist nicht aufgefallen, dass in dem ordner eine datei mit dem namen db.env
existiert? das das die datei ist, die laut fehlermeldung nicht gefunden wird. das der letzte link in meiner anleitung genau auf diese datei zeigt und dir sagt, dass du in dieser datei in zeile 1 ein beliebiges, sicheres password eingeben sollst. eine aufforderung in einer datei etwas zu ändern bedeutet für dich nicht, dass man sie runterladen muss?
das wurde dir in dem youtube video erklärt. das sind die fundamente von docker. d.h. wenn man docker soweit verstanden hat, dass man es einsetzen kann, auch im hobby bereich, stellen sich einem solche frage nicht.
und man zieht dann auch nicht solche schlussfolgerungen.
stimmt. gern geschehen.
nein. jede menge youtube videos zum thema docker schauen.
meine anleitung funktioniert.
docker-compose.yaml
services:
reverse-proxy:
image: traefik:v2.6
container_name: traefik
....
# Let's Encrypt
- "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true"
- "--certificatesresolvers.letsencryptresolver.acme.email=youremail@domain"
- "--certificatesresolvers.letsencryptresolver.acme.storage=/etc/traefik/acme.json"
nextcloud-app:
image: nextcloud:23.0.2
....
labels:
- traefik.http.routers.<name of the container>.tls=true
- traefik.http.routers.<name of the container>.tls.certresolver=letsencryptresolver
Dokumentation: https://doc.traefik.io/traefik/https/acme/
FORSCHUNG
Warum hast Du dein ssl Zerfifikat nicht mit dem Dockercontainer linuxserver/SWAG erstellt?
Welche Gründe haben dagegen gesprochen?
https://hub.docker.com/r/linuxserver/swag
SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let’s Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let’s Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.
https://hub.docker.com/_/traefik
Mit ist der Unterschied zwischen deiner Traefiklösung und SWAG nicht klar.
Was kann SWAG mehr oder besser oder warum “formerly known as letsencrypt”?
Welches coturn Docker Image nutzt Du?
Ein Verified_Publisher oder Official_Image finde ich bei hub.docker nicht gefunden.
Fragen zu Schaubild von @wwe
Du hast einen Hardwareserver auf dem ein Linux OS installiert, auf dem nutzt Du Docker Container für Treafik, Collabora, Coturn und das PI-Hole (OT fürNextcloud)?
Auf diesem Server hast Du zwei Virtuelle Maschinen für deine Nextcloud Instanzen installiert. sind auf deinen “SRV” Instanzen mariadb, redis auch Container oder sind diese Dienste nativ installiert?
Was ist dort “push”?
Ein ganz schönes Hammersystem hast Du da.
MfG
nc-kay
ich kenne SWAG nicht… ich habe damals mehrere Tutorials angeschaut und traefik sah für mich am elgantesten aus. Es gibt viele Varianten für Reverse Proxy: Apache, Nginx, traefik HAproxy usw… jede wird eingesetzt, wie immer hat ein System hier oder da Vorteile gegeüber anderen… Grundsätzlich empfehle ich “nimm was du kennst” und wenn du nichts kennst verwende das was du von der Dokumentation am besten verstehst…
das sind alle Docker Dienste - was du als “virtuelle Maschinen” bezeichnest sind getrennte docker-compose files/instanzen (man könnte alles in ein Monster docker-compose file schreben). Ich kann sie damit unabhängig managen, updaten, neu starten usw.
notify_push: files-high-performance-back-end es gibt auch ein How-To thread hier… finde ich gerade nicht.
Welche Linux-System ist das Grundsystem für deine Docker Container?
Getting Started with Fedora CoreOS
Fedora CoreOS is an automatically-updating, minimal operating system for running containerized workloads securely and at scale. It is currently available on multiple platforms, with more coming soon.
Hast Du schon mal ein speziell für Docker gehärtetes Linuxsystem z. B. Fedora CorOS in Erwägung gezogen?
Nach einer schnellen, unkomplizierten und flexiblen Installation lässt sich Fedora CoreOS komplett wartungsfrei betreiben.
https://de.linuxteaching.com/article/top_minimal_container_operating_systems_for_running_kubernetes
Das ist bei deinem Vor-Know-How (alles Docker Container) vermutlich nur ein kleiner Schritt.
MfG
nc-kay
Schaubild - srv
/srv
Von: services (Dienste); Verzeichnisstruktur noch nicht genau spezifiziert; soll Daten der Dienste enthalten; unter Ubuntu in der Regel leer.
Edit: 17:23 Docker root vom * 25.01.22
oder auch gut
Mein System läuft auf einem normalen Debian… Ich bin nicht sicher ob speziell gehärtete OS für ein privates System notwendig sind. Ich arbeite beruflich mit M$ systemen, so bin ich manchmal froh wenn ich Tastatur und Monitor anschliessen kann und das System mit der GUI troubleshootien kann (auch wenn es nur einmal notwendig war). “härtung” oder erhöhte Sicherheit im Allgemeinen bedeutet automatisch gewisse Einschränkungen und reduzierter Komfort - ich tendiere für mich zum Komfort und bilde mir gar nicht erst ein dass ich ein Absolut sicheres System bauen kann - wenn NSA oder BND drauf wollen, dann kommen sie auch drauf… mir reicht es wenn automatisierte Angriffe und Script-Kiddies draussen bleiben…
wer so etwas behauptet ist hat entweder keine Ahnung oder ist ein Lügner. Ein System zu betreiben bedeutet immer Aufwand und sei es nur regelmässig nach dem Rechten zu sehen um sicher zu sein dass die Automatismen wie gewünscht funktionieren…