Skip to content

Commit 8428c1c

Browse files
committed
add nextcloud
time spent: 40m
1 parent 573caa3 commit 8428c1c

8 files changed

+105
-4
lines changed

README.md

+8-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Warning: This setup doesn't provide high level of security or any [high availabi
77
Also you can check [Awesome Selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) and [Free for Dev](https://free-for.dev/) for more options ;)
88

99
Time track:
10-
- [Filipp Frizzy](https://github.com/Friz-zy/): 57h 5m for 14 days
10+
- [Filipp Frizzy](https://github.com/Friz-zy/): 57h 45m for 14 days
1111

1212
## Available and planned open source components
1313

@@ -29,12 +29,13 @@ Time track:
2929

3030
### Management
3131
* [DONE] [Gitlab](https://about.gitlab.com/) as git hosting and devops platform
32+
* [DONE] [Nextcloud](https://nextcloud.com/) as cloud storage with plugins for emal, task management, password storage, etc
33+
* [DONE] [Tuleap](https://www.tuleap.org/) as management software
3234
* [DONE] [Openproject](https://www.openproject.org/) as management software
3335
* [DONE] [Vaultwarden](https://github.com/dani-garcia/vaultwarden/wiki) as password manager for business
34-
* [Backlog] [Tuleap](https://www.tuleap.org/) as management software
3536
* [Backlog] [Zentao](https://www.zentao.pm) as scrum management software
3637
* [Backlog] [Taiga](https://www.taiga.io/) as kanban board based management software
37-
* [Backlog] [Nextcloud](https://nextcloud.com/) or [Owncloud](https://owncloud.com/) as cloud storage
38+
* [Backlog] [Owncloud](https://owncloud.com/) as cloud storage
3839

3940
### Chat
4041
* [DONE] [rocket](https://rocket.chat/)
@@ -95,6 +96,7 @@ cd startpack
9596

9697
Generate random passwords
9798
```
99+
echo -e "export NEXTCLOUD_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh
98100
echo -e "export TULEAP_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh
99101
echo -e "export STRAPI_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh
100102
echo -e "export GITLAB_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh
@@ -133,6 +135,7 @@ After entering all commands below you'll able to login into your new services by
133135
* https://adminer.${YOUR DOMAIN} user `your $USERNAME` password `your $PASSWORD`
134136
* https://minio.${YOUR DOMAIN} user `your $USERNAME` password `your $PASSWORD`
135137
* https://gitlab.${YOUR DOMAIN} user `root` password `your $PASSWORD`
138+
* https://nextcloud.${YOUR DOMAIN} user `your $USERNAME` password `your $PASSWORD`
136139
* https://tuleap.${YOUR DOMAIN} user `admin` password `your $PASSWORD`
137140
* https://openproject.${YOUR DOMAIN} user `admin` password `admin`
138141
* https://rocketchat.${YOUR DOMAIN}
@@ -149,6 +152,7 @@ docker-compose -f registry.yml up -d
149152
docker-compose -f minio.yml up -d
150153
docker-compose -f vaultwarden.yml up -d
151154
docker-compose -f tuleap.yml up -d
155+
docker-compose -f nextcloud.yml up -d
152156
```
153157

154158
After enabling portainer you should immediately go to portainer.{your domain} and set admin password
@@ -194,6 +198,7 @@ docker stack deploy --compose-file registry.yml
194198
docker stack deploy --compose-file minio.yml
195199
docker stack deploy --compose-file vaultwarden.yml
196200
docker stack deploy --compose-file tuleap.yml
201+
docker stack deploy --compose-file nextcloud.yml
197202
```
198203

199204
After enabling portainer you should immediately go to portainer.{your domain} and set admin password

configs/postgres.sql

+3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ create database nocodb;
22
create database openproject;
33
create database gitlab;
44
create database strapi;
5+
create database nextcloud;
56
create user nocodb with password '${NOCODB_SQL_PASSWORD}';
67
create user openproject with password '${OPENPROJECT_SQL_PASSWORD}';
78
create user gitlab with password '${GITLAB_SQL_PASSWORD}';
89
create user strapi with password '${STRAPI_SQL_PASSWORD}';
10+
create user nextcloud with password '${NEXTCLOUD_SQL_PASSWORD}';
911
grant all privileges on database nocodb to nocodb;
1012
grant all privileges on database openproject to openproject;
1113
grant all privileges on database gitlab to gitlab;
1214
grant all privileges on database strapi to strapi;
15+
grant all privileges on database nextcloud to nextcloud;

env.sh.test

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export OPENPROJECT_SQL_PASSWORD=Change_Me!!1
1111
export GITLAB_SQL_PASSWORD=Change_Me!!1
1212
export STRAPI_SQL_PASSWORD=Change_Me!!1
1313
export TULEAP_SQL_PASSWORD=N2IxMTY1NjMyOTkzZDZjNTY1MTNmMDQyMTg3Y2Y0YmMgIC0K
14+
export NEXTCLOUD_SQL_PASSWORD=Change_Me!!1
1415

1516
export HASHED_PASSWORD=$(openssl passwd -apr1 $PASSWORD)
1617
export REGISTRY_HASHED_PASSWORD=$(openssl passwd -apr1 $REGISTRY_PASSWORD)

monitoring.yml

+8
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,8 @@ services:
234234
- taiga
235235
- rocketchat
236236
- vaultwarden
237+
- tuleap
238+
- nextcloud
237239

238240
x-volume: &volume
239241
driver: local
@@ -316,3 +318,9 @@ networks:
316318
taiga:
317319
name: taiga
318320
<<: *network
321+
tuleap:
322+
name: tuleap
323+
<<: *network
324+
nextcloud:
325+
name: nextcloud
326+
<<: *network

nextcloud.yml

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
version: '3.8'
2+
3+
x-nextcloud-labels: &nextcloud-labels
4+
labels:
5+
- traefik.enable=true
6+
- traefik.docker.network=nextcloud
7+
- traefik.http.routers.nextcloud-http.rule=Host(`nextcloud.${DOMAIN?Variable DOMAIN not set}`)
8+
- traefik.http.routers.nextcloud-http.entrypoints=http
9+
- traefik.http.routers.nextcloud-http.service=nextcloud
10+
- traefik.http.routers.nextcloud-http.middlewares=https-redirect
11+
- traefik.http.routers.nextcloud-https.rule=Host(`nextcloud.${DOMAIN?Variable DOMAIN not set}`)
12+
- traefik.http.routers.nextcloud-https.entrypoints=https
13+
- traefik.http.routers.nextcloud-https.tls=true
14+
- traefik.http.routers.nextcloud-https.service=nextcloud
15+
- traefik.http.routers.nextcloud-https.tls.certresolver=le
16+
- traefik.http.services.nextcloud.loadbalancer.server.port=80
17+
18+
x-service: &service
19+
logging:
20+
driver: json-file
21+
options:
22+
max-size: "100m"
23+
max-file: "2"
24+
restart: always
25+
networks:
26+
- nextcloud
27+
- database
28+
29+
services:
30+
# https://hub.docker.com/_/nextcloud
31+
nextcloud:
32+
container_name: nextcloud
33+
image: nextcloud
34+
deploy:
35+
mode: replicated
36+
replicas: 1
37+
<<: *nextcloud-labels
38+
<<: *nextcloud-labels
39+
<<: *service
40+
environment:
41+
POSTGRES_DB: nextcloud
42+
POSTGRES_USER: nextcloud
43+
POSTGRES_PASSWORD: ${NEXTCLOUD_SQL_PASSWORD?Variable NEXTCLOUD_SQL_PASSWORD not set}
44+
POSTGRES_HOST: postgres
45+
NEXTCLOUD_ADMIN_USER: ${USERNAME?Variable USERNAME not set}
46+
NEXTCLOUD_ADMIN_PASSWORD: ${PASSWORD?Variable PASSWORD not set}
47+
NEXTCLOUD_TRUSTED_DOMAINS: nextcloud.${DOMAIN?Variable DOMAIN not set}
48+
VIRTUAL_HOST: nextcloud.${DOMAIN?Variable DOMAIN not set}
49+
#NEXTCLOUD_UPDATE: "true"
50+
volumes:
51+
- nextcloud-data:/var/www/html
52+
user: root
53+
54+
volumes:
55+
nextcloud-data:
56+
external: True
57+
58+
networks:
59+
nextcloud:
60+
name: nextcloud
61+
external: true
62+
database:
63+
name: database
64+
external: true

setup-compose.yml

+10
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ services:
8484
- vaultwarden
8585
- twake
8686
- tuleap
87+
- nextcloud
8788

8889
x-volume: &volume
8990
driver: local
@@ -194,6 +195,12 @@ volumes:
194195
driver_opts:
195196
<<: *volume-driver-opts
196197
device: ${DATAPATH?Variable DATAPATH not set}/tuleap/data
198+
nextcloud-data:
199+
name: nextcloud-data
200+
<<: *volume
201+
driver_opts:
202+
<<: *volume-driver-opts
203+
device: ${DATAPATH?Variable DATAPATH not set}/nextcloud/data
197204

198205
x-network: &network
199206
driver: bridge
@@ -251,3 +258,6 @@ networks:
251258
tuleap:
252259
name: tuleap
253260
<<: *network
261+
nextcloud:
262+
name: nextcloud
263+
<<: *network

setup-swarm.yml

+10
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ services:
115115
- vaultwarden
116116
- twake
117117
- tuleap
118+
- nextcloud
118119

119120
x-volume: &volume
120121
driver: local
@@ -225,6 +226,12 @@ volumes:
225226
driver_opts:
226227
<<: *volume-driver-opts
227228
device: "${MASTER_IP?Variable MASTER_IP not set}:${DATAPATH?Variable DATAPATH not set}/tuleap/data"
229+
nextcloud-data:
230+
name: nextcloud-data
231+
<<: *volume
232+
driver_opts:
233+
<<: *volume-driver-opts
234+
device: "${MASTER_IP?Variable MASTER_IP not set}:${DATAPATH?Variable DATAPATH not set}/nextcloud/data"
228235

229236
x-network: &network
230237
driver: overlay
@@ -282,3 +289,6 @@ networks:
282289
tuleap:
283290
name: tuleap
284291
<<: *network
292+
nextcloud:
293+
name: nextcloud
294+
<<: *network

setup.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
mkdir -p ${DATAPATH?Variable DATAPATH not set}/{traefik,mariadb,postgres,portainer,registry,minio,nocodb,openproject,gitlab,strapi,telegraf,victoriametrics,influxdb,grafana,rocketchat,rocketchat-mongodb,gitlab,vaultwarden,twake,twake-mongodb,tuleap,tuleap-mysql}/{data,entrypoint,configs,certificates,logs}
1+
mkdir -p ${DATAPATH?Variable DATAPATH not set}/{traefik,mariadb,postgres,portainer,registry,minio,nocodb,openproject,gitlab,strapi,telegraf,victoriametrics,influxdb,grafana,rocketchat,rocketchat-mongodb,gitlab,vaultwarden,twake,twake-mongodb,tuleap,tuleap-mysql,nextcloud}/{data,entrypoint,configs,certificates,logs}
22

33
envsubst < configs/postgres.sql > ${DATAPATH?Variable DATAPATH not set}/postgres/entrypoint/init.sql
44
envsubst < configs/mariadb.sql > ${DATAPATH?Variable DATAPATH not set}/mariadb/entrypoint/init.sql

0 commit comments

Comments
 (0)