Skip to content
This repository was archived by the owner on Sep 29, 2021. It is now read-only.

Commit 0ebf97a

Browse files
author
Peter Siering
committed
Erste Fassung
0 parents  commit 0ebf97a

4 files changed

Lines changed: 136 additions & 0 deletions

File tree

README.MD

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
2+
Dieses Projektchen ergänzt einen [Artikel zu Nextcloud aus c’t 11/2020](https://www.heise.de/select/ct/2020/11). Für die Inbetriebnahme der Nextcloud-Umgebung
3+
benötigen Sie:
4+
5+
* ein System mit Docker und docker-compose
6+
7+
* eine Domain nebst Host wie nextcloud.example.com
8+
9+
* eine E-Mail-Adresse ich@example.com
10+
11+
* nextcloud.example.com muss auf die IP-Adresse des Systems zeigen
12+
13+
Um diesen Ausgangszustand herzustellen, ersetzen Sie in der Datei nextcloud.yml und static.yml jeweils nextcloud.example.com (kommt mehrfach vor) durch Ihren
14+
Host(-namen) und die E-Mail-Adresse ich@example.com in static.yml durch Ihre Adresse.
15+
16+
Ändern Sie unbedingt auch das Passwort für den Nextcloud-Admin-Benutzer (ncadmin). Es ist vorbelegt als "12345678x!". Ändern Sie besser auch gleich noch den
17+
Namen dieses Benutzers auf einen für Sie passenden.
18+
19+
Die Datei acme.json braucht exakt die im tar.gz-Archiv enthaltenen Zugriffsrechte (chmod 600), sonst verarbeitet Traffic sie nicht. Hierin laden schließlich die
20+
Zertifikatsinformationen.
21+
22+
Starten Sie anschließend mit `docker-compose -f ./ctnextcloud.yml up -d ` Traefik, Nextcloud und die zugehörige Datenbank.
23+
24+
Wenn Docker alle Images heruntergeladen und gestartet hat, sollten Sie nach einiger Zeit in eine Web-Browser unter Ihrem Host- und Domain-Namen die frische
25+
Nextcloud-Installation erreichen können.
26+
27+
Die Besonderheiten für die Nextcloud-Einrichtung:
28+
29+
Nextcloud wird gezwungen, alle Zugriffe auf das https-Protokoll umzuleiten; das geschieht über Nextcloud-eigene Mechanismen (das für das Apache-Image
30+
implementierte OVERWRITEPROTOCOL) und über ein Redirect im vorgespannten Traefik, das als Proxy Anfragen an den Docker-Host für den virtuellen Host
31+
nextcloud.example.com an den Nextcloud-Container weiterzuleiten.
32+
33+
Traefik beschafft automatisch passende Zertifikate bei Let’s Encrypt. Einige weitere Anweisungen (unter labels: für den Nextcloud-Container) sorgen dafür, dass
34+
Nextcloud erfährt, dass es hinter einem Proxy arbeitet. Die Variable TRUSTED_DOMAINS hilft ebenfalls dabei. Weitere Labels formen die URLs für die DAV-Protokolle
35+
so um, dass diese auch über Kurz-URLs erreichbar sind.

acme.json

Whitespace-only changes.

nextcloud.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
version: "3.7"
2+
3+
volumes:
4+
nextcloud_root:
5+
nextcloud_data:
6+
nextcloud_config:
7+
nextcloud_apps:
8+
db_nextcloud:
9+
10+
services:
11+
traefik:
12+
image: traefik:v2.1.7
13+
restart: always
14+
ports:
15+
- "80:80"
16+
- "443:443"
17+
volumes:
18+
- /var/run/docker.sock:/var/run/docker.sock:rw
19+
- ./static.yml:/etc/traefik/traefik.yml
20+
- ./acme.json:/etc/traefik/acme/acme.json
21+
db_nextcloud:
22+
image: mysql:5
23+
restart: always
24+
volumes:
25+
- db_nextcloud:/var/lib/mysql
26+
environment:
27+
- MYSQL_DATABASE=nextcloud
28+
- MYSQL_USER=nextcloud
29+
- MYSQL_PASSWORD=geheim45
30+
- MYSQL_ROOT_PASSWORD=geheim45geheim
31+
nextcloud:
32+
image: nextcloud:apache
33+
restart: always
34+
depends_on:
35+
- db_nextcloud
36+
volumes:
37+
- nextcloud_root:/var/www/html
38+
- nextcloud_data:/var/www/html/data
39+
- nextcloud_config:/var/www/html/config
40+
- nextcloud_apps:/var/www/html/apps
41+
- /etc/localtime:/etc/localtime:ro
42+
- /etc/timezone:/etc/timezone:ro
43+
environment:
44+
- MYSQL_DATABASE=nextcloud
45+
- MYSQL_USER=nextcloud
46+
- MYSQL_PASSWORD=geheim45
47+
- MYSQL_HOST=db_nextcloud
48+
- NEXTCLOUD_ADMIN_USER=ncadmin
49+
- NEXTCLOUD_ADMIN_PASSWORD=12345678x!
50+
- NEXTCLOUD_TRUSTED_DOMAINS="nextcloud.example.com"
51+
- OVERWRITEPROTOCOL=https
52+
labels:
53+
- "traefik.enable=true"
54+
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.example.com`)"
55+
- "traefik.http.routers.nextcloud.entrypoints=web"
56+
- "traefik.http.routers.nextcloud.middlewares=redirect-to-https@docker"
57+
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
58+
- "traefik.http.routers.nextcloud-secure.rule=Host(`nextcloud.example.com`)"
59+
- "traefik.http.routers.nextcloud-secure.entrypoints=web-secure"
60+
- "traefik.http.routers.nextcloud-secure.tls.certResolver=default"
61+
- "traefik.http.routers.nextcloud-secure.tls=true"
62+
- "traefik.http.routers.nextcloud-secure.middlewares=nextcloudheaders@docker,nextcloud-dav@docker"
63+
- "traefik.http.middlewares.nextcloudheaders.headers.customRequestHeaders.X-Forwarded-Proto=https"
64+
- "traefik.http.middlewares.nextcloudheaders.headers.accessControlAllowOrigin=*"
65+
- "traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav"
66+
- "traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/"

static.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
entryPoints:
2+
web:
3+
address: ":80"
4+
web-secure:
5+
address: ":443"
6+
7+
providers:
8+
docker:
9+
watch: true
10+
exposedByDefault: false
11+
file:
12+
directory: /etc/traefik/dynamic
13+
watch: true
14+
filename: dynamic.yml
15+
16+
certificatesResolvers:
17+
default:
18+
acme:
19+
email: ich@example.com
20+
storage: /etc/traefik/acme/acme.json
21+
httpChallenge:
22+
entryPoint: web
23+
24+
api:
25+
insecure: true
26+
dashboard: true
27+
28+
log:
29+
level: INFO
30+
31+
accessLog:
32+
filePath: /dev/stdout
33+
34+
global:
35+
sendAnonymousUsage: false

0 commit comments

Comments
 (0)