Skip to content

Commit 987f08a

Browse files
committed
Adapt for vo_federation development
1 parent 6860d7c commit 987f08a

File tree

7 files changed

+2735
-6
lines changed

7 files changed

+2735
-6
lines changed

README.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
Nextcloud's development environment using Docker Compose providing a large variety of services for Nextcloud server and app development and testing.
66

7+
Adapted for [VO Federation app](https://github.com/nextcloud/vo_federation) development.
8+
79
**DO NOT USE THIS IN PRODUCTION** Various settings in this setup are considered insecure and default passwords and secrets are used all over the place
810

911
- ☁ Nextcloud containers for running multiple versions
@@ -31,7 +33,7 @@ In detail explanation of the setup and its features and configuration options ca
3133
3234
To start the setup run the following commands to clone the repository and bootstrap the setup. This will prepare your setup and clone the Nextcloud server repository and required apps into the `workspace` folder.
3335
```bash
34-
git clone https://github.com/juliusknorr/nextcloud-docker-dev
36+
git clone https://github.com/smesterheide/nextcloud-docker-dev
3537
cd nextcloud-docker-dev
3638
./bootstrap.sh
3739
```
@@ -40,6 +42,8 @@ Depending on your docker version you will need to use `docker-compose` instead o
4042

4143
This may take some time depending on your internet connection speed.
4244

45+
**See [VO Federation app](#vo-federation-app) before continuing**
46+
4347
Once done you can start the Nextcloud container using:
4448
```bash
4549
docker compose up nextcloud
@@ -59,6 +63,37 @@ You can then access your Nextcloud instance at [http://nextcloud.local](http://n
5963
> git fetch origin
6064
> ```
6165
66+
#### VO Federation app
67+
68+
**Nextcloud Server patches**
69+
70+
Checkout the Nextcloud Server version that has support for the federated group share type:
71+
72+
```
73+
cd workspace/server
74+
git remote add publicplan https://github.com/publicplan/nextcloud-server.git
75+
git fetch publicplan
76+
git checkout -t publicplan/vo-federation
77+
```
78+
79+
**Clone the app**
80+
81+
From your parent directory clone the `vo_federation` app repository:
82+
83+
```
84+
git clone -b develop https://github.com/nextcloud/vo_federation
85+
```
86+
87+
**SSL server certificates**
88+
89+
Install [mkcert](https://github.com/FiloSottile/mkcert), go to `data/ssl` and generate the server cerfificates:
90+
91+
```
92+
CAROOT=$(pwd) mkcert -cert-file nextcloud.local.crt -key-file nextcloud.local.key nextcloud.local
93+
CAROOT=$(pwd) mkcert -cert-file nextcloud2.local.crt -key-file nextcloud2.local.key nextcloud2.local
94+
CAROOT=$(pwd) mkcert -cert-file nextcloud3.local.crt -key-file nextcloud3.local.key nextcloud3.local
95+
CAROOT=$(pwd) mkcert -cert-file keycloak.local.crt -key-file keycloak.local.key keycloak.local
96+
```
6297

6398
### Standalone containers
6499

data/shared/config.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
$CONFIG = array(
3+
'htaccess.RewriteBase' => '/',
4+
'overwriteprotocol' => 'https',
5+
'log_type' => 'file',
6+
'logfile' => 'nextcloud.log',
7+
'loglevel' => 2,
8+
);

data/shared/hooks/after-install.sh

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/bash
2+
export OC_PASS="${OC_PASS_ADMIN:-admin}"
3+
occ user:resetpassword --password-from-env admin
4+
5+
occ config:app:set files_sharing incoming_server2server_group_share_enabled --value="yes"
6+
occ config:app:set files_sharing outgoing_server2server_group_share_enabled --value="yes"
7+
8+
INSTANCENAME=$(echo "$VIRTUAL_HOST" | cut -d '.' -f1)
9+
DOMAIN_SUFFIX=".$(echo "$VIRTUAL_HOST" | cut -d '.' -f2-)"
10+
11+
if [ "$INSTANCENAME" == "nextcloud" ]; then
12+
echo "Adding Keycloak as an OIDC provider for nexcloud, trusting nexcloud2, nextcloud3"
13+
occ vo_federation:provider:add Keycloak \
14+
--clientid="nextcloud" \
15+
--clientsecret="nextcloud" \
16+
--authorization-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/auth" \
17+
--token-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/token" \
18+
--jwks-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/certs" \
19+
--userinfo-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/userinfo" \
20+
--scope="openid email profile groups" \
21+
--mapping-uid="sub" \
22+
--mapping-display-name="preferred_username" \
23+
--mapping-groups="groups" \
24+
--regex-pattern=".*" \
25+
--trusted-instance="https://nextcloud2${DOMAIN_SUFFIX}" \
26+
--trusted-instance="https://nextcloud3${DOMAIN_SUFFIX}"
27+
fi
28+
29+
if [ "$INSTANCENAME" == "nextcloud2" ]; then
30+
echo "Adding Keycloak as an OIDC provider for nexcloud2, trusting nexcloud, nextcloud3"
31+
occ vo_federation:provider:add Keycloak \
32+
--clientid="nextcloud" \
33+
--clientsecret="nextcloud" \
34+
--authorization-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/auth" \
35+
--token-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/token" \
36+
--jwks-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/certs" \
37+
--userinfo-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/userinfo" \
38+
--scope="openid email profile groups" \
39+
--mapping-uid="sub" \
40+
--mapping-display-name="preferred_username" \
41+
--mapping-groups="groups" \
42+
--regex-pattern=".*" \
43+
--trusted-instance="https://nextcloud${DOMAIN_SUFFIX}" \
44+
--trusted-instance="https://nextcloud3${DOMAIN_SUFFIX}"
45+
fi
46+
47+
if [ "$INSTANCENAME" == "nextcloud2" ]; then
48+
echo "Adding Keycloak as an OIDC provider for nexcloud3, trusting nexcloud, nextcloud2"
49+
occ vo_federation:provider:add Keycloak \
50+
--clientid="nextcloud" \
51+
--clientsecret="nextcloud" \
52+
--authorization-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/auth" \
53+
--token-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/token" \
54+
--jwks-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/certs" \
55+
--userinfo-endpoint="https://keycloak${DOMAIN_SUFFIX}/realms/nextcloud/protocol/openid-connect/userinfo" \
56+
--scope="openid email profile groups" \
57+
--mapping-uid="sub" \
58+
--mapping-display-name="preferred_username" \
59+
--mapping-groups="groups" \
60+
--regex-pattern=".*" \
61+
--trusted-instance="https://nextcloud${DOMAIN_SUFFIX}" \
62+
--trusted-instance="https://nextcloud2${DOMAIN_SUFFIX}"
63+
fi
64+
65+
# Reload mounted crontab
66+
crontab /etc/nc-cron.conf

docker-compose.yml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,25 +76,30 @@ services:
7676
environment:
7777
SQL: ${SQL:-mysql}
7878
NEXTCLOUD_AUTOINSTALL: ${NEXTCLOUD_AUTOINSTALL:-YES}
79-
NEXTCLOUD_AUTOINSTALL_APPS:
79+
NEXTCLOUD_AUTOINSTALL_APPS: "${NEXTCLOUD_AUTOINSTALL_APPS} vo_federation"
8080
WITH_REDIS: "YES"
8181
VIRTUAL_HOST: "nextcloud${DOMAIN_SUFFIX}"
8282
ADDITIONAL_APPS_PATH:
83-
NEXTCLOUD_TRUSTED_DOMAINS:
83+
NEXTCLOUD_TRUSTED_DOMAINS: "nextcloud.local nextcloud2.local nextcloud3.local"
8484
BLACKFIRE_CLIENT_ID:
8585
BLACKFIRE_CLIENT_TOKEN:
8686
PRIMARY: ${PRIMARY:-local}
8787
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
88+
PROTOCOL: https
8889
volumes:
8990
- '${REPO_PATH_SERVER}:/var/www/html'
9091
- '${REPO_PATH_SERVER}/apps-extra:/var/www/html/apps-extra'
92+
- '${STABLE_ROOT_PATH}/../../vo_federation:/var/www/html/apps-extra/vo_federation'
9193
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-shared'
9294
- data:/var/www/html/data
9395
- config:/var/www/html/config
9496
- apps-writable:/var/www/html/apps-writable
9597
- ./data/skeleton/:/skeleton
9698
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
9799
- ./data/shared:/shared
100+
- ./data/ssl/rootCA.pem:/usr/local/share/ca-certificates/rootCA.crt
101+
- ./docker/configs/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
102+
- ./docker/configs/cron.conf:/etc/nc-cron.conf
98103
depends_on:
99104
- database-${SQL:-mysql}
100105
- redis
@@ -109,16 +114,24 @@ services:
109114
SQL: 'mysql'
110115
VIRTUAL_HOST: "nextcloud2${DOMAIN_SUFFIX}"
111116
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
117+
NEXTCLOUD_AUTOINSTALL: ${NEXTCLOUD_AUTOINSTALL:-YES}
118+
NEXTCLOUD_AUTOINSTALL_APPS: "${NEXTCLOUD_AUTOINSTALL_APPS} vo_federation"
119+
NEXTCLOUD_TRUSTED_DOMAINS: "nextcloud.local nextcloud2.local nextcloud3.local"
120+
PROTOCOL: https
112121
volumes:
113122
- '${REPO_PATH_SERVER}:/var/www/html'
114123
- '${REPO_PATH_SERVER}/apps-extra:/var/www/html/apps-extra'
124+
- '${STABLE_ROOT_PATH}/../../vo_federation:/var/www/html/apps-extra/vo_federation'
115125
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-shared'
116126
- data2:/var/www/html/data
117127
- config2:/var/www/html/config
118128
- apps-writable2:/var/www/html/apps-writable
119129
- ./data/skeleton/:/skeleton
120130
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
121131
- ./data/shared:/shared
132+
- ./data/ssl/rootCA.pem:/usr/local/share/ca-certificates/rootCA.crt
133+
- ./docker/configs/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
134+
- ./docker/configs/cron.conf:/etc/nc-cron.conf
122135
ports:
123136
- "${IP_BIND:-127.0.0.1}:${PORTBASE:-800}1:80"
124137
depends_on:
@@ -135,16 +148,24 @@ services:
135148
SQL: ${SQL:-mysql}
136149
VIRTUAL_HOST: "nextcloud3${DOMAIN_SUFFIX}"
137150
PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE:-develop}
151+
NEXTCLOUD_AUTOINSTALL: ${NEXTCLOUD_AUTOINSTALL:-YES}
152+
NEXTCLOUD_AUTOINSTALL_APPS: "${NEXTCLOUD_AUTOINSTALL_APPS} vo_federation"
153+
NEXTCLOUD_TRUSTED_DOMAINS: "nextcloud.local nextcloud2.local nextcloud3.local"
154+
PROTOCOL: https
138155
volumes:
139156
- '${REPO_PATH_SERVER}:/var/www/html'
140157
- '${REPO_PATH_SERVER}/apps-extra:/var/www/html/apps-extra'
158+
- '${STABLE_ROOT_PATH}/../../vo_federation:/var/www/html/apps-extra/vo_federation'
141159
- '${ADDITIONAL_APPS_PATH:-./data/apps-extra}:/var/www/html/apps-shared'
142160
- data3:/var/www/html/data
143161
- config3:/var/www/html/config
144162
- apps-writable3:/var/www/html/apps-writable
145163
- ./data/skeleton/:/skeleton
146164
- ./data/additional.config.php:/var/www/html/config/additional.config.php:ro
147165
- ./data/shared:/shared
166+
- ./data/ssl/rootCA.pem:/usr/local/share/ca-certificates/rootCA.crt
167+
- ./docker/configs/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
168+
- ./docker/configs/cron.conf:/etc/nc-cron.conf
148169
depends_on:
149170
- database-${SQL:-mysql}
150171
- redis
@@ -925,7 +946,7 @@ services:
925946
expose:
926947
- 8080
927948
volumes:
928-
- ./docker/configs/keycloak:/opt/keycloak/data/import
949+
- ./docker/configs/keycloak/realm-export.json:/opt/keycloak/data/import/realm-export.json
929950
command: start-dev --import-realm
930951
environment:
931952
VIRTUAL_HOST: "keycloak${DOMAIN_SUFFIX}"

docker/configs/cron.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# m h dom mon dow command
2-
*/5 * * * * sudo -E -u www-data php -f /var/www/html/cron.php >> /var/log/cron/nextcloud.log 2>&1
2+
* * * * * sudo -E -u www-data php -f /var/www/html/cron.php >> /var/log/cron/nextcloud.log 2>&1

0 commit comments

Comments
 (0)