mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-21 19:00:33 +00:00
Compare commits
718 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac7bf05f54 | ||
|
|
1dedc5f282 | ||
|
|
08ff51c482 | ||
|
|
14a77ea88d | ||
|
|
9388ec5798 | ||
|
|
1b878a4a8d | ||
|
|
1ceb963fae | ||
|
|
48e70e2b00 | ||
|
|
4adb748970 | ||
|
|
10cfce7bdd | ||
|
|
6cbab733be | ||
|
|
9f19026885 | ||
|
|
1513d69a8d | ||
|
|
364be594a2 | ||
|
|
4f30044d54 | ||
|
|
9f1b0e361d | ||
|
|
fc352b84be | ||
|
|
c780f28c51 | ||
|
|
f917f12932 | ||
|
|
3b4d741c8e | ||
|
|
a0cf31ad1b | ||
|
|
8c11f78940 | ||
|
|
012d9a9392 | ||
|
|
9584ef5346 | ||
|
|
502f32f207 | ||
|
|
cf9220c6b7 | ||
|
|
7df7ee738c | ||
|
|
d95058ae21 | ||
|
|
3973943acd | ||
|
|
692fd7e487 | ||
|
|
6ad9e9eda6 | ||
|
|
f2e4d8284c | ||
|
|
b9709aa400 | ||
|
|
d100bf985e | ||
|
|
fafc456065 | ||
|
|
bbeb7e2db2 | ||
|
|
285407e176 | ||
|
|
f15b890b28 | ||
|
|
2f2398c704 | ||
|
|
189728f765 | ||
|
|
c25587bcc3 | ||
|
|
fa93f207eb | ||
|
|
d5b5a1eae6 | ||
|
|
53f7fa70a0 | ||
|
|
fceeb4be10 | ||
|
|
c6f49ee45c | ||
|
|
8aa4c8a13e | ||
|
|
cd0b4cf1cc | ||
|
|
72909bde64 | ||
|
|
1f6ab346a3 | ||
|
|
1f7f675454 | ||
|
|
bd4afa7cff | ||
|
|
d1e781617c | ||
|
|
40c3a24b8b | ||
|
|
9035f47611 | ||
|
|
a9960c8d6a | ||
|
|
616159c1b8 | ||
|
|
45ec758e54 | ||
|
|
6a300d03a6 | ||
|
|
ef93976ba5 | ||
|
|
49e9c74a77 | ||
|
|
9ba7962320 | ||
|
|
b08b59b39b | ||
|
|
8750bd343c | ||
|
|
93cec3ca5b | ||
|
|
1a54b583c5 | ||
|
|
e30b0f878b | ||
|
|
dcf83fafcc | ||
|
|
5667b989b9 | ||
|
|
d87ae9d51b | ||
|
|
a63ff97f43 | ||
|
|
944e09237c | ||
|
|
e0b0066f8a | ||
|
|
a69f6a3d39 | ||
|
|
a8bd3e8b97 | ||
|
|
beffb879dc | ||
|
|
a5d03e495e | ||
|
|
17701ce256 | ||
|
|
dad3477a9f | ||
|
|
0d942935d8 | ||
|
|
cffcf86fc9 | ||
|
|
6b15a2838a | ||
|
|
897f05ee0f | ||
|
|
0fdcba047d | ||
|
|
355381df1d | ||
|
|
e3cacb7811 | ||
|
|
ee3bc7b609 | ||
|
|
396fb671fe | ||
|
|
73286c558c | ||
|
|
669555289c | ||
|
|
ff624fbfad | ||
|
|
93748f9644 | ||
|
|
bddca890c5 | ||
|
|
06d802fd43 | ||
|
|
9e92f2b5fd | ||
|
|
bc7d2a1337 | ||
|
|
5f126583d3 | ||
|
|
7c11a8a278 | ||
|
|
412da74702 | ||
|
|
3e1ae33e95 | ||
|
|
9b8a547f71 | ||
|
|
12d351aa19 | ||
|
|
741d99d401 | ||
|
|
fb45fa4073 | ||
|
|
55bc84d3f2 | ||
|
|
a4e894092c | ||
|
|
3fc1487cd9 | ||
|
|
c9e406f76c | ||
|
|
234590f8ee | ||
|
|
85ac995907 | ||
|
|
079b86d840 | ||
|
|
132444cbb9 | ||
|
|
e4648ab03e | ||
|
|
1841733879 | ||
|
|
8bbdbd6fa7 | ||
|
|
f82818cbc6 | ||
|
|
ca9b0cccf3 | ||
|
|
fbc4b9cabb | ||
|
|
c056879df4 | ||
|
|
4a50fcf5a6 | ||
|
|
0e09bb0d12 | ||
|
|
09e299181a | ||
|
|
844382d220 | ||
|
|
3c3c8fd8d5 | ||
|
|
3b28885ee2 | ||
|
|
b9ac7851b2 | ||
|
|
b2fa058f33 | ||
|
|
04f84bb9b1 | ||
|
|
14fd25c837 | ||
|
|
3ff0b2e987 | ||
|
|
418e7898b7 | ||
|
|
490e9571d1 | ||
|
|
b194450875 | ||
|
|
1982e069b7 | ||
|
|
26e3b14854 | ||
|
|
347618f6a8 | ||
|
|
ad8d6ab659 | ||
|
|
681f4ac73e | ||
|
|
9f4b712f02 | ||
|
|
9a27686ede | ||
|
|
c5b26ffb4f | ||
|
|
c6492ef05c | ||
|
|
bf5b7f0f56 | ||
|
|
c153253c7f | ||
|
|
126db40a72 | ||
|
|
d58bb56dfa | ||
|
|
e362ea8665 | ||
|
|
0dc630b5a9 | ||
|
|
bc03d030c9 | ||
|
|
1304734d3e | ||
|
|
8356e1aba1 | ||
|
|
900d470174 | ||
|
|
3d780a5a4d | ||
|
|
e6d9099114 | ||
|
|
cad77f8287 | ||
|
|
4ef65b24ae | ||
|
|
348d6acde7 | ||
|
|
68e346047d | ||
|
|
77dee8caec | ||
|
|
f861c66ade | ||
|
|
046496c5fc | ||
|
|
72d55cdbbf | ||
|
|
9728a84e75 | ||
|
|
27faed79d2 | ||
|
|
78419fa0a1 | ||
|
|
f540d54e2a | ||
|
|
e78ef7a31a | ||
|
|
e44ef2d126 | ||
|
|
b2f5deebd2 | ||
|
|
ccb97e9540 | ||
|
|
861d717480 | ||
|
|
792f4daf6d | ||
|
|
b349135dfb | ||
|
|
eaf26a2ec3 | ||
|
|
eeeeb2f37b | ||
|
|
cc2c8998ba | ||
|
|
18f6aff016 | ||
|
|
1118ba6764 | ||
|
|
070242cda8 | ||
|
|
608fea6460 | ||
|
|
7cb12f7893 | ||
|
|
454870ad49 | ||
|
|
617c882015 | ||
|
|
306f1f45ec | ||
|
|
c590fb9592 | ||
|
|
af91a01c04 | ||
|
|
92616b6f9b | ||
|
|
860f194d81 | ||
|
|
d8719e810c | ||
|
|
1c6f2b80b7 | ||
|
|
0a48feb124 | ||
|
|
97be96cde5 | ||
|
|
0779609bed | ||
|
|
3bff5f2851 | ||
|
|
1d1d462bc0 | ||
|
|
6debc29685 | ||
|
|
8171d2c036 | ||
|
|
3cce13f2b8 | ||
|
|
c76e0aa1c1 | ||
|
|
14f5884e60 | ||
|
|
48746c24de | ||
|
|
c24709e2df | ||
|
|
359d43d3dd | ||
|
|
e95e2fdf9c | ||
|
|
628756da2b | ||
|
|
555ce650fd | ||
|
|
ea788daccc | ||
|
|
a3cf552cf9 | ||
|
|
5efcff80fe | ||
|
|
d908244ef0 | ||
|
|
b77427b3cf | ||
|
|
acd0d82e29 | ||
|
|
378c884442 | ||
|
|
de2503ad51 | ||
|
|
4e13dc5fca | ||
|
|
dae2da8494 | ||
|
|
bdf45c7204 | ||
|
|
ff58ee08e7 | ||
|
|
07dc39c832 | ||
|
|
fe631e8a88 | ||
|
|
ed92f9c138 | ||
|
|
7d288268bc | ||
|
|
32d9cee2be | ||
|
|
2ba096a1ab | ||
|
|
08746f4aff | ||
|
|
05db035919 | ||
|
|
4ffed7e23c | ||
|
|
de9397ad54 | ||
|
|
74b4f1d395 | ||
|
|
37b5e12a6f | ||
|
|
2260ccc876 | ||
|
|
5a9e45ee6d | ||
|
|
f111363459 | ||
|
|
241041512f | ||
|
|
b20eec34e3 | ||
|
|
3e0aa8a52d | ||
|
|
9f207810b8 | ||
|
|
4e6288b934 | ||
|
|
31627f9270 | ||
|
|
2af2e3a3cd | ||
|
|
6c4f7c22d3 | ||
|
|
05b5e41894 | ||
|
|
83c77d86e7 | ||
|
|
f46c72b359 | ||
|
|
00f166675a | ||
|
|
f12885b09b | ||
|
|
1863078937 | ||
|
|
e02be7234d | ||
|
|
cf10c495d1 | ||
|
|
90082704f6 | ||
|
|
838084f073 | ||
|
|
7373bb5960 | ||
|
|
38c95d14d2 | ||
|
|
4f7ee99782 | ||
|
|
aee32ed357 | ||
|
|
6a4281fc12 | ||
|
|
1b46c172f0 | ||
|
|
b9bd1ecdc3 | ||
|
|
c8783f79d6 | ||
|
|
45a33d4b5b | ||
|
|
b94bb6569e | ||
|
|
be5b5deb7a | ||
|
|
5550d30065 | ||
|
|
6b487302a8 | ||
|
|
939c50726f | ||
|
|
e8ce8d9dbf | ||
|
|
d37d21e151 | ||
|
|
25b04bccdf | ||
|
|
b3cc1644bb | ||
|
|
76841af339 | ||
|
|
1af8112308 | ||
|
|
57d9534133 | ||
|
|
a98e8c02d0 | ||
|
|
cb5bee70b0 | ||
|
|
66430a945d | ||
|
|
324ed4dc63 | ||
|
|
e0857cc954 | ||
|
|
87cb3cd819 | ||
|
|
52f4d4b41e | ||
|
|
566619ecac | ||
|
|
b8379c81d7 | ||
|
|
38392e0dcf | ||
|
|
c5fc60d1fa | ||
|
|
87f97a5270 | ||
|
|
68af3916cb | ||
|
|
6331a94758 | ||
|
|
3e2a64e6d4 | ||
|
|
cd4131a82d | ||
|
|
d1d66845a3 | ||
|
|
8de8274a31 | ||
|
|
ef82f1aaf9 | ||
|
|
4b1ed4e227 | ||
|
|
30883d0d61 | ||
|
|
f22117545f | ||
|
|
512c134e11 | ||
|
|
3a438ff329 | ||
|
|
5c3e719e87 | ||
|
|
cc3dc75917 | ||
|
|
2ebfebf24a | ||
|
|
b566cd179e | ||
|
|
2a44208f56 | ||
|
|
46f4136d30 | ||
|
|
fcf1a1e11b | ||
|
|
efd6f2a738 | ||
|
|
a145bf33a3 | ||
|
|
3873795c05 | ||
|
|
edf723e4f4 | ||
|
|
34239f3e15 | ||
|
|
cf28ad7d45 | ||
|
|
cda66b1a11 | ||
|
|
1aa861ba2a | ||
|
|
085d878223 | ||
|
|
f0069816bc | ||
|
|
8babb33540 | ||
|
|
7f918c37fc | ||
|
|
ead696b683 | ||
|
|
f122ee5a07 | ||
|
|
1818eb10c3 | ||
|
|
779ca8e03d | ||
|
|
4e7ab122e9 | ||
|
|
1c5d9f0eb7 | ||
|
|
9ba70425f4 | ||
|
|
7acdb2dc92 | ||
|
|
157588d95f | ||
|
|
cab39e59be | ||
|
|
ac005eb5c9 | ||
|
|
4df6d2c971 | ||
|
|
b75e10e5f3 | ||
|
|
033f0166f4 | ||
|
|
e7e29a2731 | ||
|
|
916a25a62e | ||
|
|
5a8989bb9f | ||
|
|
714815e9f0 | ||
|
|
3a9d5d52d5 | ||
|
|
854b4115e8 | ||
|
|
23f2e96c71 | ||
|
|
07adf95c35 | ||
|
|
9848ceec38 | ||
|
|
cbfc5d4d15 | ||
|
|
28b9755a50 | ||
|
|
34a5e6badf | ||
|
|
401150d427 | ||
|
|
2d1ddccb28 | ||
|
|
06733e8009 | ||
|
|
0b2c7f09b6 | ||
|
|
73e734b011 | ||
|
|
e1890c8f3b | ||
|
|
904d23147c | ||
|
|
46ec1ea7f5 | ||
|
|
8cabad38a6 | ||
|
|
1fa1c90e22 | ||
|
|
1ce496a323 | ||
|
|
d93c01f368 | ||
|
|
ee5d9493de | ||
|
|
c5a1a00e38 | ||
|
|
99f29aaaed | ||
|
|
0435609521 | ||
|
|
6fe6d7e0b4 | ||
|
|
d3b099e8e3 | ||
|
|
3cebbb6487 | ||
|
|
c6fc7baf2d | ||
|
|
0c93ad6def | ||
|
|
cd2208f295 | ||
|
|
e55500640b | ||
|
|
ab8b455b71 | ||
|
|
81a8352d64 | ||
|
|
93a0616f7e | ||
|
|
409dda00bd | ||
|
|
517ac319ba | ||
|
|
34d8ae8e5a | ||
|
|
ed36ba6c8d | ||
|
|
15c90407bc | ||
|
|
287a5a08cd | ||
|
|
187bf3f767 | ||
|
|
7a10602c63 | ||
|
|
aba666859b | ||
|
|
00a7e65a2d | ||
|
|
fb3b040290 | ||
|
|
baf7778ed3 | ||
|
|
565a84a7bf | ||
|
|
6b0ce132f9 | ||
|
|
cc13161ec6 | ||
|
|
7ccc699402 | ||
|
|
9954641e02 | ||
|
|
c1595afe2d | ||
|
|
974190fd86 | ||
|
|
1bf1b2b284 | ||
|
|
291d543f37 | ||
|
|
8b6bb94539 | ||
|
|
1cae0980cd | ||
|
|
bd4d16ebb0 | ||
|
|
ba2b5a4638 | ||
|
|
98eb90360b | ||
|
|
2a9c4e3198 | ||
|
|
94f7ca00b5 | ||
|
|
b4a8d7d649 | ||
|
|
63e7be45fe | ||
|
|
f6f5598e97 | ||
|
|
736e93b5eb | ||
|
|
db9657f125 | ||
|
|
2b1ae17e88 | ||
|
|
e6510c21cf | ||
|
|
92dd734993 | ||
|
|
556afe5f51 | ||
|
|
23e495fc45 | ||
|
|
5002de61a2 | ||
|
|
c56959b9d0 | ||
|
|
5d9573602b | ||
|
|
aba40c4633 | ||
|
|
ec6b37178b | ||
|
|
a0267c6efa | ||
|
|
f0222394a1 | ||
|
|
ba88aa1d35 | ||
|
|
f726e4a8c6 | ||
|
|
7da2c627c6 | ||
|
|
e75a426749 | ||
|
|
5058270c99 | ||
|
|
e0f4024ead | ||
|
|
c63d44c1cf | ||
|
|
cb3d8d6b30 | ||
|
|
fe336cf6d8 | ||
|
|
386533b02f | ||
|
|
cd6f5ccebd | ||
|
|
9c0ea8a23c | ||
|
|
d5c857325b | ||
|
|
ef42467cc2 | ||
|
|
d0f11028d3 | ||
|
|
0e7e1eaf3d | ||
|
|
20062b6095 | ||
|
|
bf9482e560 | ||
|
|
b7e012f886 | ||
|
|
b4bd4d115d | ||
|
|
961f894372 | ||
|
|
a68b00b126 | ||
|
|
1c2b4f042d | ||
|
|
c9acb396ad | ||
|
|
af974046f5 | ||
|
|
62afa918f0 | ||
|
|
69cb6bee4d | ||
|
|
fc56c262c1 | ||
|
|
ed1e6191b8 | ||
|
|
4ffc3fc866 | ||
|
|
cf8cfc5dff | ||
|
|
f1edbd71c5 | ||
|
|
de64fceab9 | ||
|
|
d20489de7c | ||
|
|
83fb39dabf | ||
|
|
4256dc8021 | ||
|
|
af78a8ff4c | ||
|
|
48f93991bb | ||
|
|
a86555da16 | ||
|
|
e16340ffcb | ||
|
|
28ec69e505 | ||
|
|
9a1371a96b | ||
|
|
71f143b4aa | ||
|
|
a9a3f74d45 | ||
|
|
43b15ae7e7 | ||
|
|
3d8fa710c1 | ||
|
|
dbe30bba2c | ||
|
|
d41d0c7f94 | ||
|
|
4b30bcd92e | ||
|
|
01a670e503 | ||
|
|
9876491446 | ||
|
|
cc3b94a4c1 | ||
|
|
3c1dcb374f | ||
|
|
1322eea980 | ||
|
|
c22a94ccc3 | ||
|
|
51f3964c27 | ||
|
|
e50ad0b850 | ||
|
|
569975297a | ||
|
|
e6b63cf9ef | ||
|
|
1546db7f9f | ||
|
|
2666313d63 | ||
|
|
cfbb6752ee | ||
|
|
cd34d8d6f5 | ||
|
|
0b15352132 | ||
|
|
c5bfdbb653 | ||
|
|
cbc19c17ca | ||
|
|
067604ceac | ||
|
|
e6ecf52df9 | ||
|
|
5e6e433cd2 | ||
|
|
86b6d92761 | ||
|
|
a97af08bb8 | ||
|
|
264980df57 | ||
|
|
e94f63bd26 | ||
|
|
4689e402f8 | ||
|
|
ba760b060e | ||
|
|
4800888da6 | ||
|
|
8539b25278 | ||
|
|
5ddf989703 | ||
|
|
90c2328400 | ||
|
|
f5ee38247c | ||
|
|
f51029270b | ||
|
|
d27aa357db | ||
|
|
4b3e192ee6 | ||
|
|
d974023c8d | ||
|
|
204aa5649c | ||
|
|
8cd5f604c4 | ||
|
|
fdb0330959 | ||
|
|
4f5062080b | ||
|
|
39b669ae83 | ||
|
|
671a73a6c4 | ||
|
|
a4f0852bdf | ||
|
|
46ae99e36b | ||
|
|
07054d869b | ||
|
|
ebbcb998ce | ||
|
|
9f8d17d888 | ||
|
|
56a95182c7 | ||
|
|
e218c1d041 | ||
|
|
356792ec68 | ||
|
|
30ae4eeecd | ||
|
|
8685107e2e | ||
|
|
f01a5841b9 | ||
|
|
2a01e9683b | ||
|
|
0873e526b4 | ||
|
|
2306587a7d | ||
|
|
69b0911db1 | ||
|
|
6587530242 | ||
|
|
cf3f1f04cd | ||
|
|
ba6efd2a9c | ||
|
|
1e96eed341 | ||
|
|
c54395aa4c | ||
|
|
4590b28b50 | ||
|
|
a77ae20e5d | ||
|
|
c5e481b767 | ||
|
|
c23b7aa396 | ||
|
|
a12022f290 | ||
|
|
01291bbcce | ||
|
|
97b0622cc3 | ||
|
|
f67cae35fa | ||
|
|
50aa368169 | ||
|
|
5748f111d3 | ||
|
|
aec815119e | ||
|
|
6463ea368a | ||
|
|
2aef10ce47 | ||
|
|
81dff779b6 | ||
|
|
a34d6c1726 | ||
|
|
9bddac5937 | ||
|
|
fba13e8824 | ||
|
|
bc3e13bf69 | ||
|
|
ee06a04f51 | ||
|
|
1f66f4c9ca | ||
|
|
6a22d5443b | ||
|
|
98078cbe0a | ||
|
|
de9b2bba0e | ||
|
|
5fbe902145 | ||
|
|
0dcdbf8be2 | ||
|
|
9758c12491 | ||
|
|
d9ec23e0f8 | ||
|
|
a06add045c | ||
|
|
5fd0b3294e | ||
|
|
bcdb692dd1 | ||
|
|
ac7c7b19d8 | ||
|
|
d8de7e0765 | ||
|
|
cf8d3dd437 | ||
|
|
3eb3a9ff9f | ||
|
|
73b4c2d3ea | ||
|
|
d7a174615c | ||
|
|
e2f92a30c6 | ||
|
|
e28aef0c6a | ||
|
|
8a0c495d4d | ||
|
|
70eefd1f0d | ||
|
|
457644dc52 | ||
|
|
3f22ec8b4d | ||
|
|
85e3172d7f | ||
|
|
c9f2d260f1 | ||
|
|
6506594155 | ||
|
|
491693f402 | ||
|
|
2c546fd5be | ||
|
|
9e8cab8eec | ||
|
|
d686d3eae0 | ||
|
|
7c9cbdc121 | ||
|
|
f8457a2830 | ||
|
|
6a86209451 | ||
|
|
ea5219f40d | ||
|
|
f2154bf2b7 | ||
|
|
fc1d8e0b32 | ||
|
|
9e9e991cb6 | ||
|
|
c2444912b8 | ||
|
|
e85c43d075 | ||
|
|
66851eda8f | ||
|
|
93bd1ce2ee | ||
|
|
c3d3a29c6b | ||
|
|
cad3b0968a | ||
|
|
a2585fffe4 | ||
|
|
b8930bc577 | ||
|
|
e0a7ca3656 | ||
|
|
dfc2d9798e | ||
|
|
403cc5cae7 | ||
|
|
1a329d83aa | ||
|
|
f4e471e002 | ||
|
|
a8ac8a8c00 | ||
|
|
ef4835fcef | ||
|
|
00293d3ac0 | ||
|
|
7058cf2090 | ||
|
|
342a3b8b8f | ||
|
|
98a32b1ccf | ||
|
|
78db980b2f | ||
|
|
31ca661345 | ||
|
|
e97aa44fe4 | ||
|
|
f97bfc7dd1 | ||
|
|
758bc8b3ff | ||
|
|
5ab67cea1e | ||
|
|
4fd365764c | ||
|
|
a57185a34b | ||
|
|
60399acbc7 | ||
|
|
6d2d054328 | ||
|
|
bc100b9fd8 | ||
|
|
394b899578 | ||
|
|
32124235ba | ||
|
|
7bb713eaaa | ||
|
|
0df1db6b8f | ||
|
|
5b2b60841d | ||
|
|
e638aa3b89 | ||
|
|
42c0dadb11 | ||
|
|
4362406587 | ||
|
|
f1dff9b3e2 | ||
|
|
a6667496c7 | ||
|
|
355175cc36 | ||
|
|
2ade84e7ab | ||
|
|
244424efee | ||
|
|
775889edc4 | ||
|
|
8a23a1cb6b | ||
|
|
e17dfd9e66 | ||
|
|
de2c915bba | ||
|
|
40be1e1d07 | ||
|
|
e60dcdc2b3 | ||
|
|
90f49b128e | ||
|
|
2115e1dcf7 | ||
|
|
554745ac13 | ||
|
|
4f91809d41 | ||
|
|
e52647caf3 | ||
|
|
c1f882b95f | ||
|
|
0710b64899 | ||
|
|
e7e3de0335 | ||
|
|
88c95e292b | ||
|
|
73674c6167 | ||
|
|
e9497634b6 | ||
|
|
cf69a3114a | ||
|
|
f7ec7da366 | ||
|
|
2e9a908d07 | ||
|
|
849c0c4c89 | ||
|
|
43ef6cb056 | ||
|
|
194446fc71 | ||
|
|
63f2b4a3d9 | ||
|
|
285aee962b | ||
|
|
6787d322cc | ||
|
|
b7e593a64d | ||
|
|
eb52264f3b | ||
|
|
93de08cd54 | ||
|
|
d65e94b3b2 | ||
|
|
0f38928dd8 | ||
|
|
1dc69dca29 | ||
|
|
96f3ca2506 | ||
|
|
9c63e9707f | ||
|
|
feffba739a | ||
|
|
8a0dda3002 | ||
|
|
df34ecb282 | ||
|
|
0dda394f5c | ||
|
|
86a8a2d2fd | ||
|
|
be2df389ab | ||
|
|
a9f0cf6df5 | ||
|
|
31d7fff62b | ||
|
|
6d7df693b3 | ||
|
|
cba398df2d | ||
|
|
398cf969ac | ||
|
|
8b8059b6d2 | ||
|
|
23509fc18a | ||
|
|
7be09e89d3 | ||
|
|
b2c92d1b39 | ||
|
|
cb527ad29c | ||
|
|
3209e69c1d | ||
|
|
eb024f0460 | ||
|
|
69c4df538a | ||
|
|
34c47c06cb | ||
|
|
ccbd7a847c | ||
|
|
9f2e2cdbb8 | ||
|
|
208b6a4960 | ||
|
|
57b921bc5e | ||
|
|
3eba28888b | ||
|
|
b68f1b9703 | ||
|
|
c28952fc9c | ||
|
|
345f0f5f30 | ||
|
|
d7dc6bdea6 | ||
|
|
847b285e41 | ||
|
|
d141471bcd | ||
|
|
053a8e6a88 | ||
|
|
9130a242e3 | ||
|
|
4d8b26d2f4 | ||
|
|
097a04f2a1 | ||
|
|
a36141e02f | ||
|
|
51d94130ab | ||
|
|
f838a99508 | ||
|
|
20ca378b4c | ||
|
|
058cadb053 | ||
|
|
d74ed475df | ||
|
|
a5f9ff9c74 | ||
|
|
6889568c21 | ||
|
|
5c62640551 | ||
|
|
4c06f893fc | ||
|
|
a84433a6d3 | ||
|
|
ae3b121823 | ||
|
|
2192ea49b2 | ||
|
|
f83864764f | ||
|
|
bb64990618 | ||
|
|
2e8f9bc5fa | ||
|
|
2fbebaae5f | ||
|
|
be7a1910ad | ||
|
|
3c69aac6ca | ||
|
|
39415276db | ||
|
|
6533018c6f | ||
|
|
cfbfe0438c | ||
|
|
e18babbbde | ||
|
|
f62d3ab0f7 | ||
|
|
5a959e9b07 | ||
|
|
12358321d1 | ||
|
|
91a977e09e | ||
|
|
07aaf1fab4 |
4
.github/workflows/command-rebase.yml
vendored
4
.github/workflows/command-rebase.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
uses: peter-evans/create-or-update-comment@v3
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
uses: peter-evans/create-or-update-comment@v3
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
2
.github/workflows/create-psalm-container.yml
vendored
2
.github/workflows/create-psalm-container.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
- name: Modify the Dockerfile
|
||||
run: |
|
||||
set -x
|
||||
sed -i 's|FROM php:7.4-alpine|FROM php:8.1-alpine|' "psalm-github-actions/Dockerfile"
|
||||
sed -i 's|FROM php:7.4-alpine|FROM php:8.2-alpine|' "psalm-github-actions/Dockerfile"
|
||||
cat << APCU >> "psalm-github-actions/Dockerfile"
|
||||
RUN mkdir -p /usr/src/php/ext/apcu && \
|
||||
curl -fsSL https://pecl.php.net/get/apcu | tar xvz -C "/usr/src/php/ext/apcu" --strip 1 && \
|
||||
|
||||
29
.github/workflows/dependency-updates.yml
vendored
29
.github/workflows/dependency-updates.yml
vendored
@@ -13,23 +13,24 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
php-version: 8.2
|
||||
extensions: apcu
|
||||
- name: Run dependency update script
|
||||
run: |
|
||||
set -x
|
||||
cd ./php
|
||||
composer update
|
||||
set +e
|
||||
ALL_LINES="$(composer outdated | grep -v "^$\|Direct dependencies\|Everything up to date\|Transitive dependencies")"
|
||||
set -e
|
||||
while [ -n "$ALL_LINES" ]; do
|
||||
CURRENT_LINE="$(echo "$ALL_LINES" | head -1)"
|
||||
composer require "$(echo "$CURRENT_LINE" | awk '{print $1}')" "^$(echo "$CURRENT_LINE" | awk '{print $4}')" --with-all-dependencies
|
||||
ALL_LINES="$(echo "$ALL_LINES" | sed '1d')"
|
||||
done
|
||||
echo "outdated dependencies:
|
||||
$(composer outdated)"
|
||||
composer update --with-all-dependencies
|
||||
# Disable dependency updates for now
|
||||
# set +e
|
||||
# ALL_LINES="$(composer outdated | grep -v "^$\|Direct dependencies\|Everything up to date\|Transitive dependencies")"
|
||||
# set -e
|
||||
# while [ -n "$ALL_LINES" ]; do
|
||||
# CURRENT_LINE="$(echo "$ALL_LINES" | head -1)"
|
||||
# composer require "$(echo "$CURRENT_LINE" | awk '{print $1}')" "^$(echo "$CURRENT_LINE" | awk '{print $4}')" --with-all-dependencies
|
||||
# ALL_LINES="$(echo "$ALL_LINES" | sed '1d')"
|
||||
# done
|
||||
# echo "outdated dependencies:
|
||||
# $(composer outdated)"
|
||||
- name: Update apcu
|
||||
run: |
|
||||
# APCU
|
||||
@@ -43,12 +44,12 @@ jobs:
|
||||
)"
|
||||
sed -i "s|pecl install APCu.*\;|pecl install APCu-$apcu_version\;|" ./Containers/mastercontainer/Dockerfile
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: dependency updates
|
||||
signoff: true
|
||||
title: Dependency updates
|
||||
body: Automated dependency updates since dependabot does not support grouped updates
|
||||
labels: dependencies, enhancement
|
||||
labels: dependencies, 3. to review
|
||||
milestone: next
|
||||
branch: aio-dependency-update
|
||||
|
||||
48
.github/workflows/helm-release.yml
vendored
Normal file
48
.github/workflows/helm-release.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
name: Helm Chart Releaser
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'nextcloud-aio-helm-chart/**'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Turnstyle
|
||||
uses: softprops/turnstyle@v1
|
||||
with:
|
||||
continue-after-seconds: 180
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Fetch history
|
||||
run: git fetch --prune --unshallow
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
|
||||
# See https://github.com/helm/chart-releaser-action/issues/6
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v3.1
|
||||
with:
|
||||
version: v3.6.3
|
||||
|
||||
- name: Run chart-releaser
|
||||
# TODO: switch back @main to a specific version like @v1.5.1 or higher
|
||||
uses: helm/chart-releaser-action@main
|
||||
with:
|
||||
mark_as_latest: false
|
||||
charts_dir: .
|
||||
env:
|
||||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
CR_RELEASE_NAME_TEMPLATE: "helm-chart-{{ .Version }}"
|
||||
CR_SKIP_EXISTING: true
|
||||
33
.github/workflows/imaginary-update.yml
vendored
Normal file
33
.github/workflows/imaginary-update.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
name: imaginary-update
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '00 12 * * *'
|
||||
|
||||
jobs:
|
||||
run_update:
|
||||
name: update to latest imaginary commit on master branch
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Run imaginary-update
|
||||
run: |
|
||||
# Imaginary
|
||||
imaginary_version="$(
|
||||
git ls-remote https://github.com/h2non/imaginary master \
|
||||
| cut -f1 \
|
||||
| tail -1
|
||||
)"
|
||||
sed -i "s|go install github.com/h2non/imaginary.*;|go install github.com/h2non/imaginary@$imaginary_version;|" ./Containers/imaginary/Dockerfile
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: imaginary-update automated change
|
||||
signoff: true
|
||||
title: Imaginary update
|
||||
body: Automated Imaginary container update
|
||||
labels: dependencies, 3. to review
|
||||
milestone: next
|
||||
branch: imaginary-container-update
|
||||
2
.github/workflows/json-validator.yml
vendored
2
.github/workflows/json-validator.yml
vendored
@@ -15,6 +15,6 @@ jobs:
|
||||
uses: actions/checkout@v3
|
||||
- name: Validate Json
|
||||
run: |
|
||||
sudo apt install python3-pip --no-install-recommends
|
||||
sudo apt-get install python3-pip --no-install-recommends
|
||||
sudo pip3 install json-spec
|
||||
json validate --schema-file=php/containers-schema.json --document-file=php/containers.json
|
||||
|
||||
4
.github/workflows/lint-php.yml
vendored
4
.github/workflows/lint-php.yml
vendored
@@ -3,7 +3,7 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint
|
||||
name: PHP Lint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ["8.1"]
|
||||
php-versions: ["8.2"]
|
||||
|
||||
name: php-lint
|
||||
|
||||
|
||||
4
.github/workflows/nextcloud-update.yml
vendored
4
.github/workflows/nextcloud-update.yml
vendored
@@ -66,12 +66,12 @@ jobs:
|
||||
sed -i "s|^ENV NEXTCLOUD_VERSION.*|ENV NEXTCLOUD_VERSION $NCVERSION|" ./Containers/nextcloud/Dockerfile
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: nextcloud-update automated change
|
||||
signoff: true
|
||||
title: Nextcloud update
|
||||
body: Automated Nextcloud container update
|
||||
labels: dependencies, enhancement
|
||||
labels: dependencies, 3. to review
|
||||
milestone: next
|
||||
branch: nextcloud-container-update
|
||||
|
||||
@@ -13,10 +13,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up php8.1
|
||||
- name: Set up php8.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
php-version: 8.2
|
||||
extensions: apcu
|
||||
coverage: none
|
||||
|
||||
@@ -26,4 +26,7 @@ jobs:
|
||||
cd php
|
||||
composer global require wapmorgan/php-deprecation-detector dev-master
|
||||
composer install
|
||||
composer run php-deprecation-detector
|
||||
composer run php-deprecation-detector | tee -i ./phpdd.log
|
||||
if grep "Total issues:" ./phpdd.log; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
4
.github/workflows/psalm-analysis.yml
vendored
4
.github/workflows/psalm-analysis.yml
vendored
@@ -12,10 +12,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up php8.1
|
||||
- name: Set up php8.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
php-version: 8.2
|
||||
extensions: apcu
|
||||
coverage: none
|
||||
|
||||
|
||||
9
.github/workflows/psalm-update-baseline.yml
vendored
9
.github/workflows/psalm-update-baseline.yml
vendored
@@ -12,10 +12,10 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up php8.1
|
||||
- name: Set up php8.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
php-version: 8.2
|
||||
extensions: apcu
|
||||
coverage: none
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
continue-on-error: true
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: Update psalm baseline
|
||||
@@ -42,7 +42,8 @@ jobs:
|
||||
# Make sure we can open multiple PRs
|
||||
branch-suffix: timestamp
|
||||
title: '[Automated] Update psalm-baseline.xml'
|
||||
milestone: next
|
||||
body: |
|
||||
Auto-generated update psalm-baseline.xml with fixed psalm warnings
|
||||
labels: |
|
||||
3. to review
|
||||
3. to review, dependencies
|
||||
|
||||
55
.github/workflows/twig-lint.yml
vendored
Normal file
55
.github/workflows/twig-lint.yml
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
name: Twig Lint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-twig-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
twig-lint:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ["8.2"]
|
||||
|
||||
name: twig-lint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
coverage: none
|
||||
|
||||
- name: twig lint
|
||||
run: |
|
||||
cd php
|
||||
composer require sserbin/twig-linter:@dev --no-progress --dev
|
||||
composer install
|
||||
chmod +x ./vendor/bin/twig-linter
|
||||
./vendor/bin/twig-linter lint ./templates
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: twig-lint
|
||||
|
||||
if: always()
|
||||
|
||||
name: twig-lint-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.twig-lint.result != 'success' && needs.twig-lint.result != 'skipped' }}; then exit 1; fi
|
||||
10
.github/workflows/update-helm.yml
vendored
10
.github/workflows/update-helm.yml
vendored
@@ -15,19 +15,19 @@ jobs:
|
||||
- name: update helm chart
|
||||
run: |
|
||||
DOCKER_TAG="$(curl -L -s 'https://registry.hub.docker.com/v2/repositories/nextcloud/all-in-one/tags?page_size=1024' | jq '."results"[]["name"]' | sed 's|"||g' | grep '^20' | sort -r | head -1)"
|
||||
DOCKER_TAG="${DOCKER_TAG%%latest*}"
|
||||
DOCKER_TAG="${DOCKER_TAG%%-latest*}"
|
||||
export DOCKER_TAG
|
||||
if [ -n "$DOCKER_TAG" ] && ! grep -q "$DOCKER_TAG" ./helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml; then
|
||||
sudo bash helm-chart/update-helm.sh "$DOCKER_TAG"
|
||||
if [ -n "$DOCKER_TAG" ] && ! grep -q "$DOCKER_TAG" ./nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml; then
|
||||
sudo bash nextcloud-aio-helm-chart/update-helm.sh "$DOCKER_TAG"
|
||||
fi
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: Helm Chart updates
|
||||
signoff: true
|
||||
title: Helm Chart updates
|
||||
body: Automated Helm Chart updates for the yaml files. It can be merged if it looks good at any time which will automatically trigger a new release of the helm chart.
|
||||
labels: dependencies
|
||||
labels: dependencies, 3. to review
|
||||
milestone: next
|
||||
branch: aio-helm-update
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
4
.github/workflows/update-yaml.yml
vendored
4
.github/workflows/update-yaml.yml
vendored
@@ -16,13 +16,13 @@ jobs:
|
||||
run: |
|
||||
sudo bash manual-install/update-yaml.sh
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: Yaml updates
|
||||
signoff: true
|
||||
title: Yaml updates
|
||||
body: Automated yaml updates for the docker-compose files. Should only be merged shortly before the next latest release.
|
||||
labels: dependencies
|
||||
labels: dependencies, 3. to review
|
||||
milestone: next
|
||||
branch: aio-yaml-update
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -4,63 +4,23 @@
|
||||
storage file_system {
|
||||
root /mnt/data/caddy
|
||||
}
|
||||
|
||||
servers {
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
|
||||
log {
|
||||
level ERROR
|
||||
}
|
||||
}
|
||||
|
||||
{$PROTOCOL}://{$NC_DOMAIN}:{$APACHE_PORT} {
|
||||
|
||||
# Notify Push
|
||||
route /push/* {
|
||||
uri strip_prefix /push
|
||||
reverse_proxy {$NEXTCLOUD_HOST}:7867 {
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
}
|
||||
# Bundled
|
||||
import /caddy-imports/*
|
||||
|
||||
# Talk
|
||||
route /standalone-signaling/* {
|
||||
uri strip_prefix /standalone-signaling
|
||||
reverse_proxy {$TALK_HOST}:8081 {
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
}
|
||||
|
||||
# Collabora
|
||||
route /browser/* {
|
||||
reverse_proxy {$COLLABORA_HOST}:9980 {
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
}
|
||||
route /hosting/* {
|
||||
reverse_proxy {$COLLABORA_HOST}:9980 {
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
}
|
||||
route /cool/* {
|
||||
reverse_proxy {$COLLABORA_HOST}:9980 {
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
}
|
||||
|
||||
# Onlyoffice
|
||||
route /onlyoffice/* {
|
||||
uri strip_prefix /onlyoffice
|
||||
reverse_proxy {$ONLYOFFICE_HOST}:80 {
|
||||
header_up X-Forwarded-Host {http.request.host}/onlyoffice
|
||||
header_up X-Forwarded-Proto https
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
}
|
||||
|
||||
# Nextcloud
|
||||
route {
|
||||
rewrite /.well-known/carddav /remote.php/dav
|
||||
rewrite /.well-known/caldav /remote.php/dav
|
||||
header Strict-Transport-Security max-age=31536000;
|
||||
reverse_proxy localhost:8000 {
|
||||
# See https://github.com/nextcloud/all-in-one/issues/828
|
||||
# trusted_proxies placeholder
|
||||
}
|
||||
}
|
||||
# Others
|
||||
import /mnt/data/caddy-imports/*
|
||||
|
||||
# TLS options
|
||||
tls {
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
# Caddy is a requirement
|
||||
FROM caddy:2.6.2-alpine as caddy
|
||||
FROM caddy:2.6.4-alpine as caddy
|
||||
|
||||
FROM httpd:2.4.55-alpine3.17
|
||||
FROM httpd:2.4.57-alpine3.17
|
||||
|
||||
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
||||
|
||||
COPY --chown=33:33 Caddyfile /Caddyfile
|
||||
COPY --chmod=664 nextcloud.conf /usr/local/apache2/conf/nextcloud.conf
|
||||
COPY --chmod=664 nextcloud /nextcloud
|
||||
COPY --chmod=664 caddy-imports/* /caddy-imports/
|
||||
COPY --chmod=664 supervisord.conf /supervisord.conf
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
|
||||
VOLUME /mnt/data
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache shadow; \
|
||||
@@ -9,77 +21,56 @@ RUN set -ex; \
|
||||
usermod -u 333 -g 333 xfs; \
|
||||
groupmod -g 33 www-data; \
|
||||
usermod -u 33 -g 33 www-data; \
|
||||
apk del --no-cache shadow
|
||||
|
||||
RUN mkdir -p /mnt/data; \
|
||||
chown www-data:www-data /mnt/data;
|
||||
|
||||
VOLUME /mnt/data
|
||||
|
||||
RUN set -ex; \
|
||||
apk del --no-cache shadow; \
|
||||
\
|
||||
mkdir -p /mnt/data; \
|
||||
chown -R www-data:www-data /mnt/data; \
|
||||
\
|
||||
apk add --no-cache \
|
||||
bash \
|
||||
supervisor \
|
||||
wget \
|
||||
tzdata \
|
||||
ca-certificates \
|
||||
openssl \
|
||||
netcat-openbsd
|
||||
|
||||
COPY --from=caddy /usr/bin/caddy /usr/bin/
|
||||
RUN chmod +x /usr/bin/caddy
|
||||
|
||||
RUN sed -i \
|
||||
-e '/^Listen /d' \
|
||||
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
|
||||
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
|
||||
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
|
||||
conf/httpd.conf; \
|
||||
echo "Include conf/nextcloud.conf" | tee -a conf/httpd.conf; \
|
||||
echo "ServerName localhost" | tee -a conf/httpd.conf
|
||||
|
||||
COPY nextcloud.conf conf
|
||||
|
||||
RUN set -ex; \
|
||||
rm -rf conf/original conf/original && \
|
||||
rm -rf /var/www/html/* && \
|
||||
mkdir /var/www && \
|
||||
chown -R www-data:www-data /var/www;
|
||||
|
||||
RUN mkdir /var/log/supervisord; \
|
||||
netcat-openbsd; \
|
||||
\
|
||||
sed -i \
|
||||
-e '/^Listen /d' \
|
||||
-e 's/^#\(LoadModule .*mod_rewrite.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_headers.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_proxy.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_proxy_fcgi.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_setenvif.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_env.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_mime.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_dir.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_authz_core.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_alias.so\)/\1/' \
|
||||
-e 's/^#\(LoadModule .*mod_mpm_event.so\)/\1/' \
|
||||
-e 's/\(LoadModule .*mod_mpm_worker.so\)/#\1/' \
|
||||
-e 's/\(LoadModule .*mod_mpm_prefork.so\)/#\1/' \
|
||||
/usr/local/apache2/conf/httpd.conf; \
|
||||
echo "Include conf/nextcloud.conf" | tee -a /usr/local/apache2/conf/httpd.conf; \
|
||||
echo "ServerName localhost" | tee -a /usr/local/apache2/conf/httpd.conf; \
|
||||
\
|
||||
rm -rf /usr/local/apache2/conf/original /var/www; \
|
||||
mkdir -p /var/www; \
|
||||
chown -R www-data:www-data /var/www; \
|
||||
\
|
||||
mkdir /var/log/supervisord; \
|
||||
mkdir /var/run/supervisord; \
|
||||
chown www-data:www-data /var/run/supervisord; \
|
||||
chown www-data:www-data /var/log/supervisord;
|
||||
|
||||
COPY Caddyfile /
|
||||
|
||||
COPY start.sh /usr/bin/
|
||||
COPY healthcheck.sh /usr/bin/
|
||||
COPY supervisord.conf /
|
||||
RUN chmod +x /usr/bin/start.sh; \
|
||||
chmod +x /usr/bin/healthcheck.sh; \
|
||||
chmod +r /supervisord.conf; \
|
||||
chown www-data:www-data /Caddyfile; \
|
||||
chown www-data:www-data /var/log/supervisord; \
|
||||
\
|
||||
chown -R www-data:www-data /usr/local/apache2; \
|
||||
chmod +r -R /usr/local/apache2
|
||||
|
||||
# Give root a random password
|
||||
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
chmod +r -R /usr/local/apache2; \
|
||||
\
|
||||
echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
|
||||
USER www-data
|
||||
|
||||
ENTRYPOINT ["start.sh"]
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
|
||||
|
||||
HEALTHCHECK CMD healthcheck.sh
|
||||
HEALTHCHECK CMD /healthcheck.sh
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
10
Containers/apache/caddy-imports/collabora
Normal file
10
Containers/apache/caddy-imports/collabora
Normal file
@@ -0,0 +1,10 @@
|
||||
# Collabora
|
||||
route /browser/* {
|
||||
reverse_proxy {$COLLABORA_HOST}:9980
|
||||
}
|
||||
route /hosting/* {
|
||||
reverse_proxy {$COLLABORA_HOST}:9980
|
||||
}
|
||||
route /cool/* {
|
||||
reverse_proxy {$COLLABORA_HOST}:9980
|
||||
}
|
||||
5
Containers/apache/caddy-imports/notify-push
Normal file
5
Containers/apache/caddy-imports/notify-push
Normal file
@@ -0,0 +1,5 @@
|
||||
# Notify Push
|
||||
route /push/* {
|
||||
uri strip_prefix /push
|
||||
reverse_proxy {$NEXTCLOUD_HOST}:7867
|
||||
}
|
||||
8
Containers/apache/caddy-imports/onlyoffice
Normal file
8
Containers/apache/caddy-imports/onlyoffice
Normal file
@@ -0,0 +1,8 @@
|
||||
# Onlyoffice
|
||||
route /onlyoffice/* {
|
||||
uri strip_prefix /onlyoffice
|
||||
reverse_proxy {$ONLYOFFICE_HOST}:80 {
|
||||
header_up X-Forwarded-Host {http.request.host}/onlyoffice
|
||||
header_up X-Forwarded-Proto https
|
||||
}
|
||||
}
|
||||
5
Containers/apache/caddy-imports/talk
Normal file
5
Containers/apache/caddy-imports/talk
Normal file
@@ -0,0 +1,5 @@
|
||||
# Talk
|
||||
route /standalone-signaling/* {
|
||||
uri strip_prefix /standalone-signaling
|
||||
reverse_proxy {$TALK_HOST}:8081
|
||||
}
|
||||
@@ -2,8 +2,5 @@
|
||||
|
||||
nc -z "$NEXTCLOUD_HOST" 9000 || exit 0
|
||||
nc -z localhost 8000 || exit 1
|
||||
if [ "$APACHE_PORT" != '443' ]; then
|
||||
nc -z localhost "$APACHE_PORT" || exit 1
|
||||
else
|
||||
nc -z "$NC_DOMAIN" "$APACHE_PORT" || exit 1
|
||||
fi
|
||||
nc -z localhost "$APACHE_PORT" || exit 1
|
||||
nc -z "$NC_DOMAIN" 443 || exit 1
|
||||
|
||||
7
Containers/apache/nextcloud
Normal file
7
Containers/apache/nextcloud
Normal file
@@ -0,0 +1,7 @@
|
||||
# Nextcloud
|
||||
route /* {
|
||||
rewrite /.well-known/carddav /remote.php/dav
|
||||
rewrite /.well-known/caldav /remote.php/dav
|
||||
header Strict-Transport-Security max-age=31536000;
|
||||
reverse_proxy localhost:8000
|
||||
}
|
||||
@@ -45,9 +45,18 @@ else
|
||||
fi
|
||||
echo "$CADDYFILE" > /Caddyfile
|
||||
|
||||
# Overwrite nextcloud conf
|
||||
cat /nextcloud > /mnt/data/caddy-imports/nextcloud
|
||||
|
||||
# Fix the Caddyfile format
|
||||
caddy fmt --overwrite /Caddyfile
|
||||
|
||||
# Add caddy path
|
||||
mkdir -p /mnt/data/caddy/
|
||||
|
||||
# Add caddy import path
|
||||
mkdir -p /mnt/data/caddy-imports
|
||||
|
||||
# Fix apache startup
|
||||
rm -f /usr/local/apache2/logs/httpd.pid
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
FROM alpine:3.17.1
|
||||
FROM alpine:3.17.3
|
||||
|
||||
RUN set -ex; \
|
||||
\
|
||||
apk add --no-cache \
|
||||
util-linux-misc \
|
||||
bash \
|
||||
borgbackup \
|
||||
rsync \
|
||||
@@ -12,11 +13,8 @@ RUN set -ex; \
|
||||
|
||||
VOLUME /root
|
||||
|
||||
COPY start.sh /usr/bin/
|
||||
COPY backupscript.sh /
|
||||
RUN chmod +x /usr/bin/start.sh; \
|
||||
chmod +x /backupscript.sh
|
||||
COPY --chmod=770 *.sh /
|
||||
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
|
||||
USER root
|
||||
ENTRYPOINT ["start.sh"]
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -24,6 +24,14 @@ for directory in "${VOLUME_DIRS[@]}"; do
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
# Test if default volumes are there
|
||||
DEFAULT_VOLUMES=(nextcloud_aio_apache nextcloud_aio_nextcloud nextcloud_aio_database nextcloud_aio_database_dump nextcloud_aio_elasticsearch nextcloud_aio_nextcloud_data nextcloud_aio_mastercontainer)
|
||||
for volume in "${DEFAULT_VOLUMES[@]}"; do
|
||||
if ! mountpoint -q "/nextcloud_aio_volumes/$volume"; then
|
||||
echo "$volume is missing which is not intended."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if target is mountpoint
|
||||
if ! mountpoint -q /mnt/borgbackup; then
|
||||
@@ -86,8 +94,9 @@ if [ "$BORG_MODE" = backup ]; then
|
||||
if ! [ -f "$BORG_BACKUP_DIRECTORY/config" ]; then
|
||||
# Don't initialize if already initialized
|
||||
if [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
|
||||
echo "Cannot initialize a new repository as that was already done at least one time."
|
||||
echo "If you still want to do so, you may delete the 'borg.config' file that is stored in the mastercontainer volume manually, which will allow you to initialize a new borg repository in the chosen directory:"
|
||||
echo "No borg config file was found in the targeted directory."
|
||||
echo "This might happen if the targeted directory is located on an external drive and the drive not connected anymore. You should check this."
|
||||
echo "If you instead want to initialize a new backup repository, you may delete the 'borg.config' file that is stored in the mastercontainer volume manually, which will allow you to initialize a new borg repository in the chosen directory:"
|
||||
echo "sudo docker exec nextcloud-aio-mastercontainer rm /mnt/docker-aio-config/data/borg.config"
|
||||
exit 1
|
||||
fi
|
||||
@@ -127,15 +136,26 @@ if [ "$BORG_MODE" = backup ]; then
|
||||
# Borg options
|
||||
# auto,zstd compression seems to has the best ratio based on:
|
||||
# https://forum.level1techs.com/t/optimal-compression-for-borg-backups/145870/6
|
||||
BORG_OPTS=(-v --stats --compression "auto,zstd" --exclude-caches --checkpoint-interval 86400)
|
||||
BORG_OPTS=(-v --stats --compression "auto,zstd" --exclude-caches)
|
||||
|
||||
# Exclude the nextcloud log and audit log for GDPR reasons
|
||||
BORG_EXCLUDE=(--exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/nextcloud.log*" --exclude "/nextcloud_aio_volumes/nextcloud_aio_nextcloud/data/audit.log")
|
||||
|
||||
# Make sure that there is always a borg.config file before creating a new backup
|
||||
if ! [ -f "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config" ]; then
|
||||
echo "Did not find borg.config file in the mastercontainer volume."
|
||||
echo "Cannot create a backup as this is wrong."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create the backup
|
||||
echo "Starting the backup..."
|
||||
get_start_time
|
||||
if ! borg create "${BORG_OPTS[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/"; then
|
||||
if ! borg create "${BORG_OPTS[@]}" "${BORG_EXCLUDE[@]}" "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio" "/nextcloud_aio_volumes/"; then
|
||||
echo "Deleting the failed backup archive..."
|
||||
borg delete --stats "$BORG_BACKUP_DIRECTORY::$CURRENT_DATE-nextcloud-aio"
|
||||
echo "Backup failed!"
|
||||
echo "You might want to check the backup integrity via the AIO interface."
|
||||
if [ "$NEW_REPOSITORY" = 1 ]; then
|
||||
echo "Deleting borg.config file so that you can choose a different location for the backup."
|
||||
rm "/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/borg.config"
|
||||
@@ -264,17 +284,18 @@ if [ "$BORG_MODE" = restore ]; then
|
||||
|
||||
# Restore everything except the configuration file
|
||||
if ! rsync --stats --archive --human-readable -vv --delete \
|
||||
--exclude "nextcloud_aio_apache/caddy/"** \
|
||||
--exclude "nextcloud_aio_mastercontainer/caddy/"** \
|
||||
--exclude "nextcloud_aio_mastercontainer/certs/"** \
|
||||
--exclude "nextcloud_aio_apache/caddy/**" \
|
||||
--exclude "nextcloud_aio_mastercontainer/caddy/**" \
|
||||
--exclude "nextcloud_aio_nextcloud/data/nextcloud.log*" \
|
||||
--exclude "nextcloud_aio_nextcloud/data/audit.log" \
|
||||
--exclude "nextcloud_aio_mastercontainer/certs/**" \
|
||||
--exclude "nextcloud_aio_mastercontainer/data/configuration.json" \
|
||||
--exclude "nextcloud_aio_mastercontainer/data/daily_backup_running" \
|
||||
--exclude "nextcloud_aio_mastercontainer/data/session_date_file" \
|
||||
--exclude "nextcloud_aio_mastercontainer/session/"** \
|
||||
--exclude "nextcloud_aio_mastercontainer/session/**" \
|
||||
/tmp/borg/nextcloud_aio_volumes/ /nextcloud_aio_volumes; then
|
||||
RESTORE_FAILED=1
|
||||
echo "Something failed while restoring from backup."
|
||||
umount /tmp/borg
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Save current aio password
|
||||
@@ -294,9 +315,8 @@ if [ "$BORG_MODE" = restore ]; then
|
||||
if ! rsync --archive --human-readable -vv \
|
||||
/tmp/borg/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/configuration.json \
|
||||
/nextcloud_aio_volumes/nextcloud_aio_mastercontainer/data/configuration.json; then
|
||||
RESTORE_FAILED=1
|
||||
echo "Something failed while restoring the configuration.json."
|
||||
umount /tmp/borg
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Set backup-mode to restore since it was a restore
|
||||
@@ -331,6 +351,10 @@ if [ "$BORG_MODE" = restore ]; then
|
||||
|
||||
umount /tmp/borg
|
||||
|
||||
if [ "$RESTORE_FAILED" = 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Inform user
|
||||
get_expiration_time
|
||||
echo "Restore finished successfully on $END_DATE_READABLE ($DURATION_READABLE)"
|
||||
@@ -355,6 +379,7 @@ if [ "$BORG_MODE" = check ]; then
|
||||
# Perform the check
|
||||
if ! borg check -v --verify-data "$BORG_BACKUP_DIRECTORY"; then
|
||||
echo "Some errors were found while checking the backup integrity!"
|
||||
echo "Check the AIO interface for advices on how to proceed now!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/0.105/alpine/Dockerfile
|
||||
FROM clamav/clamav:0.105.1-7
|
||||
# Probably from this file: https://github.com/Cisco-Talos/clamav-docker/blob/main/clamav/1.1/alpine/Dockerfile
|
||||
FROM clamav/clamav:1.1.0-1
|
||||
|
||||
RUN apk add --no-cache tzdata
|
||||
COPY clamav.conf /tmp/
|
||||
RUN cat /tmp/clamav.conf >> /etc/clamav/clamd.conf
|
||||
COPY clamav.conf /tmp/clamav.conf
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache tzdata; \
|
||||
cat /tmp/clamav.conf | tee -a /etc/clamav/clamd.conf; \
|
||||
rm /tmp/clamav.conf
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/tree/master/docker
|
||||
FROM collabora/code:22.05.10.1.1
|
||||
FROM collabora/code:22.05.14.3.1
|
||||
|
||||
USER root
|
||||
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
FROM alpine:3.17.1
|
||||
RUN apk add --no-cache lighttpd bash netcat-openbsd
|
||||
FROM alpine:3.17.3
|
||||
RUN set -ex; \
|
||||
apk add --no-cache bash lighttpd netcat-openbsd; \
|
||||
adduser -S www-data -G www-data; \
|
||||
rm -rf /etc/lighttpd/lighttpd.conf; \
|
||||
chmod +r -R /etc/lighttpd; \
|
||||
mkdir -p /var/www/domaincheck; \
|
||||
chown www-data:www-data -R /var/www
|
||||
COPY --chown=www-data:www-data lighttpd.conf /etc/lighttpd/lighttpd.conf
|
||||
|
||||
RUN adduser -S www-data -G www-data
|
||||
RUN rm -rf /etc/lighttpd/lighttpd.conf
|
||||
COPY lighttpd.conf /etc/lighttpd/lighttpd.conf
|
||||
RUN chmod +r -R /etc/lighttpd && \
|
||||
chown www-data:www-data -R /var/www && \
|
||||
chown www-data:www-data /etc/lighttpd/lighttpd.conf
|
||||
|
||||
COPY start.sh /
|
||||
RUN chmod +x /start.sh
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
USER www-data
|
||||
RUN mkdir -p /var/www/domaincheck/
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
|
||||
HEALTHCHECK CMD nc -z localhost $APACHE_PORT || exit 1
|
||||
|
||||
@@ -1,20 +1,15 @@
|
||||
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
|
||||
FROM elasticsearch:7.17.8
|
||||
|
||||
RUN elasticsearch-plugin install --batch ingest-attachment
|
||||
FROM elasticsearch:7.17.10
|
||||
|
||||
RUN set -ex; \
|
||||
\
|
||||
export DEBIAN_FRONTEND=noninteractive; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
tzdata \
|
||||
; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY start.sh /
|
||||
|
||||
RUN chmod +x /start.sh
|
||||
ENTRYPOINT ["/bin/tini", "--", "/start.sh"]
|
||||
rm -rf /var/lib/apt/lists/*; \
|
||||
elasticsearch-plugin install --batch ingest-attachment
|
||||
|
||||
HEALTHCHECK CMD nc -z localhost 9200 || exit 1
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Only start container if database is accessible (needed for backup to work correctly)
|
||||
while ! nc -z "$POSTGRES_HOST" 5432; do
|
||||
echo "Waiting for database to start..."
|
||||
sleep 5
|
||||
done
|
||||
|
||||
# Show wiki if vm.max_map_count is too low
|
||||
if [ "$(sysctl -n vm.max_map_count)" -le 65530 ]; then
|
||||
echo "max_map_count is too low and needs to be adjusted."
|
||||
echo "See https://github.com/nextcloud/all-in-one/discussions/1775 how to change max_map_count"
|
||||
fi
|
||||
|
||||
# Run initial entrypoint
|
||||
/usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
exec "$@"
|
||||
@@ -1,17 +1,35 @@
|
||||
# From https://github.com/h2non/imaginary/blob/master/Dockerfile
|
||||
FROM nextcloud/imaginary:20230201
|
||||
|
||||
USER root
|
||||
FROM golang:1.20.4-alpine3.17 as go
|
||||
RUN set -ex; \
|
||||
\
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
netcat \
|
||||
; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
apk add --no-cache \
|
||||
vips-dev \
|
||||
vips-magick \
|
||||
vips-heif \
|
||||
vips-jxl \
|
||||
vips-poppler \
|
||||
build-base; \
|
||||
go install github.com/h2non/imaginary@b632dae8cc321452c3f85bcae79c580b1ae1ed84;
|
||||
|
||||
FROM alpine:3.17.3
|
||||
RUN set -ex; \
|
||||
apk add --no-cache \
|
||||
tzdata \
|
||||
ca-certificates \
|
||||
netcat-openbsd \
|
||||
vips \
|
||||
vips-magick \
|
||||
vips-heif \
|
||||
vips-jxl \
|
||||
vips-poppler
|
||||
|
||||
COPY --from=go /go/bin/imaginary /usr/local/bin/imaginary
|
||||
|
||||
ENV PORT 9000
|
||||
|
||||
USER nobody
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/imaginary", "-return-size", "-max-allowed-resolution", "222.2"]
|
||||
# https://github.com/h2non/imaginary#memory-issues
|
||||
ENV MALLOC_ARENA_MAX=2
|
||||
ENTRYPOINT ["imaginary", "-return-size", "-max-allowed-resolution", "222.2"]
|
||||
|
||||
HEALTHCHECK CMD nc -z localhost 9000 || exit 1
|
||||
HEALTHCHECK CMD nc -z localhost "$PORT" || exit 1
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -6,17 +6,29 @@
|
||||
storage file_system {
|
||||
root /mnt/docker-aio-config/caddy/
|
||||
}
|
||||
|
||||
log {
|
||||
level ERROR
|
||||
}
|
||||
}
|
||||
|
||||
http://:80 {
|
||||
redir https://{host}{uri}
|
||||
}
|
||||
|
||||
https://:8443 {
|
||||
# Match only host names and not ip-addresses:
|
||||
https://*.*:8443,
|
||||
https://*.*.*:8443,
|
||||
https://*.*.*.*:8443,
|
||||
https://*.*.*.*.*:8443,
|
||||
https://*.*.*.*.*.*:8443 {
|
||||
|
||||
reverse_proxy localhost:8000
|
||||
|
||||
tls {
|
||||
on_demand
|
||||
issuer acme {
|
||||
disable_tlsalpn_challenge
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,36 +1,32 @@
|
||||
# Docker CLI is a requirement
|
||||
FROM docker:20.10.23-dind as dind
|
||||
FROM docker:23.0.6-cli as docker
|
||||
|
||||
# Caddy is a requirement
|
||||
FROM caddy:2.6.2-alpine as caddy
|
||||
FROM caddy:2.6.4-alpine as caddy
|
||||
|
||||
# From https://github.com/docker-library/php/blob/master/8.1/alpine3.17/fpm/Dockerfile
|
||||
FROM php:8.1.14-fpm-alpine3.17
|
||||
# From https://github.com/docker-library/php/blob/master/8.2/alpine3.17/fpm/Dockerfile
|
||||
FROM php:8.2.6-fpm-alpine3.17
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8080
|
||||
EXPOSE 8443
|
||||
|
||||
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
|
||||
COPY --from=docker /usr/local/bin/docker /usr/local/bin/docker
|
||||
|
||||
WORKDIR /var/www/docker-aio
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache shadow; \
|
||||
groupmod -g 333 xfs; \
|
||||
usermod -u 333 -g 333 xfs; \
|
||||
groupmod -g 33 www-data; \
|
||||
usermod -u 33 -g 33 www-data
|
||||
|
||||
EXPOSE 80
|
||||
EXPOSE 8080
|
||||
EXPOSE 8443
|
||||
|
||||
RUN mkdir -p /mnt/docker-aio-config/;
|
||||
|
||||
VOLUME /mnt/docker-aio-config/
|
||||
|
||||
RUN mkdir -p /var/www/docker-aio;
|
||||
|
||||
WORKDIR /var/www/docker-aio
|
||||
|
||||
RUN set -ex; \
|
||||
usermod -u 33 -g 33 www-data; \
|
||||
\
|
||||
apk add --no-cache \
|
||||
util-linux-misc \
|
||||
ca-certificates \
|
||||
wget \
|
||||
tzdata \
|
||||
bash \
|
||||
apache2 \
|
||||
apache2-proxy \
|
||||
@@ -40,16 +36,14 @@ RUN set -ex; \
|
||||
sudo \
|
||||
netcat-openbsd \
|
||||
curl \
|
||||
grep
|
||||
|
||||
RUN set -ex; \
|
||||
grep; \
|
||||
\
|
||||
apk add --no-cache --virtual .build-deps \
|
||||
autoconf \
|
||||
build-base; \
|
||||
pecl install APCu-5.1.22; \
|
||||
docker-php-ext-enable apcu; \
|
||||
rm -r /tmp/pear; \
|
||||
\
|
||||
runDeps="$( \
|
||||
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
|
||||
| tr ',' '\n' \
|
||||
@@ -58,38 +52,33 @@ RUN set -ex; \
|
||||
)"; \
|
||||
apk add --virtual .nextcloud-aio-rundeps $runDeps; \
|
||||
apk del .build-deps; \
|
||||
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf
|
||||
|
||||
COPY --from=caddy /usr/bin/caddy /usr/bin/
|
||||
RUN chmod +x /usr/bin/caddy
|
||||
|
||||
COPY --from=dind /usr/local/bin/docker /usr/local/bin/
|
||||
RUN chmod +x /usr/local/bin/docker
|
||||
|
||||
RUN set -e && \
|
||||
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
|
||||
sed -i 's/^pm = dynamic/pm = ondemand/' /usr/local/etc/php-fpm.d/www.conf; \
|
||||
sed -i 's/^pm.max_children =.*/pm.max_children = 80/' /usr/local/etc/php-fpm.d/www.conf; \
|
||||
sed -i 's|access.log = /proc/self/fd/2|access.log = /proc/self/fd/1|' /usr/local/etc/php-fpm.d/docker.conf; \
|
||||
\
|
||||
apk add --no-cache git; \
|
||||
wget https://getcomposer.org/installer -O - | php -- --install-dir=/usr/local/bin --filename=composer; \
|
||||
chmod +x /usr/local/bin/composer; \
|
||||
cd /var/www/docker-aio; \
|
||||
git clone https://github.com/nextcloud-releases/all-in-one.git --depth 1 .; \
|
||||
find ./ -not -path ./php -maxdepth 1 -mindepth 1 -delete; \
|
||||
chown www-data:www-data -R /var/www/docker-aio; \
|
||||
cd php; \
|
||||
composer install --no-dev; \
|
||||
composer clearcache; \
|
||||
sudo -u www-data composer install --no-dev; \
|
||||
sudo -u www-data composer clear-cache; \
|
||||
cd ..; \
|
||||
rm -f /usr/local/bin/composer; \
|
||||
chmod 770 -R ./; \
|
||||
chown www-data:www-data -R /var/www; \
|
||||
rm -r ./php/data; \
|
||||
rm -r ./php/session; \
|
||||
apk del --no-cache git
|
||||
|
||||
RUN mkdir -p /etc/apache2/certs && \
|
||||
cd /etc/apache2/certs && \
|
||||
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=DE/ST=BE/L=Local/O=Dev/CN=nextcloud.local" -keyout ./ssl.key -out ./ssl.crt;
|
||||
|
||||
COPY mastercontainer.conf /etc/apache2/sites-available/
|
||||
|
||||
RUN sed -i \
|
||||
chmod -R 770 /var/www/docker-aio; \
|
||||
chown -R www-data:www-data /var/www; \
|
||||
rm -r php/data; \
|
||||
rm -r php/session; \
|
||||
\
|
||||
mkdir -p /etc/apache2/certs; \
|
||||
cd /etc/apache2/certs; \
|
||||
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=DE/ST=BE/L=Local/O=Dev/CN=nextcloud.local" -keyout /etc/apache2/certs/ssl.key -out /etc/apache2/certs/ssl.crt; \
|
||||
\
|
||||
sed -i \
|
||||
-e '/^Listen /d' \
|
||||
-e 's/User apache/User www-data/g' \
|
||||
-e 's/Group apache/Group www-data/g' \
|
||||
@@ -108,35 +97,23 @@ RUN sed -i \
|
||||
echo "ServerName localhost" | tee -a /etc/apache2/httpd.conf; \
|
||||
echo "LoadModule ssl_module modules/mod_ssl.so" | tee -a /etc/apache2/httpd.conf; \
|
||||
echo "LoadModule socache_shmcb_module modules/mod_socache_shmcb.so" | tee -a /etc/apache2/httpd.conf; \
|
||||
echo "Include /etc/apache2/sites-available/mastercontainer.conf" | tee -a /etc/apache2/httpd.conf
|
||||
|
||||
RUN set -ex; \
|
||||
echo "Include /etc/apache2/sites-available/mastercontainer.conf" | tee -a /etc/apache2/httpd.conf; \
|
||||
\
|
||||
rm -f /etc/apache2/conf.d/default.conf \
|
||||
/etc/apache2/conf.d/userdir.conf \
|
||||
/etc/apache2/conf.d/info.conf
|
||||
|
||||
RUN mkdir /var/log/supervisord; \
|
||||
/etc/apache2/conf.d/info.conf; \
|
||||
\
|
||||
mkdir /var/log/supervisord; \
|
||||
mkdir /var/run/supervisord;
|
||||
|
||||
COPY Caddyfile /
|
||||
COPY start.sh /usr/bin/
|
||||
COPY backup-time-file-watcher.sh /
|
||||
COPY session-deduplicator.sh /
|
||||
COPY cron.sh /
|
||||
COPY daily-backup.sh /
|
||||
COPY supervisord.conf /
|
||||
COPY healthcheck.sh /
|
||||
RUN chmod +x /usr/bin/start.sh; \
|
||||
chmod +x /cron.sh; \
|
||||
chmod +x /session-deduplicator.sh; \
|
||||
chmod +x /backup-time-file-watcher.sh; \
|
||||
chmod +x /daily-backup.sh; \
|
||||
chmod a+r /Caddyfile; \
|
||||
chmod +x /healthcheck.sh
|
||||
COPY --chmod=775 *.sh /
|
||||
COPY --chmod=664 Caddyfile /Caddyfile
|
||||
COPY --chmod=664 supervisord.conf /supervisord.conf
|
||||
COPY mastercontainer.conf /etc/apache2/sites-available/mastercontainer.conf
|
||||
|
||||
USER root
|
||||
|
||||
ENTRYPOINT ["start.sh"]
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
|
||||
|
||||
HEALTHCHECK CMD /healthcheck.sh
|
||||
|
||||
@@ -38,8 +38,10 @@ while true; do
|
||||
# Make sure to delete the lock file always
|
||||
rm -f "/mnt/docker-aio-config/data/daily_backup_running"
|
||||
|
||||
# Check for updates and send notification if yes
|
||||
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateNotification.php
|
||||
# Check for updates and send notification if yes on saturdays
|
||||
if [ "$(date +%u)" = 6 ]; then
|
||||
sudo -u www-data php /var/www/docker-aio/php/src/Cron/UpdateNotification.php
|
||||
fi
|
||||
|
||||
# Check if AIO is outdated
|
||||
sudo -u www-data php /var/www/docker-aio/php/src/Cron/OutdatedNotification.php
|
||||
@@ -47,8 +49,13 @@ while true; do
|
||||
# Remove sessions older than 24h
|
||||
find "/mnt/docker-aio-config/session/" -mindepth 1 -mmin +1440 -delete
|
||||
|
||||
# Remove nextcloud-aio-domaincheck container
|
||||
if sudo -u www-data docker ps --format "{{.Names}}" --filter "status=exited" | grep -q "^nextcloud-aio-domaincheck$"; then
|
||||
sudo -u www-data docker container remove nextcloud-aio-domaincheck
|
||||
fi
|
||||
|
||||
# Remove dangling images
|
||||
sudo -u www-data docker image prune -f
|
||||
sudo -u www-data docker image prune --force
|
||||
|
||||
# Wait 60s so that the whole loop will not be executed again
|
||||
sleep 60
|
||||
|
||||
@@ -11,7 +11,7 @@ fi
|
||||
# Delete all active sessions and create a lock file
|
||||
# But don't kick out the user if the mastercontainer was just updated since we block the interface either way with the lock file
|
||||
if [ "$LOCK_FILE_PRESENT" = 0 ] || ! [ -f "/mnt/docker-aio-config/data/daily_backup_running" ]; then
|
||||
rm -f "/mnt/docker-aio-config/session/"*
|
||||
find "/mnt/docker-aio-config/session/" -mindepth 1 -delete
|
||||
fi
|
||||
sudo -u www-data touch "/mnt/docker-aio-config/data/daily_backup_running"
|
||||
|
||||
@@ -38,9 +38,10 @@ if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
||||
fi
|
||||
|
||||
# Wait for watchtower to stop
|
||||
if [ "$AUTOMATIC_UPDATES" = 1 ] && ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; then
|
||||
echo "Something seems to be wrong: Watchtower should be started at this step."
|
||||
else
|
||||
if [ "$AUTOMATIC_UPDATES" = 1 ]; then
|
||||
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; then
|
||||
echo "Something seems to be wrong: Watchtower should be started at this step."
|
||||
fi
|
||||
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-watchtower$"; do
|
||||
echo "Waiting for watchtower to stop"
|
||||
sleep 30
|
||||
@@ -58,6 +59,13 @@ fi
|
||||
if [ "$DAILY_BACKUP" = 1 ]; then
|
||||
echo "Creating daily backup..."
|
||||
sudo -u www-data php /var/www/docker-aio/php/src/Cron/CreateBackup.php
|
||||
if ! docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-borgbackup$"; then
|
||||
echo "Something seems to be wrong: the borg container should be started at this step."
|
||||
fi
|
||||
while docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-borgbackup$"; do
|
||||
echo "Waiting for backup container to stop"
|
||||
sleep 30
|
||||
done
|
||||
fi
|
||||
|
||||
# Execute backup check
|
||||
|
||||
@@ -6,6 +6,12 @@ print_green() {
|
||||
printf "%b%s%b\n" "\e[0;92m" "$TEXT" "\e[0m"
|
||||
}
|
||||
|
||||
# Function to show text in red
|
||||
print_red() {
|
||||
local TEXT="$1"
|
||||
printf "%b%s%b\n" "\e[0;31m" "$TEXT" "\e[0m"
|
||||
}
|
||||
|
||||
# Function to check if number was provided
|
||||
check_if_number() {
|
||||
case "${1}" in
|
||||
@@ -14,12 +20,19 @@ case "${1}" in
|
||||
esac
|
||||
}
|
||||
|
||||
# Check if running as root user
|
||||
if [ "$EUID" != "0" ]; then
|
||||
print_red "Container does not run as root user. This is not supported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if socket is available and readable
|
||||
if ! [ -a "/var/run/docker.sock" ]; then
|
||||
echo "Docker socket is not available. Cannot continue."
|
||||
print_red "Docker socket is not available. Cannot continue."
|
||||
echo "If you did this by purpose because you don't want the container to have access to the docker socket, see https://github.com/nextcloud/all-in-one/tree/main/manual-install."
|
||||
exit 1
|
||||
elif ! mountpoint -q "/mnt/docker-aio-config"; then
|
||||
echo "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
|
||||
print_red "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
|
||||
exit 1
|
||||
elif ! sudo -u www-data test -r /var/run/docker.sock; then
|
||||
echo "Trying to fix docker.sock permissions internally..."
|
||||
@@ -40,14 +53,14 @@ elif ! sudo -u www-data test -r /var/run/docker.sock; then
|
||||
usermod -aG docker www-data
|
||||
fi
|
||||
if ! sudo -u www-data test -r /var/run/docker.sock; then
|
||||
echo "Docker socket is not readable by the www-data user. Cannot continue."
|
||||
print_red "Docker socket is not readable by the www-data user. Cannot continue."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if api version is supported
|
||||
if ! sudo -u www-data docker info &>/dev/null; then
|
||||
echo "Cannot connect to the docker socket. Cannot proceed."
|
||||
print_red "Cannot connect to the docker socket. Cannot proceed."
|
||||
exit 1
|
||||
fi
|
||||
API_VERSION_FILE="$(find ./ -name DockerActionManager.php | head -1)"
|
||||
@@ -57,7 +70,7 @@ API_VERSION_NUMB="$(echo "$API_VERSION" | sed 's/\.//')"
|
||||
LOCAL_API_VERSION_NUMB="$(sudo -u www-data docker version | grep -i "api version" | grep -oP '[0-9]+.[0-9]+' | head -1 | sed 's/\.//')"
|
||||
if [ -n "$LOCAL_API_VERSION_NUMB" ] && [ -n "$API_VERSION_NUMB" ]; then
|
||||
if ! [ "$LOCAL_API_VERSION_NUMB" -ge "$API_VERSION_NUMB" ]; then
|
||||
echo "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
|
||||
print_red "Docker API v$API_VERSION is not supported by your docker engine. Cannot proceed. Please upgrade your docker engine if you want to run Nextcloud AIO!"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
@@ -77,47 +90,52 @@ elif echo "$STORAGE_DRIVER" | grep -q fuse-overlayfs; then
|
||||
fi
|
||||
|
||||
# Check if startup command was executed correctly
|
||||
if ! sudo -u www-data docker ps | grep -q "nextcloud-aio-mastercontainer"; then
|
||||
echo "It seems like you did not give the mastercontainer the correct name?
|
||||
Using a different name is not supported!"
|
||||
if ! sudo -u www-data docker ps --format "{{.Names}}" | grep -q "^nextcloud-aio-mastercontainer$"; then
|
||||
print_red "It seems like you did not give the mastercontainer the correct name? (The 'nextcloud-aio-mastercontainer' container was not found.)
|
||||
Using a different name is not supported since mastercontainer updates will not work in that case!
|
||||
If you are on docker swarm and try to run AIO, see https://github.com/nextcloud/all-in-one#can-i-run-this-with-docker-swarm"
|
||||
exit 1
|
||||
elif ! sudo -u www-data docker volume ls | grep -q "nextcloud_aio_mastercontainer"; then
|
||||
echo "It seems like you did not give the mastercontainer volume the correct name?
|
||||
Using a different name is not supported!"
|
||||
elif ! sudo -u www-data docker volume ls --format "{{.Name}}" | grep -q "^nextcloud_aio_mastercontainer$"; then
|
||||
print_red "It seems like you did not give the mastercontainer volume the correct name? (The 'nextcloud_aio_mastercontainer' volume was not found.)
|
||||
Using a different name is not supported since the built-in backup solution will not work in that case!"
|
||||
exit 1
|
||||
elif ! sudo -u www-data docker inspect nextcloud-aio-mastercontainer | grep -q "nextcloud_aio_mastercontainer"; then
|
||||
print_red "It seems like you did not attach the 'nextcloud_aio_mastercontainer' volume to the mastercontainer?
|
||||
This is not supported since the built-in backup solution will not work in that case!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for other options
|
||||
if [ -n "$NEXTCLOUD_DATADIR" ]; then
|
||||
if [ "$NEXTCLOUD_DATADIR" = "nextcloud_aio_nextcloud_datadir" ]; then
|
||||
echo "NEXTCLOUD_DATADIR is set to $NEXTCLOUD_DATADIR"
|
||||
sleep 1
|
||||
elif ! echo "$NEXTCLOUD_DATADIR" | grep -q "^/" || [ "$NEXTCLOUD_DATADIR" = "/" ]; then
|
||||
echo "You've set NEXTCLOUD_DATADIR but not to an allowed value.
|
||||
The string must start with '/' and must not be equal to '/'.
|
||||
print_red "You've set NEXTCLOUD_DATADIR but not to an allowed value.
|
||||
The string must start with '/' and must not be equal to '/'. Also allowed is 'nextcloud_aio_nextcloud_datadir'.
|
||||
It is set to '$NEXTCLOUD_DATADIR'."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_MOUNT" ]; then
|
||||
if ! echo "$NEXTCLOUD_MOUNT" | grep -q "^/" || [ "$NEXTCLOUD_MOUNT" = "/" ]; then
|
||||
echo "You've set NEXCLOUD_MOUNT but not to an allowed value.
|
||||
print_red "You've set NEXCLOUD_MOUNT but not to an allowed value.
|
||||
The string must start with '/' and must not be equal to '/'.
|
||||
It is set to '$NEXTCLOUD_MOUNT'."
|
||||
exit 1
|
||||
elif [ "$NEXTCLOUD_MOUNT" = "/mnt/ncdata" ] || echo "$NEXTCLOUD_MOUNT" | grep -q "^/mnt/ncdata/"; then
|
||||
echo "'/mnt/ncdata' and '/mnt/ncdata/' are not allowed as values for NEXTCLOUD_MOUNT."
|
||||
print_red "'/mnt/ncdata' and '/mnt/ncdata/' are not allowed as values for NEXTCLOUD_MOUNT."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_DATADIR" ] && [ -n "$NEXTCLOUD_MOUNT" ]; then
|
||||
if [ "$NEXTCLOUD_DATADIR" = "$NEXTCLOUD_MOUNT" ]; then
|
||||
echo "NEXTCLOUD_DATADIR and NEXTCLOUD_MOUNT are not allowed to be equal."
|
||||
print_red "NEXTCLOUD_DATADIR and NEXTCLOUD_MOUNT are not allowed to be equal."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_UPLOAD_LIMIT" ]; then
|
||||
if ! echo "$NEXTCLOUD_UPLOAD_LIMIT" | grep -q '^[0-9]\+G$'; then
|
||||
echo "You've set NEXTCLOUD_UPLOAD_LIMIT but not to an allowed value.
|
||||
print_red "You've set NEXTCLOUD_UPLOAD_LIMIT but not to an allowed value.
|
||||
The string must start with a number and end with 'G'.
|
||||
It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
|
||||
exit 1
|
||||
@@ -125,7 +143,7 @@ It is set to '$NEXTCLOUD_UPLOAD_LIMIT'."
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_MAX_TIME" ]; then
|
||||
if ! echo "$NEXTCLOUD_MAX_TIME" | grep -q '^[0-9]\+$'; then
|
||||
echo "You've set NEXTCLOUD_MAX_TIME but not to an allowed value.
|
||||
print_red "You've set NEXTCLOUD_MAX_TIME but not to an allowed value.
|
||||
The string must be a number. E.g. '3600'.
|
||||
It is set to '$NEXTCLOUD_MAX_TIME'."
|
||||
exit 1
|
||||
@@ -133,7 +151,7 @@ It is set to '$NEXTCLOUD_MAX_TIME'."
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_MEMORY_LIMIT" ]; then
|
||||
if ! echo "$NEXTCLOUD_MEMORY_LIMIT" | grep -q '^[0-9]\+M$'; then
|
||||
echo "You've set NEXTCLOUD_MEMORY_LIMIT but not to an allowed value.
|
||||
print_red "You've set NEXTCLOUD_MEMORY_LIMIT but not to an allowed value.
|
||||
The string must start with a number and end with 'M'.
|
||||
It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
|
||||
exit 1
|
||||
@@ -141,64 +159,64 @@ It is set to '$NEXTCLOUD_MEMORY_LIMIT'."
|
||||
fi
|
||||
if [ -n "$APACHE_PORT" ]; then
|
||||
if ! check_if_number "$APACHE_PORT"; then
|
||||
echo "You provided an Apache port but did not only use numbers.
|
||||
print_red "You provided an Apache port but did not only use numbers.
|
||||
It is set to '$APACHE_PORT'."
|
||||
exit 1
|
||||
elif ! [ "$APACHE_PORT" -le 65535 ] || ! [ "$APACHE_PORT" -ge 1 ]; then
|
||||
echo "The provided Apache port is invalid. It must be between 1 and 65535"
|
||||
print_red "The provided Apache port is invalid. It must be between 1 and 65535"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$APACHE_IP_BINDING" ]; then
|
||||
if ! echo "$APACHE_IP_BINDING" | grep -q '^[0-9.]\+$'; then
|
||||
echo "You provided an ip-address for the apache container's ip-binding but it was not a valid ip-address.
|
||||
print_red "You provided an ip-address for the apache container's ip-binding but it was not a valid ip-address.
|
||||
It is set to '$APACHE_IP_BINDING'."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$TALK_PORT" ]; then
|
||||
if ! check_if_number "$TALK_PORT"; then
|
||||
echo "You provided an Talk port but did not only use numbers.
|
||||
print_red "You provided an Talk port but did not only use numbers.
|
||||
It is set to '$TALK_PORT'."
|
||||
exit 1
|
||||
elif ! [ "$TALK_PORT" -le 65535 ] || ! [ "$TALK_PORT" -ge 1 ]; then
|
||||
echo "The provided Talk port is invalid. It must be between 1 and 65535"
|
||||
print_red "The provided Talk port is invalid. It must be between 1 and 65535"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$APACHE_PORT" ] && [ -n "$TALK_PORT" ]; then
|
||||
if [ "$APACHE_PORT" = "$TALK_PORT" ]; then
|
||||
echo "APACHE_PORT and TALK_PORT are not allowed to be equal."
|
||||
print_red "APACHE_PORT and TALK_PORT are not allowed to be equal."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$DOCKER_SOCKET_PATH" ]; then
|
||||
if ! echo "$DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$DOCKER_SOCKET_PATH" | grep -q "/$"; then
|
||||
echo "You've set DOCKER_SOCKET_PATH but not to an allowed value.
|
||||
if [ -n "$WATCHTOWER_DOCKER_SOCKET_PATH" ]; then
|
||||
if ! echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "^/" || echo "$WATCHTOWER_DOCKER_SOCKET_PATH" | grep -q "/$"; then
|
||||
print_red "You've set WATCHTOWER_DOCKER_SOCKET_PATH but not to an allowed value.
|
||||
The string must start with '/' and must not end with '/'.
|
||||
It is set to '$DOCKER_SOCKET_PATH'."
|
||||
It is set to '$WATCHTOWER_DOCKER_SOCKET_PATH'."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_TRUSTED_CACERTS_DIR" ]; then
|
||||
if ! echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "^/" || echo "$NEXTCLOUD_TRUSTED_CACERTS_DIR" | grep -q "/$"; then
|
||||
echo "You've set NEXTCLOUD_TRUSTED_CACERTS_DIR but not to an allowed value.
|
||||
print_red "You've set NEXTCLOUD_TRUSTED_CACERTS_DIR but not to an allowed value.
|
||||
It should be an absolute path to a directory that starts with '/' but not end with '/'.
|
||||
It is set to '$NEXTCLOUD_TRUSTED_CACERTS_DIR '."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_STARTUP_APPS" ]; then
|
||||
if ! echo "$NEXTCLOUD_STARTUP_APPS" | grep -q "^[a-z _-]\+$"; then
|
||||
echo "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
|
||||
It needs to be a string. Allowed are small letters a-z, spaces, hyphens and '_'.
|
||||
if ! echo "$NEXTCLOUD_STARTUP_APPS" | grep -q "^[a-z0-9 _-]\+$"; then
|
||||
print_red "You've set NEXTCLOUD_STARTUP_APPS but not to an allowed value.
|
||||
It needs to be a string. Allowed are small letters a-z, 0-9, spaces, hyphens and '_'.
|
||||
It is set to '$NEXTCLOUD_STARTUP_APPS'."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_ADDITIONAL_APKS" ]; then
|
||||
if ! echo "$NEXTCLOUD_ADDITIONAL_APKS" | grep -q "^[a-z0-9 ._-]\+$"; then
|
||||
echo "You've set NEXTCLOUD_ADDITIONAL_APKS but not to an allowed value.
|
||||
print_red "You've set NEXTCLOUD_ADDITIONAL_APKS but not to an allowed value.
|
||||
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
|
||||
It is set to '$NEXTCLOUD_ADDITIONAL_APKS'."
|
||||
exit 1
|
||||
@@ -206,7 +224,7 @@ It is set to '$NEXTCLOUD_ADDITIONAL_APKS'."
|
||||
fi
|
||||
if [ -n "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" ]; then
|
||||
if ! echo "$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS" | grep -q "^[a-z0-9 ._-]\+$"; then
|
||||
echo "You've set NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS but not to an allowed value.
|
||||
print_red "You've set NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS but not to an allowed value.
|
||||
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens, dots and '_'.
|
||||
It is set to '$NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS'."
|
||||
exit 1
|
||||
@@ -217,9 +235,10 @@ fi
|
||||
# Prevents issues like https://github.com/nextcloud/all-in-one/discussions/565
|
||||
curl https://nextcloud.com &>/dev/null
|
||||
if [ "$?" = 6 ]; then
|
||||
echo "Could not resolve the host nextcloud.com."
|
||||
print_red "Could not resolve the host nextcloud.com."
|
||||
echo "Most likely the DNS resolving does not work."
|
||||
echo "You should be able to fix this by adding the '--dns=\"ip.address.of.dns.server\"' option to the docker run command."
|
||||
echo "You should be able to fix this by following https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html"
|
||||
echo "Apart from that, there has been this: https://github.com/nextcloud/all-in-one/discussions/2065"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -267,7 +286,7 @@ if [ -f ./ssl.crt ] && [ -f ./ssl.key ]; then
|
||||
cp "$GENERATED_CERTS/ssl.key" ./
|
||||
fi
|
||||
|
||||
print_green "Initial startup of Nextcloud All In One complete!
|
||||
print_green "Initial startup of Nextcloud All-in-One complete!
|
||||
You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!
|
||||
E.g. https://internal.ip.of.this.server:8080
|
||||
|
||||
@@ -280,4 +299,10 @@ export TZ=UTC
|
||||
# Fix apache startup
|
||||
rm -f /var/run/apache2/httpd.pid
|
||||
|
||||
# Fix the Caddyfile format
|
||||
caddy fmt --overwrite /Caddyfile
|
||||
|
||||
# Fix caddy log
|
||||
chmod 777 /root
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# From https://github.com/nextcloud/docker/blob/master/23/fpm-alpine/Dockerfile
|
||||
FROM php:8.0.27-fpm-alpine3.16
|
||||
FROM php:8.0.28-fpm-alpine3.16
|
||||
|
||||
# Custom: change id of www-data user as it needs to be the same like on old installations
|
||||
RUN set -ex; \
|
||||
@@ -27,32 +27,21 @@ RUN set -ex; \
|
||||
apk add --no-cache --virtual .build-deps \
|
||||
$PHPIZE_DEPS \
|
||||
autoconf \
|
||||
libtool \
|
||||
freetype-dev \
|
||||
gmp-dev \
|
||||
icu-dev \
|
||||
imagemagick-dev \
|
||||
libevent-dev \
|
||||
libjpeg-turbo-dev \
|
||||
libmcrypt-dev \
|
||||
libpng-dev \
|
||||
libmemcached-dev \
|
||||
libpng-dev \
|
||||
libwebp-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
openldap-dev \
|
||||
pcre-dev \
|
||||
postgresql-dev \
|
||||
libwebp-dev \
|
||||
gmp-dev \
|
||||
lcms2-dev \
|
||||
fontconfig-dev \
|
||||
freetype-dev \
|
||||
ghostscript-dev \
|
||||
tiff-dev \
|
||||
zlib-dev \
|
||||
imagemagick-dev \
|
||||
libheif-dev \
|
||||
librsvg-dev \
|
||||
libxext-dev \
|
||||
ghostscript-fonts \
|
||||
; \
|
||||
\
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \
|
||||
@@ -61,13 +50,14 @@ RUN set -ex; \
|
||||
bcmath \
|
||||
exif \
|
||||
gd \
|
||||
gmp \
|
||||
intl \
|
||||
ldap \
|
||||
opcache \
|
||||
pcntl \
|
||||
pdo_pgsql \
|
||||
sysvsem \
|
||||
zip \
|
||||
gmp \
|
||||
; \
|
||||
\
|
||||
# pecl will claim success even if one install fails, so we need to perform each install separately
|
||||
@@ -98,6 +88,8 @@ RUN { \
|
||||
echo 'opcache.interned_strings_buffer=32'; \
|
||||
echo 'opcache.save_comments=1'; \
|
||||
echo 'opcache.revalidate_freq=60'; \
|
||||
echo 'opcache.jit=1255'; \
|
||||
echo 'opcache.jit_buffer_size=128M'; \
|
||||
} > /usr/local/etc/php/conf.d/opcache-recommended.ini; \
|
||||
\
|
||||
echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \
|
||||
@@ -116,7 +108,7 @@ RUN { \
|
||||
|
||||
VOLUME /var/www/html
|
||||
|
||||
ENV NEXTCLOUD_VERSION 25.0.3
|
||||
ENV NEXTCLOUD_VERSION 25.0.6
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache --virtual .fetch-deps \
|
||||
@@ -213,12 +205,8 @@ RUN set -ex; \
|
||||
mawk \
|
||||
sudo \
|
||||
grep \
|
||||
coreutils \
|
||||
libjpeg \
|
||||
librsvg \
|
||||
libheif \
|
||||
libpng \
|
||||
ghostscript-fonts;
|
||||
nodejs \
|
||||
coreutils;
|
||||
|
||||
RUN set -ex; \
|
||||
grep -q '^pm = dynamic' /usr/local/etc/php-fpm.d/www.conf; \
|
||||
@@ -262,6 +250,11 @@ RUN set -ex; \
|
||||
|
||||
VOLUME /mnt/ncdata
|
||||
|
||||
RUN set -ex; \
|
||||
mkdir -p /nc-updater; \
|
||||
chown -R www-data:www-data /nc-updater; \
|
||||
chmod -R 770 /nc-updater
|
||||
|
||||
# Give root a random password
|
||||
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
|
||||
|
||||
@@ -39,7 +39,10 @@ $(stat -c "%u:%g %a" "$NEXTCLOUD_DATA_DIR")
|
||||
(userID:groupID permissions)
|
||||
but they should be:
|
||||
33:0 750
|
||||
(userID:groupID permissions)"
|
||||
(userID:groupID permissions)
|
||||
Also make sure that the parent directories on the host of the directory that you've chosen as datadir are publicly readable with e.g. 'sudo chmod +r /mnt' (adjust the command accordingly to your case) and the same for all subdirectories.
|
||||
Additionally, if you want to use a Fuse-mount as datadir, set 'allow_other' as additional mount option.
|
||||
For SMB/CIFS mounts as datadir, see https://github.com/nextcloud/all-in-one#can-i-use-a-cifssmb-share-as-nextclouds-datadir"
|
||||
exit 1
|
||||
fi
|
||||
rm "$NEXTCLOUD_DATA_DIR/this-is-a-test-file"
|
||||
@@ -98,10 +101,6 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
# Write output to logfile.
|
||||
exec > >(tee -i "/var/www/html/data/update.log")
|
||||
exec 2>&1
|
||||
else
|
||||
# Write output to logfile.
|
||||
exec > >(tee -i "/var/www/html/data/install.log")
|
||||
exec 2>&1
|
||||
fi
|
||||
|
||||
if [ "$installed_version" != "0.0.0.0" ] && [ "$((IMAGE_MAJOR - INSTALLED_MAJOR))" -gt 1 ]; then
|
||||
@@ -121,9 +120,9 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
mkdir -p /usr/src/tmp/nextcloud/data
|
||||
mkdir -p /usr/src/tmp/nextcloud/custom_apps
|
||||
chmod +x /usr/src/tmp/nextcloud/occ
|
||||
cp /usr/src/nextcloud/config/* /usr/src/tmp/nextcloud/config/
|
||||
cp -r /usr/src/nextcloud/config/* /usr/src/tmp/nextcloud/config/
|
||||
mkdir -p /usr/src/tmp/nextcloud/apps/nextcloud-aio
|
||||
cp /usr/src/nextcloud/apps/nextcloud-aio/* /usr/src/tmp/nextcloud/apps/nextcloud-aio/
|
||||
cp -r /usr/src/nextcloud/apps/nextcloud-aio/* /usr/src/tmp/nextcloud/apps/nextcloud-aio/
|
||||
mv /usr/src/nextcloud /usr/src/temp-nextcloud
|
||||
mv /usr/src/tmp/nextcloud /usr/src/nextcloud
|
||||
rm -r /usr/src/tmp
|
||||
@@ -194,7 +193,12 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
|
||||
#install
|
||||
if [ "$installed_version" = "0.0.0.0" ]; then
|
||||
echo "New nextcloud instance"
|
||||
echo "New Nextcloud instance."
|
||||
|
||||
# Write output to logfile.
|
||||
mkdir -p /var/www/html/data
|
||||
exec > >(tee -i "/var/www/html/data/install.log")
|
||||
exec 2>&1
|
||||
|
||||
INSTALL_OPTIONS=(-n --admin-user "$ADMIN_USER" --admin-pass "$ADMIN_PASSWORD")
|
||||
if [ -n "${NEXTCLOUD_DATA_DIR}" ]; then
|
||||
@@ -204,26 +208,78 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
echo "Installing with PostgreSQL database"
|
||||
INSTALL_OPTIONS+=(--database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST")
|
||||
|
||||
echo "starting nextcloud installation"
|
||||
max_retries=10
|
||||
try=0
|
||||
until php /var/www/html/occ maintenance:install "${INSTALL_OPTIONS[@]}" || [ "$try" -gt "$max_retries" ]
|
||||
do
|
||||
echo "retrying install..."
|
||||
try=$((try+1))
|
||||
sleep 10s
|
||||
done
|
||||
if [ "$try" -gt "$max_retries" ]; then
|
||||
echo "installing of nextcloud failed!"
|
||||
echo "Starting Nextcloud installation..."
|
||||
if ! php /var/www/html/occ maintenance:install "${INSTALL_OPTIONS[@]}"; then
|
||||
echo "Installation of Nextcloud failed!"
|
||||
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We do our own permission check so the permission check is not needed
|
||||
cat << DATADIR_PERMISSION_CONF > /var/www/html/config/datadir.permission.config.php
|
||||
<?php
|
||||
\$CONFIG = array (
|
||||
'check_data_directory_permissions' => false
|
||||
);
|
||||
DATADIR_PERMISSION_CONF
|
||||
php /var/www/html/occ config:system:set check_data_directory_permissions --value=false --type=bool
|
||||
|
||||
# Try to force generation of appdata dir:
|
||||
php /var/www/html/occ maintenance:repair
|
||||
|
||||
if [ -z "$OBJECTSTORE_S3_BUCKET" ] && [ -z "$OBJECTSTORE_SWIFT_URL" ]; then
|
||||
max_retries=10
|
||||
try=0
|
||||
while [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ] && [ "$try" -lt "$max_retries" ]; do
|
||||
echo "Waiting for appdata to become available..."
|
||||
try=$((try+1))
|
||||
sleep 10s
|
||||
done
|
||||
|
||||
if [ "$try" -ge "$max_retries" ]; then
|
||||
echo "Installation of Nextcloud failed!"
|
||||
echo "Install errors: $(cat /var/www/html/data/nextcloud.log)"
|
||||
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# This autoconfig is not needed anymore and should be able to be overwritten by the user
|
||||
rm /var/www/html/config/datadir.permission.config.php
|
||||
|
||||
# unset admin password
|
||||
unset ADMIN_PASSWORD
|
||||
|
||||
# Post Install logs: For questions like https://help.nextcloud.com/t/nextcloud-aio-error-could-not-get-appdata-folder-after-container-has-already-written-data-in-it/151122/5
|
||||
echo "Install errors: $(cat /var/www/html/data/nextcloud.log)"
|
||||
if [ "$INSTALL_LATEST_MAJOR" = yes ]; then
|
||||
php /var/www/html/occ config:system:set updater.release.channel --value=beta
|
||||
php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
|
||||
php /var/www/html/updater/updater.phar --no-interaction
|
||||
php /var/www/html/occ app:enable nextcloud-aio --force
|
||||
if ! php /var/www/html/occ -V || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
|
||||
echo "Installation of Nextcloud failed!"
|
||||
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
||||
exit 1
|
||||
fi
|
||||
# shellcheck disable=SC2016
|
||||
installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')"
|
||||
INSTALLED_MAJOR="${installed_version%%.*}"
|
||||
IMAGE_MAJOR="${image_version%%.*}"
|
||||
if ! [ "$INSTALLED_MAJOR" -gt "$IMAGE_MAJOR" ]; then
|
||||
php /var/www/html/occ config:system:set updater.release.channel --value=beta
|
||||
php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
|
||||
php /var/www/html/updater/updater.phar --no-interaction
|
||||
if ! php /var/www/html/occ -V || php /var/www/html/occ status | grep maintenance | grep -q 'true'; then
|
||||
echo "Installation of Nextcloud failed!"
|
||||
touch "$NEXTCLOUD_DATA_DIR/install.failed"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
php /var/www/html/occ config:system:set updater.release.channel --value=stable
|
||||
php /var/www/html/occ db:add-missing-indices
|
||||
php /var/www/html/occ db:add-missing-columns
|
||||
php /var/www/html/occ db:add-missing-primary-keys
|
||||
yes | php /var/www/html/occ db:convert-filecache-bigint
|
||||
fi
|
||||
|
||||
# Apply log settings
|
||||
echo "Applying default settings..."
|
||||
@@ -249,6 +305,7 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 4 --value="OC\\Preview\\TXT"
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 5 --value="OC\\Preview\\OpenDocument"
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 6 --value="OC\\Preview\\Movie"
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 7 --value="OC\\Preview\\Krita"
|
||||
php /var/www/html/occ config:system:set enable_previews --value=true --type=boolean
|
||||
|
||||
# Apply other settings
|
||||
@@ -341,6 +398,8 @@ if ! [ -f "$NEXTCLOUD_DATA_DIR/skip.update" ]; then
|
||||
# Performing update of all apps if daily backups are enabled, running and successful and if it is saturday
|
||||
if [ "$UPDATE_NEXTCLOUD_APPS" = 'yes' ] && [ "$(date +%u)" = 6 ]; then
|
||||
UPDATED_APPS="$(php /var/www/html/occ app:update --all)"
|
||||
# Update all apps again and try to prevent something like https://github.com/nextcloud/polls/issues/2793 from happening
|
||||
php /var/www/html/occ app:update --all
|
||||
if [ -n "$UPDATED_APPS" ]; then
|
||||
bash /notify.sh "Your apps just got updated!" "$UPDATED_APPS"
|
||||
fi
|
||||
@@ -349,18 +408,18 @@ else
|
||||
SKIP_UPDATE=1
|
||||
fi
|
||||
|
||||
# Check if appdata is present
|
||||
# If not, something broke (e.g. changing ncdatadir after aio was first started)
|
||||
if [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
|
||||
echo "Appdata is not present. Did you maybe change the datadir after aio was first started?"
|
||||
echo "See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir"
|
||||
echo "In the datadir was found:"
|
||||
ls -la "$NEXTCLOUD_DATA_DIR/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configure tempdirectory
|
||||
if [ -z "$OBJECTSTORE_S3_BUCKET" ] && [ -z "$OBJECTSTORE_SWIFT_URL" ]; then
|
||||
# Check if appdata is present
|
||||
# If not, something broke (e.g. changing ncdatadir after aio was first started)
|
||||
if [ -z "$(find "$NEXTCLOUD_DATA_DIR/" -maxdepth 1 -mindepth 1 -type d -name "appdata_*")" ]; then
|
||||
echo "Appdata is not present. Did you maybe change the datadir after aio was first started?"
|
||||
echo "See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir"
|
||||
echo "In the datadir was found:"
|
||||
ls -la "$NEXTCLOUD_DATA_DIR/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configure tempdirectory
|
||||
mkdir -p "$NEXTCLOUD_DATA_DIR/tmp/"
|
||||
if ! grep -q upload_tmp_dir /usr/local/etc/php/conf.d/nextcloud.ini; then
|
||||
echo "upload_tmp_dir = $NEXTCLOUD_DATA_DIR/tmp/" >> /usr/local/etc/php/conf.d/nextcloud.ini
|
||||
@@ -385,6 +444,7 @@ php /var/www/html/occ app:enable support
|
||||
echo "Adjusting log files..."
|
||||
php /var/www/html/occ config:system:set logfile --value="/var/www/html/data/nextcloud.log"
|
||||
php /var/www/html/occ config:app:set admin_audit logfile --value="/var/www/html/data/audit.log"
|
||||
php /var/www/html/occ config:system:set updatedirectory --value="/nc-updater"
|
||||
|
||||
# Apply network settings
|
||||
echo "Applying network settings..."
|
||||
@@ -431,10 +491,10 @@ if [ "$COLLABORA_ENABLED" = 'yes' ]; then
|
||||
php /var/www/html/occ config:system:set allow_local_remote_servers --type=bool --value=true
|
||||
# Make collabora more save
|
||||
COLLABORA_IPv4_ADDRESS="$(echo "<?php echo gethostbyname('$NC_DOMAIN');" | php | head -1)"
|
||||
COLLABORA_IPv6_Address="<?php \$record = dns_get_record('$NC_DOMAIN', DNS_AAAA);"
|
||||
COLLABORA_IPv6_ADDRESS="<?php \$record = dns_get_record('$NC_DOMAIN', DNS_AAAA);"
|
||||
# shellcheck disable=SC2016
|
||||
COLLABORA_IPv6_Address+='if (!empty($record)) {echo $record[0]["ipv6"];}'
|
||||
COLLABORA_IPv6_Address="$(echo "$COLLABORA_IPv6_Address" | php | head -1)"
|
||||
COLLABORA_IPv6_ADDRESS+='if (!empty($record)) {echo $record[0]["ipv6"];}'
|
||||
COLLABORA_IPv6_ADDRESS="$(echo "$COLLABORA_IPv6_ADDRESS" | php | head -1)"
|
||||
COLLABORA_ALLOW_LIST="$(php /var/www/html/occ config:app:get richdocuments wopi_allowlist)"
|
||||
if [ -n "$COLLABORA_IPv4_ADDRESS" ]; then
|
||||
if ! echo "$COLLABORA_ALLOW_LIST" | grep -q "$COLLABORA_IPv4_ADDRESS"; then
|
||||
@@ -509,7 +569,8 @@ if [ "$TALK_ENABLED" = 'yes' ]; then
|
||||
if [ -z "$(php /var/www/html/occ talk:turn:list --output="plain")" ]; then
|
||||
php /var/www/html/occ talk:turn:add turn "$NC_DOMAIN:$TALK_PORT" "udp,tcp" --secret="$TURN_SECRET"
|
||||
fi
|
||||
if php /var/www/html/occ talk:stun:list --output="plain" | grep -oP '[a-zA-Z.:0-9]+' | grep -q "^stun.nextcloud.com:443$"; then
|
||||
STUN_SERVER="$(php /var/www/html/occ talk:stun:list --output="plain")"
|
||||
if [ -z "$STUN_SERVER" ] || echo "$STUN_SERVER" | grep -oP '[a-zA-Z.:0-9]+' | grep -q "^stun.nextcloud.com:443$"; then
|
||||
php /var/www/html/occ talk:stun:add "$NC_DOMAIN:$TALK_PORT"
|
||||
php /var/www/html/occ talk:stun:delete "stun.nextcloud.com:443"
|
||||
fi
|
||||
@@ -524,23 +585,30 @@ fi
|
||||
|
||||
# Clamav
|
||||
if [ "$CLAMAV_ENABLED" = 'yes' ]; then
|
||||
while ! nc -z "$CLAMAV_HOST" 3310; do
|
||||
count=0
|
||||
while ! nc -z "$CLAMAV_HOST" 3310 && [ "$count" -lt 90 ]; do
|
||||
echo "waiting for clamav to become available..."
|
||||
count=$((count+5))
|
||||
sleep 5
|
||||
done
|
||||
if ! [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
|
||||
php /var/www/html/occ app:install files_antivirus
|
||||
elif [ "$(php /var/www/html/occ config:app:get files_antivirus enabled)" != "yes" ]; then
|
||||
php /var/www/html/occ app:enable files_antivirus
|
||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||
php /var/www/html/occ app:update files_antivirus
|
||||
if [ "$count" -ge 90 ]; then
|
||||
echo "Clamav did not start in time. Skipping initialization and disabling files_antivirus app."
|
||||
php /var/www/html/occ app:disable files_antivirus
|
||||
else
|
||||
if ! [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
|
||||
php /var/www/html/occ app:install files_antivirus
|
||||
elif [ "$(php /var/www/html/occ config:app:get files_antivirus enabled)" != "yes" ]; then
|
||||
php /var/www/html/occ app:enable files_antivirus
|
||||
elif [ "$SKIP_UPDATE" != 1 ]; then
|
||||
php /var/www/html/occ app:update files_antivirus
|
||||
fi
|
||||
php /var/www/html/occ config:app:set files_antivirus av_mode --value="daemon"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_port --value="3310"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_host --value="$CLAMAV_HOST"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_stream_max_length --value="104857600"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="-1"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_infected_action --value="only_log"
|
||||
fi
|
||||
php /var/www/html/occ config:app:set files_antivirus av_mode --value="daemon"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_port --value="3310"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_host --value="$CLAMAV_HOST"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_stream_max_length --value="104857600"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_max_file_size --value="-1"
|
||||
php /var/www/html/occ config:app:set files_antivirus av_infected_action --value="only_log"
|
||||
else
|
||||
if [ -d "/var/www/html/custom_apps/files_antivirus" ]; then
|
||||
php /var/www/html/occ app:remove files_antivirus
|
||||
@@ -552,15 +620,14 @@ if version_greater "$installed_version" "24.0.0.0"; then
|
||||
if [ "$IMAGINARY_ENABLED" = 'yes' ]; then
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Imaginary"
|
||||
php /var/www/html/occ config:system:set preview_imaginary_url --value="http://$IMAGINARY_HOST:9000"
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 20 --value="OC\\Preview\\HEIC"
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 21 --value="OC\\Preview\\TIFF"
|
||||
php /var/www/html/occ config:system:set enabledPreviewProviders 22 --value="OC\\Preview\\WebP"
|
||||
else
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 0
|
||||
php /var/www/html/occ config:system:delete preview_imaginary_url
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 20
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 21
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 22
|
||||
if [ -n "$(php /var/www/html/occ config:system:get preview_imaginary_url)" ]; then
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 0
|
||||
php /var/www/html/occ config:system:delete preview_imaginary_url
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 20
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 21
|
||||
php /var/www/html/occ config:system:delete enabledPreviewProviders 22
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -17,10 +17,11 @@ if [ -f "/var/www/html/config/config.php" ]; then
|
||||
echo "Waiting for the database to start..."
|
||||
sleep 5
|
||||
done
|
||||
if [ "$POSTGRES_USER" = "oc_nextcloud" ] && echo "$POSTGRES_PASSWORD" | grep -q '^[a-z0-9]\+$'; then
|
||||
# this was introduced with https://github.com/nextcloud/all-in-one/pull/218
|
||||
if [ "$POSTGRES_USER" = "oc_nextcloud" ] && [ "$POSTGRES_DB" = "nextcloud_database" ] && echo "$POSTGRES_PASSWORD" | grep -q '^[a-z0-9]\+$'; then
|
||||
# This was introduced with https://github.com/nextcloud/all-in-one/pull/218
|
||||
sed -i "s|'dbuser'.*=>.*$|'dbuser' => '$POSTGRES_USER',|" /var/www/html/config/config.php
|
||||
sed -i "s|'dbpassword'.*=>.*$|'dbpassword' => '$POSTGRES_PASSWORD',|" /var/www/html/config/config.php
|
||||
sed -i "s|'db_name'.*=>.*$|'db_name' => '$POSTGRES_DB',|" /var/www/html/config/config.php
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
|
||||
FROM onlyoffice/documentserver:7.2.2.56
|
||||
FROM onlyoffice/documentserver:7.3.3.50
|
||||
|
||||
HEALTHCHECK CMD nc -z localhost 80 || exit 1
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -1,39 +1,35 @@
|
||||
# From https://github.com/docker-library/postgres/blob/master/15/alpine/Dockerfile
|
||||
FROM postgres:15.1-alpine
|
||||
FROM postgres:15.3-alpine
|
||||
|
||||
RUN apk add --no-cache bash openssl shadow netcat-openbsd grep mawk
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
COPY --chmod=775 healthcheck.sh /healthcheck.sh
|
||||
COPY --chmod=775 init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh
|
||||
|
||||
# We need to use the same gid and uid as on old installations
|
||||
RUN set -ex; \
|
||||
apk add --no-cache bash openssl shadow grep mawk; \
|
||||
\
|
||||
# We need to use the same gid and uid as on old installations
|
||||
deluser postgres; \
|
||||
groupmod -g 9999 ping; \
|
||||
addgroup -g 999 -S postgres; \
|
||||
adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres
|
||||
|
||||
adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres; \
|
||||
apk del --no-cache shadow; \
|
||||
\
|
||||
# Fix default permissions
|
||||
RUN set -ex; \
|
||||
chown -R postgres:postgres /var/lib/postgresql; \
|
||||
chown -R postgres:postgres /var/run/postgresql; \
|
||||
chown -R postgres:postgres "$PGDATA"
|
||||
|
||||
COPY start.sh /usr/bin/
|
||||
COPY healthcheck.sh /usr/bin/
|
||||
COPY init-user-db.sh /docker-entrypoint-initdb.d/
|
||||
RUN set -ex; \
|
||||
chmod +x /usr/bin/start.sh; \
|
||||
chmod +xr /docker-entrypoint-initdb.d/init-user-db.sh; \
|
||||
chmod +x /usr/bin/healthcheck.sh
|
||||
|
||||
RUN mkdir /mnt/data; \
|
||||
chown postgres:postgres /mnt/data;
|
||||
chown -R postgres:postgres "$PGDATA"; \
|
||||
\
|
||||
mkdir /mnt/data; \
|
||||
chown postgres:postgres /mnt/data; \
|
||||
\
|
||||
# Give root a random password
|
||||
echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
|
||||
VOLUME /mnt/data
|
||||
|
||||
# Give root a random password
|
||||
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
|
||||
USER postgres
|
||||
ENTRYPOINT ["start.sh"]
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
|
||||
HEALTHCHECK CMD healthcheck.sh
|
||||
HEALTHCHECK CMD /healthcheck.sh
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
test -f "/mnt/data/backup-is-running" && exit 0
|
||||
|
||||
psql -d "postgresql://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/$POSTGRES_DB" -c "select now()" || exit 1
|
||||
psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/$POSTGRES_DB" -c "select now()" || exit 1
|
||||
|
||||
@@ -85,7 +85,7 @@ if ( [ -f "$DATADIR/PG_VERSION" ] && [ "$PG_MAJOR" != "$(cat "$DATADIR/PG_VERSIO
|
||||
exec docker-entrypoint.sh postgres &
|
||||
|
||||
# Wait for creation
|
||||
while ! nc -z localhost 11000; do
|
||||
while ! psql -d "postgresql://oc_$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:11000/$POSTGRES_DB" -c "select now()"; do
|
||||
echo "Waiting for the database to start."
|
||||
sleep 5
|
||||
done
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# From https://github.com/docker-library/redis/blob/master/7.0/alpine/Dockerfile
|
||||
FROM redis:7.0.8-alpine
|
||||
FROM redis:7.0.11-alpine
|
||||
|
||||
RUN apk add --no-cache openssl bash
|
||||
|
||||
COPY start.sh /usr/bin/
|
||||
RUN chmod +x /usr/bin/start.sh
|
||||
COPY --chmod=775 start.sh /usr/bin/start.sh
|
||||
|
||||
RUN set -ex; \
|
||||
apk add --no-cache openssl bash; \
|
||||
\
|
||||
# Give root a random password
|
||||
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
|
||||
USER redis
|
||||
ENTRYPOINT ["start.sh"]
|
||||
|
||||
@@ -1,68 +1,62 @@
|
||||
FROM ubuntu:focal-20230126
|
||||
FROM nats:2.9.16-scratch as nats
|
||||
FROM strukturag/nextcloud-spreed-signaling:1.1.2 as signaling
|
||||
FROM coturn/coturn:4.6.2-r0-alpine
|
||||
USER root
|
||||
|
||||
COPY --from=nats /nats-server /usr/local/bin/nats-server
|
||||
COPY --from=signaling /usr/bin/nextcloud-spreed-signaling /usr/local/bin/nextcloud-spreed-signaling
|
||||
|
||||
COPY --chmod=775 start.sh /usr/bin/start.sh
|
||||
COPY --chmod=664 supervisord.conf /supervisord.conf
|
||||
|
||||
RUN set -ex; \
|
||||
\
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
openssl \
|
||||
coturn \
|
||||
supervisor \
|
||||
curl \
|
||||
apk add --no-cache \
|
||||
ca-certificates \
|
||||
netcat \
|
||||
; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN set -ex; \
|
||||
curl -sL -o "/etc/apt/trusted.gpg.d/morph027-nats-server.asc" "https://packaging.gitlab.io/nats-server/gpg.key"; \
|
||||
echo "deb https://packaging.gitlab.io/nats-server nats main" > /etc/apt/sources.list.d/morph027-nats-server.list; \
|
||||
. /etc/lsb-release; \
|
||||
curl -sL -o "/etc/apt/trusted.gpg.d/morph027-janus.asc" "https://packaging.gitlab.io/janus/gpg.key"; \
|
||||
echo "deb https://packaging.gitlab.io/janus/$DISTRIB_CODENAME $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/morph027-janus.list; \
|
||||
curl -sL -o "/etc/apt/trusted.gpg.d/morph027-nextcloud-spreed-signaling.asc" "https://packaging.gitlab.io/nextcloud-spreed-signaling/gpg.key"; \
|
||||
echo "deb https://packaging.gitlab.io/nextcloud-spreed-signaling signaling main" > /etc/apt/sources.list.d/morph027-nextcloud-spreed-signaling.list
|
||||
|
||||
RUN set -ex; \
|
||||
tzdata \
|
||||
bash \
|
||||
openssl \
|
||||
supervisor \
|
||||
bind-tools \
|
||||
netcat-openbsd \
|
||||
shadow \
|
||||
util-linux \
|
||||
build-base \
|
||||
lua5.3-dev \
|
||||
luarocks5.3; \
|
||||
apk add --no-cache janus-gateway --repository http://dl-cdn.alpinelinux.org/alpine/edge/community; \
|
||||
useradd --system talk; \
|
||||
luarocks-5.3 install luajson; \
|
||||
luarocks-5.3 install ansicolors; \
|
||||
rename -v ".jcfg.sample" ".jcfg" /etc/janus/*.sample; \
|
||||
apk del --no-cache \
|
||||
shadow \
|
||||
util-linux \
|
||||
build-base \
|
||||
lua5.3-dev \
|
||||
luarocks5.3; \
|
||||
\
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
nats-server \
|
||||
janus \
|
||||
nextcloud-spreed-signaling \
|
||||
; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN adduser --system --group talk
|
||||
|
||||
RUN mkdir /var/log/supervisord; \
|
||||
mkdir /var/run/supervisord; \
|
||||
chown talk:talk /var/run/supervisord; \
|
||||
chown talk:talk /var/log/supervisord;
|
||||
|
||||
COPY start.sh /usr/bin/
|
||||
COPY supervisord.conf /
|
||||
RUN chmod +x /usr/bin/start.sh; \
|
||||
chmod +r /supervisord.conf; \
|
||||
touch /etc/turnserver.conf; \
|
||||
chown talk:talk /etc/turnserver.conf; \
|
||||
sed -i '/TURNSERVER_ENABLED/c\TURNSERVER_ENABLED=1' /etc/default/coturn; \
|
||||
mkdir -p /var/tmp;
|
||||
|
||||
RUN curl -sL -o "/usr/share/janus/lua/json.lua" "https://raw.githubusercontent.com/rxi/json.lua/master/json.lua"; \
|
||||
curl -sL -o "/usr/share/janus/lua/ansicolors.lua" "https://raw.githubusercontent.com/kikito/ansicolors.lua/master/ansicolors.lua"
|
||||
|
||||
RUN mkdir -p /etc/nats; \
|
||||
echo "listen: 127.0.0.1:4222" > /etc/nats/nats.conf; \
|
||||
mkdir /var/lib/turn; \
|
||||
chown talk:talk /etc; \
|
||||
chown talk:talk -R /etc/nats; \
|
||||
chown talk:talk -R /etc/janus; \
|
||||
chown talk:talk -R /etc/signaling; \
|
||||
chown talk:talk -R /usr; \
|
||||
chown talk:talk -R /var/lib/turn;
|
||||
|
||||
# Give root a random password
|
||||
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
|
||||
echo "root:$(openssl rand -base64 12)" | chpasswd; \
|
||||
\
|
||||
touch \
|
||||
/etc/nats.conf \
|
||||
/etc/signaling.conf \
|
||||
/etc/turnserver.conf; \
|
||||
echo "listen: 127.0.0.1:4222" | tee /etc/nats.conf; \
|
||||
mkdir -p \
|
||||
/var/tmp \
|
||||
/var/lib/turn \
|
||||
/var/log/supervisord \
|
||||
/var/run/supervisord; \
|
||||
chown talk:talk -R \
|
||||
/usr \
|
||||
/etc/janus \
|
||||
/etc/nats.conf \
|
||||
/etc/signaling.conf \
|
||||
/etc/turnserver.conf \
|
||||
/var/lib/turn \
|
||||
/var/log/supervisord \
|
||||
/var/run/supervisord;
|
||||
|
||||
# Set default talk port https://github.com/nextcloud/all-in-one/issues/1011
|
||||
ENV TALK_PORT=3478
|
||||
@@ -71,5 +65,5 @@ USER talk
|
||||
ENTRYPOINT ["start.sh"]
|
||||
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
|
||||
|
||||
HEALTHCHECK CMD (nc -z localhost 8081 && nc -z localhost 8188 && nc -z localhost 4222 && nc -z localhost $TALK_PORT) || exit 1
|
||||
HEALTHCHECK CMD (nc -z localhost 8081 && nc -z localhost 8188 && nc -z localhost 4222 && nc -z localhost "$TALK_PORT" && nc -z "$NC_DOMAIN" "$TALK_PORT") || exit 1
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -7,19 +7,19 @@ if [ -z "$NC_DOMAIN" ]; then
|
||||
elif [ -z "$TURN_SECRET" ]; then
|
||||
echo "You need to provide the TURN_SECRET."
|
||||
exit 1
|
||||
elif [ -z "$JANUS_API_KEY" ]; then
|
||||
echo "You need to provide the JANUS_API_KEY."
|
||||
exit 1
|
||||
elif [ -z "$SIGNALING_SECRET" ]; then
|
||||
echo "You need to provide the SIGNALING_SECRET."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Turn: https://github.com/coturn/coturn/blob/master/examples/etc/turnserver.conf
|
||||
set -x
|
||||
IPv4_ADDRESS_TALK="$(dig nextcloud-aio-talk A +short)"
|
||||
set +x
|
||||
|
||||
# Turn
|
||||
cat << TURN_CONF > "/etc/turnserver.conf"
|
||||
listening-port=$TALK_PORT
|
||||
fingerprint
|
||||
lt-cred-mech
|
||||
use-auth-secret
|
||||
static-auth-secret=$TURN_SECRET
|
||||
realm=$NC_DOMAIN
|
||||
@@ -32,26 +32,26 @@ pidfile=/var/tmp/turnserver.pid
|
||||
no-tls
|
||||
no-dtls
|
||||
userdb=/var/lib/turn/turndb
|
||||
# Based on https://nextcloud-talk.readthedocs.io/en/latest/TURN/#turn-server-and-internal-networks
|
||||
allowed-peer-ip=$IPv4_ADDRESS_TALK
|
||||
denied-peer-ip=0.0.0.0-0.255.255.255
|
||||
denied-peer-ip=10.0.0.0-10.255.255.255
|
||||
denied-peer-ip=100.64.0.0-100.127.255.255
|
||||
denied-peer-ip=127.0.0.0-127.255.255.255
|
||||
denied-peer-ip=169.254.0.0-169.254.255.255
|
||||
denied-peer-ip=172.16.0.0-172.31.255.255
|
||||
denied-peer-ip=192.0.0.0-192.0.0.255
|
||||
denied-peer-ip=192.0.2.0-192.0.2.255
|
||||
denied-peer-ip=192.88.99.0-192.88.99.255
|
||||
denied-peer-ip=192.168.0.0-192.168.255.255
|
||||
denied-peer-ip=198.18.0.0-198.19.255.255
|
||||
denied-peer-ip=198.51.100.0-198.51.100.255
|
||||
denied-peer-ip=203.0.113.0-203.0.113.255
|
||||
denied-peer-ip=240.0.0.0-255.255.255.255
|
||||
TURN_CONF
|
||||
|
||||
# Janus
|
||||
set -x
|
||||
sed -i "s|#turn_rest_api_key.*|turn_rest_api_key = \"$JANUS_API_KEY\"|" /etc/janus/janus.jcfg
|
||||
sed -i "s|#full_trickle.*|full_trickle = true|g" /etc/janus/janus.jcfg
|
||||
sed -i 's|#stun_server.*|stun_server = "127.0.0.1"|g' /etc/janus/janus.jcfg
|
||||
sed -i "s|#stun_port.*|stun_port = $TALK_PORT|g" /etc/janus/janus.jcfg
|
||||
sed -i "s|#turn_port.*|turn_port = $TALK_PORT|g" /etc/janus/janus.jcfg
|
||||
sed -i 's|#turn_server.*|turn_server = "127.0.0.1"|g' /etc/janus/janus.jcfg
|
||||
sed -i 's|#turn_type .*|turn_type = "udp"|g' /etc/janus/janus.jcfg
|
||||
sed -i 's|#ice_ignore_list .*|ice_ignore_list = "udp"|g' /etc/janus/janus.jcfg
|
||||
sed -i 's|#interface.*|interface = "lo"|g' /etc/janus/janus.transport.websockets.jcfg
|
||||
sed -i 's|#ws_interface.*|ws_interface = "lo"|g' /etc/janus/janus.transport.websockets.jcfg
|
||||
sed -i 's|certfile =|#certfile =|g' /etc/janus/janus.transport.mqtt.jcfg
|
||||
sed -i 's|keyfile =|#keyfile =|g' /etc/janus/janus.transport.mqtt.jcfg
|
||||
set +x
|
||||
|
||||
# Signling
|
||||
cat << SIGNALING_CONF > "/etc/signaling/server.conf"
|
||||
cat << SIGNALING_CONF > "/etc/signaling.conf"
|
||||
[http]
|
||||
listen = 0.0.0.0:8081
|
||||
|
||||
@@ -81,11 +81,6 @@ url = nats://127.0.0.1:4222
|
||||
[mcu]
|
||||
type = janus
|
||||
url = ws://127.0.0.1:8188
|
||||
|
||||
[turn]
|
||||
apikey = ${JANUS_API_KEY}
|
||||
secret = ${TURN_SECRET}
|
||||
servers = turn:$NC_DOMAIN:$TALK_PORT?transport=tcp,turn:$NC_DOMAIN:$TALK_PORT?transport=udp
|
||||
SIGNALING_CONF
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -13,25 +13,25 @@ stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=turnserver
|
||||
command=turnserver -c /etc/turnserver.conf
|
||||
|
||||
[program:nats-server]
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=nats-server -c /etc/nats/nats.conf
|
||||
command=nats-server -c /etc/nats.conf
|
||||
|
||||
[program:janus]
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=/usr/bin/janus --config=/etc/janus/janus.jcfg --disable-colors --log-stdout
|
||||
command=janus --config=/etc/janus/janus.jcfg --disable-colors --log-stdout
|
||||
|
||||
[program:signaling]
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=signaling --config /etc/signaling/server.conf
|
||||
command=nextcloud-spreed-signaling -config /etc/signaling.conf
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
# From https://github.com/containrrr/watchtower/blob/main/dockerfiles/Dockerfile.self-contained
|
||||
FROM containrrr/watchtower:1.5.3 as watchtower
|
||||
|
||||
FROM alpine:3.17.1
|
||||
FROM alpine:3.17.3
|
||||
|
||||
RUN apk add --no-cache bash
|
||||
COPY --from=watchtower /watchtower /
|
||||
COPY --from=watchtower /watchtower /watchtower
|
||||
|
||||
COPY start.sh /
|
||||
RUN chmod +x /start.sh
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
USER root
|
||||
ENTRYPOINT ["/start.sh"]
|
||||
LABEL com.centurylinklabs.watchtower.monitor-only="true"
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
|
||||
<id>nextcloud-aio</id>
|
||||
<name>Nextcloud All In One</name>
|
||||
<name>Nextcloud All-in-One</name>
|
||||
<summary>Provides a login link for admins.</summary>
|
||||
<description>Add a link to the admin settings that gives access to the Nextcloud All In One admin interface</description>
|
||||
<description>Add a link to the admin settings that gives access to the Nextcloud All-in-One admin interface</description>
|
||||
<version>0.3.0</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Azul</author>
|
||||
|
||||
@@ -10,6 +10,7 @@ declare(strict_types=1);
|
||||
*/
|
||||
/** @var array $_ */ ?>
|
||||
<div id="allinone" class="section">
|
||||
<h2><?php p($l->t('Nextcloud All In One'));?></h2>
|
||||
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank" rel="noopener">Open Nextcloud AIO Interface ↗</a>
|
||||
<h2><?php p($l->t('Nextcloud All-in-One'));?></h2>
|
||||
<a href="<?php p($_['AIOLoginUrl']);?>" class="button" target="_blank" rel="noopener">Open Nextcloud AIO Interface ↗</a><br><br>
|
||||
<p><a href="https://github.com/nextcloud/all-in-one#how-to-easily-log-in-to-the-aio-interface">Click here for more infos on this feature (e.g. also on how to change the link in the button)</a></p>
|
||||
</div>
|
||||
|
||||
@@ -22,6 +22,8 @@ Simply use https://github.com/nextcloud/all-in-one/issues/180 as template.
|
||||
Go to https://github.com/nextcloud-releases/all-in-one/actions/workflows/repo-sync.yml and run the workflow that will first sync the repo and then build new container that automatically get published to `develop` and `develop-arm64`.
|
||||
|
||||
## How to test things correctly?
|
||||
Before testing, make sure that at least the amd64 containers are built successfully by checking the last workflow here: https://github.com/nextcloud-releases/all-in-one/actions/workflows/build_images.yml.
|
||||
|
||||
There is a testing-VM available for the maintainer of AIO that allows for some final testing before releasing new version. See [this](https://cloud.nextcloud.com/apps/collectives/Nextcloud%20Handbook/Technical/AIO%20testing%20VM?fileId=6350152) for details.
|
||||
|
||||
## How to promote builds from develop to beta
|
||||
|
||||
@@ -2,26 +2,25 @@ version: "3.8"
|
||||
|
||||
volumes:
|
||||
nextcloud_aio_mastercontainer:
|
||||
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed
|
||||
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
image: nextcloud/all-in-one:latest # Must be changed to 'nextcloud/all-in-one:latest-arm64' when used with an arm64 CPU
|
||||
image: nextcloud/all-in-one:latest
|
||||
restart: always
|
||||
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed
|
||||
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
|
||||
volumes:
|
||||
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'DOCKER_SOCKET_PATH'!
|
||||
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
|
||||
ports:
|
||||
- 80:80 # Can be removed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
- 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
- 8080:8080
|
||||
- 8443:8443 # Can be removed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
- 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# environment: # Is needed when using any of the options below
|
||||
# - APACHE_PORT=11000 # Is needed when running behind a reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# - APACHE_IP_BINDING=127.0.0.1 # Should be set when running behind a reverse proxy that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# - AIO_DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface.
|
||||
# - APACHE_PORT=11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# - APACHE_IP_BINDING=127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# - COLLABORA_SECCOMP_DISABLED=false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
|
||||
# - DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
|
||||
# - DISABLE_BACKUP_SECTION=false # Setting this to true allows to hide the backup section in the AIO interface.
|
||||
# - NEXTCLOUD_DATADIR=/mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
|
||||
# - NEXTCLOUD_MOUNT=/mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
|
||||
# - NEXTCLOUD_UPLOAD_LIMIT=10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
|
||||
@@ -33,6 +32,9 @@ services:
|
||||
# - NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
|
||||
# - NEXTCLOUD_ENABLE_DRI_DEVICE=true # This allows to enable the /dev/dri device in the Nextcloud container which is needed for hardware-transcoding. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
|
||||
# - TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
|
||||
# - WATCHTOWER_DOCKER_SOCKET_PATH=/var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
|
||||
# networks: # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
|
||||
# - nextcloud-aio # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
|
||||
|
||||
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
|
||||
@@ -47,3 +49,16 @@ services:
|
||||
# - ./data:/data
|
||||
# - ./sites:/srv
|
||||
# network_mode: "host"
|
||||
|
||||
# # Optional: If you need ipv6, follow step 1 and 2 of https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md first and then uncomment the below config in order to activate ipv6 for the internal nextcloud-aio network.
|
||||
# # Please make sure to uncomment also the networking lines of the mastercontainer above in order to actually create the network with docker-compose
|
||||
# # Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
|
||||
# networks:
|
||||
# nextcloud-aio:
|
||||
# name: nextcloud-aio # This line is not allowed to be changed as otherwise the created network will not be used by the other containers of AIO
|
||||
# driver: bridge
|
||||
# enable_ipv6: true
|
||||
# ipam:
|
||||
# driver: default
|
||||
# config:
|
||||
# - subnet: fd12:3456:789a:2::/64 # IPv6 subnet to use
|
||||
|
||||
45
docker-ipv6-support.md
Normal file
45
docker-ipv6-support.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# IPv6-Support for Docker
|
||||
|
||||
Before enabling IPv6-Support for Docker, please note that there are still some unresolved problems in regards to IPv6-Support in Docker. See https://github.com/nextcloud/all-in-one/discussions/2557 for more details on this.
|
||||
|
||||
Now that this was mentioned, see the instructions below on how to enable IPv6 for Docker.
|
||||
|
||||
## Docker on Linux and Docker-rootless
|
||||
1. Edit `/etc/docker/daemon.json` (or `~/.config/docker/daemon.json` in case of docker-rootless), set the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well. If you are using mailcow and enabled IPv6 with the update.sh, you can keep their daemon.json, it will work too.
|
||||
|
||||
```json
|
||||
{
|
||||
"ipv6": true,
|
||||
"fixed-cidr-v6": "fd12:3456:789a:1::/64",
|
||||
"experimental": true,
|
||||
"ip6tables": true
|
||||
}
|
||||
```
|
||||
|
||||
Save the file.
|
||||
|
||||
2. Reload the Docker configuration file.
|
||||
|
||||
```console
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `sudo docker network inspect nextcloud-aio | grep EnableIPv6`. On a new instance, this command should return that it did not find a network with this name. Then you can run `sudo docker network create --subnet="fd12:3456:789a:2::/64" --driver bridge --ipv6 nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/2045 in order to recreate the network and enable ipv6 for it.
|
||||
|
||||
## Docker Desktop (Windows and macOS)
|
||||
On Windows and macOS which use Docker Desktop, you need to go into the settings, and select `Docker Engine`. There you should see the currently used daemon.json file.
|
||||
|
||||
1. You need to now adjust this json file by setting the `ipv6` key to `true` and the `fixed-cidr-v6` key to your IPv6 subnet. In this example we are setting it to `fd12:3456:789a:1::/64`. Additionally set `experimental` to `true` and `ip6tables` to `true` as well.
|
||||
|
||||
```
|
||||
"ipv6": true,
|
||||
"fixed-cidr-v6": "fd12:3456:789a:1::/64",
|
||||
"experimental": true,
|
||||
"ip6tables": true
|
||||
```
|
||||
|
||||
2. Add these values to the json and make sure to keep the other currently values and that you don't see `Unexpected token in JSON at position ...` before attempting to restart by clicking on `Apply & restart`.
|
||||
3. Make sure that ipv6 is enabled for the internal `nextcloud-aio` network by running `docker network inspect nextcloud-aio`. On a new instance, this command should return that it did not find a network with this name. Then you can run `docker network create --subnet="fd12:3456:789a:2::/64" --driver bridge --ipv6 nextcloud-aio` in order to create the network with ipv6-support. However if it finds the network and its value `EnableIPv6` is set to false, make sure to follow https://github.com/nextcloud/all-in-one/discussions/2045 in order to recreate the network and enable ipv6 for it.
|
||||
|
||||
---
|
||||
|
||||
**Note**: This is a copy of the original docker docs at https://docs.docker.com/config/daemon/ipv6/ which apparently are not correct. However experimental is set to true which the ip6tables feature needs. Thus it will not get included into the official docs. However it is needed to make it work in our testing.
|
||||
@@ -4,11 +4,11 @@ You can run AIO with docker rootless by following the steps below.
|
||||
|
||||
0. If docker is already installed, you should consider disabling it first: (`sudo systemctl disable --now docker.service docker.socket`)
|
||||
1. Install docker rootless by following the official documentation: https://docs.docker.com/engine/security/rootless/#install. The easiest way is installing it **Without packages** (`curl -fsSL https://get.docker.com/rootless | sh`). Further limitations, distribution specific hints, etc. are discussed on the same site. Also do not forget to enable the systemd service, which may not be enabled always by default. See https://docs.docker.com/engine/security/rootless/#usage. (`systemctl --user enable docker`)
|
||||
1. If you need ipv6 support, you should enable it by following https://docs.docker.com/config/daemon/ipv6/. The daemon.json file is most likely stored in `~/.config/docker/daemon.json`.
|
||||
1. If you need ipv6 support, you should enable it by following https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md.
|
||||
1. Do not forget to set the mentioned environmental variables and in best case add them to your `~/.bashrc` file as shown!
|
||||
1. Also do not forget to run `loginctl enable-linger USERNAME` (and substitute USERNAME with the correct one) in order to make sure that user services are automatically started after every reboot.
|
||||
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`)
|
||||
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `-e DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
|
||||
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `--env WATCHTOWER_DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly).
|
||||
1. Now everything should work like without docker rootless. You can consider using docker-compose for this or running it behind a reverse proxy. Basically the only thing that needs to be adjusted always in the startup command or docker-compose file (after installing docker rootles) are things that are mentioned in point 3.
|
||||
|
||||
**Please note:** All files outside the containers get created, written to and accessed as the user that is running the docker daemon or a subuid of it. So for the built-in backup to work you need to allow this user to write to the target directory. E.g. with `sudo chown -R USERNAME:GROUPNAME /mnt/backup`. The same applies when changing Nextcloud's datadir. E.g. `sudo chown -R USERNAME:GROUPNAME /mnt/ncdata`. When you want to use the NEXTCLOUD_MOUNT option for local external storage, you need to adjust the permissions of the chosen folders to be accessible/writeable by the userid `100032:100032` (if running `grep ^$(whoami): /etc/subuid` as the user that is running the docker daemon returns 100000 as first value).
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
name: Nextcloud AIO Helm Chart
|
||||
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
|
||||
version: 4.2.0
|
||||
apiVersion: v2
|
||||
keywords:
|
||||
- latest
|
||||
sources:
|
||||
- https://github.com/nextcloud/all-in-one/tree/main/helm-chart
|
||||
home: https://github.com/nextcloud/all-in-one/tree/main/helm-chart
|
||||
@@ -1,3 +0,0 @@
|
||||
# You can also install the AIO containers on Kubernetes using this Helm Chart
|
||||
|
||||
This is currently beta and not ready yet.
|
||||
@@ -5,8 +5,8 @@ It is possible due to several reasons that you do not want or cannot open Nextcl
|
||||
The recommended way is the following:
|
||||
1. Set up your domain correctly to point to your home network
|
||||
1. Set up a reverse proxy by following the [reverse proxy documentation](./reverse-proxy.md) but only open port 80 (which is needed for the ACME challenge to work - however no real traffic will use this port).
|
||||
1. Set up a local DNS-server like a pi-hole and configure it to be your local DNS-server for the whole network. Then in the Pi-hole interface, add a custom DNS-record for your domain and overwrite the A-record (and possibly the AAAA-record, too) to point to the local ip-address of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
|
||||
1. Enter the the ip-address of your local dns-server in the deamon.json file for docker so that you are sure that all docker containers use the correct local dns-server.
|
||||
1. Set up a local DNS-server like a pi-hole and configure it to be your local DNS-server for the whole network. Then in the Pi-hole interface, add a custom DNS-record for your domain and overwrite the A-record (and possibly the AAAA-record, too) to point to the private ip-address of your reverse proxy (see https://github.com/nextcloud/all-in-one#how-can-i-access-nextcloud-locally)
|
||||
1. Enter the ip-address of your local dns-server in the deamon.json file for docker so that you are sure that all docker containers use the correct local dns-server.
|
||||
1. Now, entering the domain in the AIO-interface should work as expected and should allow you to continue with the setup
|
||||
|
||||
## 2. Use the ACME DNS-challenge
|
||||
|
||||
@@ -7,7 +7,7 @@ services:
|
||||
- nextcloud-aio-collabora
|
||||
- nextcloud-aio-talk
|
||||
- nextcloud-aio-nextcloud
|
||||
image: nextcloud/aio-apache:${IMAGE_TAG}
|
||||
image: nextcloud/aio-apache:latest
|
||||
ports:
|
||||
- ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/tcp
|
||||
environment:
|
||||
@@ -28,7 +28,9 @@ services:
|
||||
- nextcloud-aio
|
||||
|
||||
nextcloud-aio-database:
|
||||
image: nextcloud/aio-postgresql:${IMAGE_TAG}
|
||||
image: nextcloud/aio-postgresql:latest
|
||||
expose:
|
||||
- "5432"
|
||||
volumes:
|
||||
- nextcloud_aio_database:/var/lib/postgresql/data:rw
|
||||
- nextcloud_aio_database_dump:/mnt/data:rw
|
||||
@@ -42,6 +44,7 @@ services:
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- nextcloud-aio
|
||||
shm_size: 268435456
|
||||
|
||||
nextcloud-aio-nextcloud:
|
||||
depends_on:
|
||||
@@ -50,7 +53,10 @@ services:
|
||||
- nextcloud-aio-clamav
|
||||
- nextcloud-aio-fulltextsearch
|
||||
- nextcloud-aio-imaginary
|
||||
image: nextcloud/aio-nextcloud:${IMAGE_TAG}
|
||||
image: nextcloud/aio-nextcloud:latest
|
||||
expose:
|
||||
- "9000"
|
||||
- "7867"
|
||||
volumes:
|
||||
- nextcloud_aio_nextcloud:/var/www/html:rw
|
||||
- ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw
|
||||
@@ -96,12 +102,15 @@ services:
|
||||
- STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS}
|
||||
- ADDITIONAL_APKS=${NEXTCLOUD_ADDITIONAL_APKS}
|
||||
- ADDITIONAL_PHP_EXTENSIONS=${NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS}
|
||||
- INSTALL_LATEST_MAJOR=${INSTALL_LATEST_MAJOR}
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- nextcloud-aio
|
||||
|
||||
nextcloud-aio-redis:
|
||||
image: nextcloud/aio-redis:${IMAGE_TAG}
|
||||
image: nextcloud/aio-redis:latest
|
||||
expose:
|
||||
- "6379"
|
||||
environment:
|
||||
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
|
||||
- TZ=${TIMEZONE}
|
||||
@@ -113,12 +122,16 @@ services:
|
||||
|
||||
nextcloud-aio-collabora:
|
||||
profiles: ["collabora"]
|
||||
image: nextcloud/aio-collabora:${IMAGE_TAG}
|
||||
image: nextcloud/aio-collabora:latest
|
||||
expose:
|
||||
- "9980"
|
||||
environment:
|
||||
- aliasgroup1=https://${NC_DOMAIN}:443
|
||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true ${COLLABORA_SECCOMP_POLICY} --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json
|
||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true ${COLLABORA_SECCOMP_POLICY} --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json
|
||||
- dictionaries=${COLLABORA_DICTIONARIES}
|
||||
- TZ=${TIMEZONE}
|
||||
- server_name=${NC_DOMAIN}
|
||||
- DONT_GEN_SSL_CERT=1
|
||||
volumes:
|
||||
- nextcloud_aio_collabora_fonts:/opt/cool/systemplate/tmpfonts:rw
|
||||
restart: unless-stopped
|
||||
@@ -127,15 +140,16 @@ services:
|
||||
|
||||
nextcloud-aio-talk:
|
||||
profiles: ["talk"]
|
||||
image: nextcloud/aio-talk:${IMAGE_TAG}
|
||||
image: nextcloud/aio-talk:latest
|
||||
ports:
|
||||
- ${TALK_PORT}:${TALK_PORT}/tcp
|
||||
- ${TALK_PORT}:${TALK_PORT}/udp
|
||||
expose:
|
||||
- "8081"
|
||||
environment:
|
||||
- NC_DOMAIN=${NC_DOMAIN}
|
||||
- TURN_SECRET=${TURN_SECRET}
|
||||
- SIGNALING_SECRET=${SIGNALING_SECRET}
|
||||
- JANUS_API_KEY=${JANUS_API_KEY}
|
||||
- TZ=${TIMEZONE}
|
||||
- TALK_PORT=${TALK_PORT}
|
||||
restart: unless-stopped
|
||||
@@ -144,7 +158,9 @@ services:
|
||||
|
||||
nextcloud-aio-clamav:
|
||||
profiles: ["clamav"]
|
||||
image: nextcloud/aio-clamav:${IMAGE_TAG}
|
||||
image: nextcloud/aio-clamav:latest
|
||||
expose:
|
||||
- "3310"
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- CLAMD_STARTUP_TIMEOUT=90
|
||||
@@ -156,7 +172,9 @@ services:
|
||||
|
||||
nextcloud-aio-onlyoffice:
|
||||
profiles: ["onlyoffice"]
|
||||
image: nextcloud/aio-onlyoffice:${IMAGE_TAG}
|
||||
image: nextcloud/aio-onlyoffice:latest
|
||||
expose:
|
||||
- "80"
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- JWT_ENABLED=true
|
||||
@@ -170,20 +188,27 @@ services:
|
||||
|
||||
nextcloud-aio-imaginary:
|
||||
profiles: ["imaginary"]
|
||||
image: nextcloud/aio-imaginary:${IMAGE_TAG}
|
||||
image: nextcloud/aio-imaginary:latest
|
||||
expose:
|
||||
- "9000"
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- nextcloud-aio
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
|
||||
nextcloud-aio-fulltextsearch:
|
||||
profiles: ["fulltextsearch"]
|
||||
image: nextcloud/aio-fulltextsearch:${IMAGE_TAG}
|
||||
image: nextcloud/aio-fulltextsearch:latest
|
||||
expose:
|
||||
- "9200"
|
||||
environment:
|
||||
- TZ=${TIMEZONE}
|
||||
- discovery.type=single-node
|
||||
- ES_JAVA_OPTS=-Xms1024M -Xmx1024M
|
||||
- POSTGRES_HOST=nextcloud-aio-database
|
||||
volumes:
|
||||
- nextcloud_aio_elasticsearch:/usr/share/elasticsearch/data:rw
|
||||
restart: unless-stopped
|
||||
@@ -212,5 +237,13 @@ volumes:
|
||||
nextcloud_aio_nextcloud_data:
|
||||
name: nextcloud_aio_nextcloud_data
|
||||
|
||||
# Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
|
||||
networks:
|
||||
nextcloud-aio:
|
||||
name: nextcloud-aio
|
||||
driver: bridge
|
||||
enable_ipv6: true
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: ${IPV6_NETWORK}
|
||||
|
||||
@@ -11,7 +11,7 @@ You can run the containers that are build for AIO with docker-compose. This come
|
||||
- You lose the AIO interface
|
||||
- You lose update notifications and automatic updates
|
||||
- You lose all AIO backup and restore features
|
||||
- You need to know what you are doing, especially when modifying the docker-compose file
|
||||
- **You need to know what you are doing, especially when modifying the docker-compose file**
|
||||
- For updating, you need to strictly follow the at the bottom described update routine
|
||||
- Probably more
|
||||
|
||||
@@ -21,23 +21,23 @@ First, install docker and docker-compose if not already done. Then simply run th
|
||||
git clone https://github.com/nextcloud/all-in-one.git
|
||||
cd all-in-one/manual-install
|
||||
```
|
||||
Then copy the sample.conf to default environment file, e.g. `cp sample.conf .env`, open the new conf file, e.g. with `nano .env`, edit all values that are marked with `# TODO!`, close and save the file. For arm64 support use `IMAGE_TAG=latest-arm64` (Note: there is no clamav image for arm64).
|
||||
Then copy the sample.conf to default environment file, e.g. `cp sample.conf .env`, open the new conf file, e.g. with `nano .env`, edit all values that are marked with `# TODO!`, close and save the file. (Note: there is no clamav image for arm64).
|
||||
|
||||
Now copy the provided yaml file to a docker-compose file by running `cp latest.yml docker-compose.yml`.
|
||||
|
||||
Now you should be ready to go with `sudo docker-compose up`.
|
||||
|
||||
## Docker profiles
|
||||
The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, onlyoffice, talk, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`.
|
||||
The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, onlyoffice, talk, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`. (Note: there is no clamav image for arm64).
|
||||
|
||||
For a complete all-in-one with collabora use `sudo docker-compose --profile collabora --profile talk --profile clamav --profile imaginary --profile fulltextsearch up`.
|
||||
For a complete all-in-one with collabora use `sudo docker-compose --profile collabora --profile talk --profile clamav --profile imaginary --profile fulltextsearch up`. (Note: there is no clamav image for arm64).
|
||||
|
||||
## How to update?
|
||||
Since the AIO containers may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade your containers.
|
||||
1. If your previous copy of `sample.conf` is named `my.conf`, run `mv my.conf .env` in order to rename the file to `.env`.
|
||||
1. Run `sudo docker-compose down` to stop all running containers
|
||||
1. Back up all important files and folders
|
||||
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml latest.yml` for comparing.
|
||||
1. Run `git pull` in order to get the updated yaml files from the repository. Now bring your `docker-compose.yml` file up-to-date with the updated one from the repository. You can use `diff docker-compose.yml latest.yml` for comparing. ⚠️ **Please note**: Starting with AIO v5.1.0, ipv6 networking will be enabled by default, so make sure to either enable it first by following steps 1 and 2 of https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md and then proceed with the steps below or disable ipv6 networking by editing the docker-compose file and removing ipv6 from the network.
|
||||
1. Also have a look at the `sample.conf` if any variable was added or renamed and add that to your conf file as well. Here may help the diff command as well.
|
||||
1. After the file update was successful, simply run `sudo docker-compose pull` to pull the new images.
|
||||
1. At the end run `sudo docker-compose up` in order to start and update the containers with the new configuration.
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
IMAGE_TAG=latest # Version of docker images, should be latest or latest-arm64. Note: latest-arm64 has no clamav support
|
||||
AIO_TOKEN=123456 # Has no function but needs to be set!
|
||||
AIO_URL=localhost # Has no function but needs to be set!
|
||||
APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a reverse proxy and if that is running on the same host and using localhost to connect
|
||||
APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a web server or reverse proxy (like Apache, Nginx and else) and if that is running on the same host and using localhost to connect
|
||||
APACHE_MAX_SIZE=10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
|
||||
APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a reverse proxy.
|
||||
CLAMAV_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically. Note: latest-arm64 has no clamav support
|
||||
APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx and else).
|
||||
CLAMAV_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
COLLABORA_DICTIONARIES="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" # You can change this in order to enable other dictionaries for collabora
|
||||
COLLABORA_ENABLED=yes # Setting this to "yes" enables the option in Nextcloud automatically.
|
||||
COLLABORA_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
COLLABORA_SECCOMP_POLICY=--o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
|
||||
DATABASE_PASSWORD= # TODO! This needs to be a unique and good password!
|
||||
FULLTEXTSEARCH_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
|
||||
IMAGINARY_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
|
||||
JANUS_API_KEY= # TODO! This needs to be a unique and good password!
|
||||
FULLTEXTSEARCH_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
IMAGINARY_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
INSTALL_LATEST_MAJOR=no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
|
||||
NC_DOMAIN=yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
|
||||
NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.
|
||||
NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.
|
||||
@@ -23,12 +22,13 @@ NEXTCLOUD_PASSWORD= # TODO! This is the password of the initially creat
|
||||
NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts" # Allows to modify the Nextcloud apps that are installed on starting AIO the first time
|
||||
NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.
|
||||
NEXTCLOUD_UPLOAD_LIMIT=10G # This allows to change the upload limit of the Nextcloud container
|
||||
ONLYOFFICE_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.
|
||||
ONLYOFFICE_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
ONLYOFFICE_SECRET= # TODO! This needs to be a unique and good password!
|
||||
REDIS_PASSWORD= # TODO! This needs to be a unique and good password!
|
||||
SIGNALING_SECRET= # TODO! This needs to be a unique and good password!
|
||||
TALK_ENABLED=yes # Setting this to "yes" enables the option in Nextcloud automatically.
|
||||
TALK_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_PORT=3478 # This allows to adjust the port that the talk container is using.
|
||||
TIMEZONE=Europe/Berlin # TODO! This is the timezone that your containers will use.
|
||||
TURN_SECRET= # TODO! This needs to be a unique and good password!
|
||||
UPDATE_NEXTCLOUD_APPS=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup on saturdays.
|
||||
UPDATE_NEXTCLOUD_APPS="no" # When setting to "yes" (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.
|
||||
IPV6_NETWORK=fd12:3456:789a:2::/64 # IPv6 subnet to use
|
||||
|
||||
@@ -15,6 +15,7 @@ OUTPUT="$(cat /tmp/containers.json)"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].internal_port)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].secrets)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].devices)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[].backup_volumes)')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-watchtower"))')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-domaincheck"))')"
|
||||
OUTPUT="$(echo "$OUTPUT" | jq 'del(.services[] | select(.container_name == "nextcloud-aio-borgbackup"))')"
|
||||
@@ -48,7 +49,6 @@ do
|
||||
done
|
||||
|
||||
rm -f sample.conf
|
||||
echo 'IMAGE_TAG=latest # Version of docker images, should be latest or latest-arm64. Note: latest-arm64 has no clamav support' >> sample.conf
|
||||
VARIABLES="$(grep -oP '%[A-Z_a-z0-6]+%' containers.yml | sort -u)"
|
||||
mapfile -t VARIABLES <<< "$VARIABLES"
|
||||
for variable in "${VARIABLES[@]}"
|
||||
@@ -59,10 +59,10 @@ do
|
||||
sed -i "s|$variable|\${$sole_variable}|g" containers.yml
|
||||
done
|
||||
|
||||
sed -i 's|_ENABLED=|_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically.|' sample.conf
|
||||
sed -i 's|CLAMAV_ENABLED=no.*|CLAMAV_ENABLED=no # Setting this to "yes" enables the option in Nextcloud automatically. Note: latest-arm64 has no clamav support|' sample.conf
|
||||
sed -i 's|TALK_ENABLED=no|TALK_ENABLED=yes|' sample.conf
|
||||
sed -i 's|COLLABORA_ENABLED=no|COLLABORA_ENABLED=yes|' sample.conf
|
||||
sed -i 's|_ENABLED=|_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.|' sample.conf
|
||||
sed -i 's|CLAMAV_ENABLED=no.*|CLAMAV_ENABLED="no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically. Note: arm64 has no clamav support|' sample.conf
|
||||
sed -i 's|TALK_ENABLED=no|TALK_ENABLED="yes"|' sample.conf
|
||||
sed -i 's|COLLABORA_ENABLED=no|COLLABORA_ENABLED="yes"|' sample.conf
|
||||
sed -i 's|COLLABORA_DICTIONARIES=|COLLABORA_DICTIONARIES="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" # You can change this in order to enable other dictionaries for collabora|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_DATADIR=|NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_data # You can change this to e.g. "/mnt/ncdata" to map it to a location on your host. It needs to be adjusted before the first startup and never afterwards!|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_MOUNT=|NEXTCLOUD_MOUNT=/mnt/ # This allows the Nextcloud container to access directories on the host. It must never be equal to the value of NEXTCLOUD_DATADIR!|' sample.conf
|
||||
@@ -71,9 +71,9 @@ sed -i 's|NEXTCLOUD_MEMORY_LIMIT=|NEXTCLOUD_MEMORY_LIMIT=512M # This al
|
||||
sed -i 's|APACHE_MAX_SIZE=|APACHE_MAX_SIZE=10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_MAX_TIME=|NEXTCLOUD_MAX_TIME=3600 # This allows to change the upload time limit of the Nextcloud container|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_TRUSTED_CACERTS_DIR=|NEXTCLOUD_TRUSTED_CACERTS_DIR=/usr/local/share/ca-certificates/my-custom-ca # Nextcloud container will trust all the Certification Authorities, whose certificates are included in the given directory.|' sample.conf
|
||||
sed -i 's|UPDATE_NEXTCLOUD_APPS=|UPDATE_NEXTCLOUD_APPS=no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup on saturdays.|' sample.conf
|
||||
sed -i 's|APACHE_PORT=|APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a reverse proxy.|' sample.conf
|
||||
sed -i 's|APACHE_IP_BINDING=|APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a reverse proxy and if that is running on the same host and using localhost to connect|' sample.conf
|
||||
sed -i 's|UPDATE_NEXTCLOUD_APPS=|UPDATE_NEXTCLOUD_APPS="no" # When setting to "yes" (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.|' sample.conf
|
||||
sed -i 's|APACHE_PORT=|APACHE_PORT=443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx and else).|' sample.conf
|
||||
sed -i 's|APACHE_IP_BINDING=|APACHE_IP_BINDING=0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a web server or reverse proxy (like Apache, Nginx and else) and if that is running on the same host and using localhost to connect|' sample.conf
|
||||
sed -i 's|TALK_PORT=|TALK_PORT=3478 # This allows to adjust the port that the talk container is using.|' sample.conf
|
||||
sed -i 's|AIO_TOKEN=|AIO_TOKEN=123456 # Has no function but needs to be set!|' sample.conf
|
||||
sed -i 's|AIO_URL=|AIO_URL=localhost # Has no function but needs to be set!|' sample.conf
|
||||
@@ -84,7 +84,9 @@ sed -i 's|COLLABORA_SECCOMP_POLICY=|COLLABORA_SECCOMP_POLICY=--o:security.seccom
|
||||
sed -i 's|NEXTCLOUD_STARTUP_APPS=|NEXTCLOUD_STARTUP_APPS="deck twofactor_totp tasks calendar contacts" # Allows to modify the Nextcloud apps that are installed on starting AIO the first time|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_ADDITIONAL_APKS=|NEXTCLOUD_ADDITIONAL_APKS=imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.|' sample.conf
|
||||
sed -i 's|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=|NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.|' sample.conf
|
||||
sed -i 's|INSTALL_LATEST_MAJOR=|INSTALL_LATEST_MAJOR=no # Setting this to yes will install the latest Major Nextcloud version upon the first installation|' sample.conf
|
||||
sed -i 's|=$|= # TODO! This needs to be a unique and good password!|' sample.conf
|
||||
echo 'IPV6_NETWORK=fd12:3456:789a:2::/64 # IPv6 subnet to use' >> sample.conf
|
||||
|
||||
cat sample.conf
|
||||
|
||||
@@ -128,12 +130,20 @@ done
|
||||
|
||||
cat << NETWORK >> containers.yml
|
||||
|
||||
# Inspired by https://github.com/mailcow/mailcow-dockerized/blob/master/docker-compose.yml
|
||||
networks:
|
||||
nextcloud-aio:
|
||||
name: nextcloud-aio
|
||||
driver: bridge
|
||||
enable_ipv6: true
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: \${IPV6_NETWORK}
|
||||
NETWORK
|
||||
|
||||
cat containers.yml > latest.yml
|
||||
sed -i "/image:/s/$/:\${IMAGE_TAG}/" latest.yml
|
||||
sed -i "/image:/s/$/:latest/" latest.yml
|
||||
|
||||
rm containers.yml
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ The only way to fix this on your side is upgrading regularly (e.g. by enabling d
|
||||
sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike -p nextcloud-aio-nextcloud >> /tmp/nextcloud-aio-nextcloud
|
||||
sudo chown root:root /tmp/nextcloud-aio-nextcloud
|
||||
```
|
||||
1. Now open the file with e.g. nano: `sudo nano /tmp/nextcloud-aio-nextcloud` and change the line that should probably be `nextcloud/aio-nextcloud:latest` on x64 or `nextcloud/aio-nextcloud:latest-arm64` on arm64 to the highest compatible PHP version: E.g. `nextcloud/aio-nextcloud:php8.0-latest` on x64 or `nextcloud/aio-nextcloud:php8.0-latest-arm64` on arm64. Then save the file and close it with `[Ctrl]+[o]` -> `[Enter]` and `[Ctrl]+[x]`.
|
||||
1. Now open the file with e.g. nano: `sudo nano /tmp/nextcloud-aio-nextcloud` and change the line that should probably be `nextcloud/aio-nextcloud:latest` on x64 or `nextcloud/aio-nextcloud:latest-arm64` on arm64 to the highest compatible PHP version: E.g. `nextcloud/aio-nextcloud:php8.0-latest`. Then save the file and close it with `[Ctrl]+[o]` -> `[Enter]` and `[Ctrl]+[x]`.
|
||||
1. After doing so, remove the Nextcloud container with `sudo docker rm nextcloud-aio-nextcloud`.
|
||||
1. Now start the Nextcloud container with the new tag by simply running `sudo bash /tmp/nextcloud-aio-nextcloud` which at startup should automatically upgrade Nextcloud to a more recent version. If not, make sure that there is no `skip.update` file in the Nextcloud datadir. If there is such a file, simply delete the file and restart the container again.<br>
|
||||
**Info**: You can open the Nextcloud container logs with `sudo docker logs -f nextcloud-aio-nextcloud`.
|
||||
|
||||
@@ -15,12 +15,12 @@ The procedure for migrating only the files works like this:
|
||||
1. Recreate all users that were present on your former installation
|
||||
1. Take a backup using Nextcloud AIO's built-in backup solution (so that you can easily restore to this state again) (Note: this will stop all containers and is expected: don't start the container again at this point!)
|
||||
1. Restore the datadirectory of your former instance: for `/path/to/nextcloud/data/` run `sudo docker cp --follow-link /path/to/nextcloud/data/ nextcloud-aio-nextcloud:/mnt/ncdata/` Note: the `/` at the end are necessary.
|
||||
1. Next, run `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chown -R 33:0 /mnt/ncdata/"` and `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chmod -R 750 /mnt/ncdata/` to apply the correct permissions. (Or if `NEXTCLOUD_DATADIR` was provided, apply `chown -R 33:0` and `chmod -R 750` to the chosen path.)
|
||||
1. Next, run `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chown -R 33:0 /mnt/ncdata/` and `sudo docker run --rm --volume nextcloud_aio_nextcloud_data:/mnt/ncdata:rw alpine chmod -R 750 /mnt/ncdata/` to apply the correct permissions. (Or if `NEXTCLOUD_DATADIR` was provided, apply `chown -R 33:0` and `chmod -R 750` to the chosen path.)
|
||||
1. Start the containers again and wait until all containers are running
|
||||
1. Run `sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan-app-data && sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ files:scan --all` in order to scan all files in the datadirectory.
|
||||
|
||||
## Migrate the files and the database
|
||||
**Please note**: this is much more complicated than migrating only the files and also not as failproof so be warned! Also, this will not work on former snap installations as the snap is read-only and thus you cannot install the necessary `pdo_pgsql` PHP extension.
|
||||
**Please note**: this is much more complicated than migrating only the files and also not as failproof so be warned! Also, this will not work on former snap installations as the snap is read-only and thus you cannot install the necessary `pdo_pgsql` PHP extension. So if migrating from snap, you will need to use one of the other methods. However you could try to ask if the snaps maintainer could add this one small PHP extension to the snap here: https://github.com/nextcloud-snap/nextcloud-snap/issues which would allow for an easy migration.
|
||||
|
||||
The procedure for migrating the files and the database works like this:
|
||||
1. Make sure that your old instance is on exactly the same version like the version used in Nextcloud AIO. (e.g. 23.0.0) You can find the used version here: [click here](https://github.com/nextcloud/all-in-one/search?l=Dockerfile&q=NEXTCLOUD_VERSION&type=). If not, simply upgrade your former installation to that version or wait until the version used in Nextcloud AIO got updated to the same version of your former installation or the other way around.
|
||||
@@ -36,8 +36,10 @@ The procedure for migrating the files and the database works like this:
|
||||
export PG_PASSWORD="my-temporary-password"
|
||||
export PG_DATABASE="nextcloud_db"
|
||||
sudo -u postgres psql <<END
|
||||
CREATE USER $PG_USER WITH PASSWORD '$PG_PASSWORD';
|
||||
CREATE USER $PG_USER WITH PASSWORD '$PG_PASSWORD' CREATEDB;
|
||||
CREATE DATABASE $PG_DATABASE WITH OWNER $PG_USER TEMPLATE template0 ENCODING 'UTF8';
|
||||
GRANT ALL PRIVILEGES ON DATABASE $PG_DATABASE TO $PG_USER;
|
||||
GRANT ALL PRIVILEGES ON SCHEMA public TO $PG_USER;
|
||||
END
|
||||
```
|
||||
1. Run the following command to start the conversion:
|
||||
|
||||
@@ -8,12 +8,12 @@ Below is described more in detail how the the second way works.
|
||||
## Run multiple AIO instances on the same server with docker rootless
|
||||
1. Create as many linux users as you need first. The easiest way is to use `sudo adduser` and follow the setup for that. Make sure to create a strong unique password for each of them and write it down!
|
||||
1. Log in as each of the users e.g. by opening a new SSH connection and install docker rootless for each of them by following step 0-4 of the [docker rootless documentation](./docker-rootless.md).
|
||||
1. Then install AIO in reverse proxy mode by using the command that is descriebed in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
|
||||
1. Then install AIO in reverse proxy mode by using the command that is descriebed in step 2 and 3 of the [reverse proxy documentation](./reverse-proxy.md) but use a different `APACHE_PORT` and [`TALK_PORT`](https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port) for each instance as otherwise it will bug out. Also make sure to adjust the docker socket and `WATCHTOWER_DOCKER_SOCKET_PATH` correctly for each of them by following step 6 of the [docker rootless documentation](./docker-rootless.md). Additionally, modify `--publish 8080:8080` to a different port for each container, e.g. `8081:8080` as otherwise it will not work.<br>
|
||||
**⚠️ Please note:** If you want to adjust the `NEXTCLOUD_DATADIR`, make sure to apply the correct permissions to the chosen path as documented at the bottom of the [docker rootless documentation](./docker-rootless.md). Also for the built-in backup to work, the target path needs to have the correct permissions as documented there, too.
|
||||
1. Now install your webserver of choice on the host system. It is recommended to use caddy for this as it is by far the easiest solution. You can do so by following https://caddyserver.com/docs/install#debian-ubuntu-raspbian or below. (It needs to be installed directly on the host or on a different server in the same network).
|
||||
1. Next create your Caddyfile with multiple entries and domains for the different instances like described in step 1 of the [reverse proxy documentation](./reverse-proxy.md). Obviously each domain needs to point correctly to the chosen `APACHE_PORT` that you've configured before. Then start Caddy which should automatically get the needed certificates for you if your domains are configured correctly and ports 80 and 443 are forwarded to your server.
|
||||
1. Now open each of the AIO interfaces by opening `https://ip.address.of.this.server:8080` or e.g. `https://ip.address.of.this.server:8081` or as chosen during step 3 of this documentation.
|
||||
1. Finally type in the domain that you've configured for each of the instances during step 5 of this documentation and you are done.
|
||||
1. Please also do not forget to open each chosen `TALK_PORT` UPD and TCP in your firewall/router as otherwise Talk will not work correctly!
|
||||
1. Please also do not forget to open/forward each chosen `TALK_PORT` UPD and TCP in your firewall/router as otherwise Talk will not work correctly!
|
||||
|
||||
Now everything should be set up correctly and you should have created multiple working instances of AIO on the same server!
|
||||
|
||||
13
nextcloud-aio-helm-chart/Chart.yaml
Executable file
13
nextcloud-aio-helm-chart/Chart.yaml
Executable file
@@ -0,0 +1,13 @@
|
||||
name: nextcloud-aio-helm-chart
|
||||
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
|
||||
version: 5.1.0
|
||||
apiVersion: v2
|
||||
keywords:
|
||||
- latest
|
||||
- nextcloud
|
||||
- helm-chart
|
||||
- open-source
|
||||
- cloud
|
||||
sources:
|
||||
- https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart
|
||||
home: https://github.com/nextcloud/all-in-one/tree/main/nextcloud-aio-helm-chart
|
||||
37
nextcloud-aio-helm-chart/readme.md
Executable file
37
nextcloud-aio-helm-chart/readme.md
Executable file
@@ -0,0 +1,37 @@
|
||||
# Nextcloud AIO Helm-chart
|
||||
|
||||
You can run the containers that are build for AIO with Kubernetes using this Helm chart. This comes with a few downsides, that are discussed below.
|
||||
|
||||
### Advantages
|
||||
- You can run it without a container having access to the docker socket
|
||||
- You can run the containers with Kubernetes
|
||||
|
||||
### Disadvantages
|
||||
- You lose the AIO interface
|
||||
- You lose update notifications and automatic updates
|
||||
- You lose all AIO backup and restore features
|
||||
- **You need to know what you are doing**
|
||||
- For updating, you need to strictly follow the at the bottom described update routine
|
||||
- You need to monitor yourself if the volumes have enough free space and increase them if they don't by adjusting their size in values.yaml
|
||||
- Probably more
|
||||
|
||||
## How to use this?
|
||||
|
||||
First download this file: https://raw.githubusercontent.com/nextcloud/all-in-one/main/nextcloud-aio-helm-chart/values.yaml and adjust at least all values marked with `# TODO!`
|
||||
|
||||
Then run:
|
||||
|
||||
```
|
||||
helm repo add nextcloud-aio https://nextcloud.github.io/all-in-one/
|
||||
helm install my-release nextcloud-aio/nextcloud-aio-helm-chart -f values.yaml
|
||||
```
|
||||
|
||||
And after a while, everything should be set up.
|
||||
|
||||
## How to update?
|
||||
Since the values of this helm chart may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade it.
|
||||
1. Stop all running pods
|
||||
1. Back up all volumes that got created by the Helm chart and the values.yaml file
|
||||
1. Run `helm repo update nextcloud-aio` in order to get the updated yaml files from the repository
|
||||
1. Now download the updated values.yaml file from https://raw.githubusercontent.com/nextcloud/all-in-one/main/nextcloud-aio-helm-chart/values.yaml and compare that with the one that you currently have locally. Look for variables that changed or got added. You can use the diff command to compare them.
|
||||
1. After the file update was successful, simply run `helm install my-release nextcloud-aio/nextcloud-aio-helm-chart -f values.yaml` to update to the new version.
|
||||
@@ -54,11 +54,10 @@ spec:
|
||||
value: nextcloud-aio-talk
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-apache:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-apache:20230511_075831-latest
|
||||
name: nextcloud-aio-apache
|
||||
ports:
|
||||
- containerPort: {{ .Values.APACHE_PORT }}
|
||||
hostIP: {{ .Values.APACHE_IP_BINDING }}
|
||||
volumeMounts:
|
||||
- mountPath: /var/www/html
|
||||
name: nextcloud-aio-nextcloud
|
||||
@@ -8,6 +8,7 @@ metadata:
|
||||
io.kompose.service: nextcloud-aio-apache
|
||||
name: nextcloud-aio-apache
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
ports:
|
||||
- name: "{{ .Values.APACHE_PORT }}"
|
||||
port: {{ .Values.APACHE_PORT }}
|
||||
@@ -38,8 +38,10 @@ spec:
|
||||
value: "90"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-clamav:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-clamav:20230511_075831-latest
|
||||
name: nextcloud-aio-clamav
|
||||
ports:
|
||||
- containerPort: 3310
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/clamav
|
||||
name: nextcloud-aio-clamav
|
||||
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-service.yaml
Executable file
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-service.yaml
Executable file
@@ -0,0 +1,18 @@
|
||||
{{- if eq .Values.CLAMAV_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-clamav
|
||||
name: nextcloud-aio-clamav
|
||||
spec:
|
||||
ports:
|
||||
- name: "3310"
|
||||
port: 3310
|
||||
targetPort: 3310
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-clamav
|
||||
{{- end }}
|
||||
@@ -34,6 +34,8 @@ spec:
|
||||
mountPath: /nextcloud-aio-collabora-fonts
|
||||
containers:
|
||||
- env:
|
||||
- name: DONT_GEN_SSL_CERT
|
||||
value: "1"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
- name: aliasgroup1
|
||||
@@ -41,9 +43,13 @@ spec:
|
||||
- name: dictionaries
|
||||
value: "{{ .Values.COLLABORA_DICTIONARIES }}"
|
||||
- name: extra_params
|
||||
value: --o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true {{ .Values.COLLABORA_SECCOMP_POLICY }} --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json
|
||||
image: nextcloud/aio-collabora:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true {{ .Values.COLLABORA_SECCOMP_POLICY }} --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json
|
||||
- name: server_name
|
||||
value: "{{ .Values.NC_DOMAIN }}"
|
||||
image: nextcloud/aio-collabora:20230511_075831-latest
|
||||
name: nextcloud-aio-collabora
|
||||
ports:
|
||||
- containerPort: 9980
|
||||
volumeMounts:
|
||||
- mountPath: /opt/cool/systemplate/tmpfonts
|
||||
name: nextcloud-aio-collabora-fonts
|
||||
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-service.yaml
Executable file
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-service.yaml
Executable file
@@ -0,0 +1,18 @@
|
||||
{{- if eq .Values.COLLABORA_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-collabora
|
||||
name: nextcloud-aio-collabora
|
||||
spec:
|
||||
ports:
|
||||
- name: "9980"
|
||||
port: 9980
|
||||
targetPort: 9980
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-collabora
|
||||
{{- end }}
|
||||
@@ -22,13 +22,27 @@ spec:
|
||||
io.kompose.service: nextcloud-aio-database
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init-subpath
|
||||
image: alpine
|
||||
command:
|
||||
- mkdir
|
||||
- "-p"
|
||||
- /nextcloud-aio-database/data
|
||||
- /nextcloud-aio-database
|
||||
- /nextcloud-aio-database-dump
|
||||
volumeMounts:
|
||||
- name: nextcloud-aio-database-dump
|
||||
mountPath: /nextcloud-aio-database-dump
|
||||
- name: nextcloud-aio-database
|
||||
mountPath: /nextcloud-aio-database
|
||||
- name: init-volumes
|
||||
image: alpine
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- "chmod 777 /nextcloud-aio-database /nextcloud-aio-database-dump
|
||||
&& chown 999:999 /nextcloud-aio-database"
|
||||
- chown
|
||||
- 999:999
|
||||
- "-R"
|
||||
- /nextcloud-aio-database
|
||||
- /nextcloud-aio-database-dump
|
||||
volumeMounts:
|
||||
- name: nextcloud-aio-database-dump
|
||||
mountPath: /nextcloud-aio-database-dump
|
||||
@@ -46,10 +60,13 @@ spec:
|
||||
value: nextcloud
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-postgresql:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-postgresql:20230511_075831-latest
|
||||
name: nextcloud-aio-database
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/postgresql/data
|
||||
subPath: data
|
||||
name: nextcloud-aio-database
|
||||
- mountPath: /mnt/data
|
||||
name: nextcloud-aio-database-dump
|
||||
16
nextcloud-aio-helm-chart/templates/nextcloud-aio-database-service.yaml
Executable file
16
nextcloud-aio-helm-chart/templates/nextcloud-aio-database-service.yaml
Executable file
@@ -0,0 +1,16 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-database
|
||||
name: nextcloud-aio-database
|
||||
spec:
|
||||
ports:
|
||||
- name: "5432"
|
||||
port: 5432
|
||||
targetPort: 5432
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-database
|
||||
@@ -36,12 +36,16 @@ spec:
|
||||
- env:
|
||||
- name: ES_JAVA_OPTS
|
||||
value: -Xms1024M -Xmx1024M
|
||||
- name: POSTGRES_HOST
|
||||
value: nextcloud-aio-database
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
- name: discovery.type
|
||||
value: single-node
|
||||
image: nextcloud/aio-fulltextsearch:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-fulltextsearch:20230511_075831-latest
|
||||
name: nextcloud-aio-fulltextsearch
|
||||
ports:
|
||||
- containerPort: 9200
|
||||
volumeMounts:
|
||||
- mountPath: /usr/share/elasticsearch/data
|
||||
name: nextcloud-aio-elasticsearch
|
||||
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-service.yaml
Executable file
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-service.yaml
Executable file
@@ -0,0 +1,18 @@
|
||||
{{- if eq .Values.FULLTEXTSEARCH_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||
name: nextcloud-aio-fulltextsearch
|
||||
spec:
|
||||
ports:
|
||||
- name: "9200"
|
||||
port: 9200
|
||||
targetPort: 9200
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-fulltextsearch
|
||||
{{- end }}
|
||||
@@ -26,6 +26,12 @@ spec:
|
||||
- env:
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-imaginary:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-imaginary:20230511_075831-latest
|
||||
name: nextcloud-aio-imaginary
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
- SYS_NICE
|
||||
{{- end }}
|
||||
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-service.yaml
Executable file
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-service.yaml
Executable file
@@ -0,0 +1,18 @@
|
||||
{{- if eq .Values.IMAGINARY_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-imaginary
|
||||
name: nextcloud-aio-imaginary
|
||||
spec:
|
||||
ports:
|
||||
- name: "9000"
|
||||
port: 9000
|
||||
targetPort: 9000
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-imaginary
|
||||
{{- end }}
|
||||
@@ -28,13 +28,10 @@ spec:
|
||||
- chmod
|
||||
- "777"
|
||||
- /nextcloud-aio-nextcloud
|
||||
- /nextcloud-aio-nextcloud-data
|
||||
- /nextcloud-aio-nextcloud-trusted-cacerts
|
||||
volumeMounts:
|
||||
- name: nextcloud-aio-nextcloud-trusted-cacerts
|
||||
mountPath: /nextcloud-aio-nextcloud-trusted-cacerts
|
||||
- name: nextcloud-aio-nextcloud-data
|
||||
mountPath: /nextcloud-aio-nextcloud-data
|
||||
- name: nextcloud-aio-nextcloud
|
||||
mountPath: /nextcloud-aio-nextcloud
|
||||
containers:
|
||||
@@ -67,6 +64,8 @@ spec:
|
||||
value: "{{ .Values.IMAGINARY_ENABLED }}"
|
||||
- name: IMAGINARY_HOST
|
||||
value: nextcloud-aio-imaginary
|
||||
- name: INSTALL_LATEST_MAJOR
|
||||
value: "{{ .Values.INSTALL_LATEST_MAJOR }}"
|
||||
- name: NC_DOMAIN
|
||||
value: "{{ .Values.NC_DOMAIN }}"
|
||||
- name: NEXTCLOUD_DATA_DIR
|
||||
@@ -115,8 +114,11 @@ spec:
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
- name: UPDATE_NEXTCLOUD_APPS
|
||||
value: "{{ .Values.UPDATE_NEXTCLOUD_APPS }}"
|
||||
image: nextcloud/aio-nextcloud:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-nextcloud:20230511_075831-latest
|
||||
name: nextcloud-aio-nextcloud
|
||||
ports:
|
||||
- containerPort: 9000
|
||||
- containerPort: 7867
|
||||
volumeMounts:
|
||||
- mountPath: /var/www/html
|
||||
name: nextcloud-aio-nextcloud
|
||||
19
nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-service.yaml
Executable file
19
nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-service.yaml
Executable file
@@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-nextcloud
|
||||
name: nextcloud-aio-nextcloud
|
||||
spec:
|
||||
ports:
|
||||
- name: "9000"
|
||||
port: 9000
|
||||
targetPort: 9000
|
||||
- name: "7867"
|
||||
port: 7867
|
||||
targetPort: 7867
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-nextcloud
|
||||
@@ -42,8 +42,10 @@ spec:
|
||||
value: "{{ .Values.ONLYOFFICE_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-onlyoffice:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-onlyoffice:20230511_075831-latest
|
||||
name: nextcloud-aio-onlyoffice
|
||||
ports:
|
||||
- containerPort: 80
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/onlyoffice
|
||||
name: nextcloud-aio-onlyoffice
|
||||
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-service.yaml
Executable file
18
nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-service.yaml
Executable file
@@ -0,0 +1,18 @@
|
||||
{{- if eq .Values.ONLYOFFICE_ENABLED "yes" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-onlyoffice
|
||||
name: nextcloud-aio-onlyoffice
|
||||
spec:
|
||||
ports:
|
||||
- name: "80"
|
||||
port: 80
|
||||
targetPort: 80
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-onlyoffice
|
||||
{{- end }}
|
||||
@@ -37,8 +37,10 @@ spec:
|
||||
value: "{{ .Values.REDIS_PASSWORD }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-redis:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-redis:20230511_075831-latest
|
||||
name: nextcloud-aio-redis
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: nextcloud-aio-redis
|
||||
16
nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-service.yaml
Executable file
16
nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-service.yaml
Executable file
@@ -0,0 +1,16 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-redis
|
||||
name: nextcloud-aio-redis
|
||||
spec:
|
||||
ports:
|
||||
- name: "6379"
|
||||
port: 6379
|
||||
targetPort: 6379
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-redis
|
||||
@@ -24,8 +24,6 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- env:
|
||||
- name: JANUS_API_KEY
|
||||
value: "{{ .Values.JANUS_API_KEY }}"
|
||||
- name: NC_DOMAIN
|
||||
value: "{{ .Values.NC_DOMAIN }}"
|
||||
- name: SIGNALING_SECRET
|
||||
@@ -36,10 +34,11 @@ spec:
|
||||
value: "{{ .Values.TURN_SECRET }}"
|
||||
- name: TZ
|
||||
value: "{{ .Values.TIMEZONE }}"
|
||||
image: nextcloud/aio-talk:20230124_100035-{{ .Values.IMAGE_TAG }}
|
||||
image: nextcloud/aio-talk:20230511_075831-latest
|
||||
name: nextcloud-aio-talk
|
||||
ports:
|
||||
- containerPort: {{ .Values.TALK_PORT }}
|
||||
- containerPort: {{ .Values.TALK_PORT }}
|
||||
protocol: UDP
|
||||
- containerPort: 8081
|
||||
{{- end }}
|
||||
@@ -1,4 +1,27 @@
|
||||
{{- if eq .Values.TALK_ENABLED "yes" }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
kompose.cmd: kompose convert -c -f latest.yml
|
||||
kompose.version: 1.28.0 (c4137012e)
|
||||
labels:
|
||||
io.kompose.service: nextcloud-aio-talk
|
||||
name: nextcloud-aio-talk-public
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
ports:
|
||||
- name: "{{ .Values.TALK_PORT }}"
|
||||
port: {{ .Values.TALK_PORT }}
|
||||
targetPort: {{ .Values.TALK_PORT }}
|
||||
- name: {{ .Values.TALK_PORT }}-udp
|
||||
port: {{ .Values.TALK_PORT }}
|
||||
protocol: UDP
|
||||
targetPort: {{ .Values.TALK_PORT }}
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-talk
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
@@ -10,13 +33,9 @@ metadata:
|
||||
name: nextcloud-aio-talk
|
||||
spec:
|
||||
ports:
|
||||
- name: "{{ .Values.TALK_PORT }}"
|
||||
port: {{ .Values.TALK_PORT }}
|
||||
targetPort: {{ .Values.TALK_PORT }}
|
||||
- name: {{ .Values.TALK_PORT }}-udp
|
||||
port: {{ .Values.TALK_PORT }}
|
||||
protocol: UDP
|
||||
targetPort: {{ .Values.TALK_PORT }}
|
||||
- name: "8081"
|
||||
port: 8081
|
||||
targetPort: 8081
|
||||
selector:
|
||||
io.kompose.service: nextcloud-aio-talk
|
||||
{{- end }}
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
DOCKER_TAG="$1"
|
||||
|
||||
# The logic needs the files in ./helm-chart
|
||||
mv ./nextcloud-aio-helm-chart ./helm-chart
|
||||
|
||||
# Clean
|
||||
rm -f ./helm-chart/values.yaml
|
||||
rm -rf ./helm-chart/templates
|
||||
@@ -22,13 +25,14 @@ sed -i 's|^|export |' /tmp/sample.conf
|
||||
# shellcheck disable=SC1091
|
||||
source /tmp/sample.conf
|
||||
rm /tmp/sample.conf
|
||||
sed -i "s|\${IMAGE_TAG}|$DOCKER_TAG\${IMAGE_TAG}|" latest.yml
|
||||
sed -i "s|\${APACHE_IP_BINDING}|$APACHE_IP_BINDING|" latest.yml
|
||||
sed -i "s|:latest$|:$DOCKER_TAG-latest|" latest.yml
|
||||
sed -i "s|\${APACHE_IP_BINDING}:||" latest.yml
|
||||
sed -i "s|\${APACHE_PORT}:\${APACHE_PORT}/|$APACHE_PORT:$APACHE_PORT/|" latest.yml
|
||||
sed -i "s|\${TALK_PORT}:\${TALK_PORT}/|$TALK_PORT:$TALK_PORT/|g" latest.yml
|
||||
sed -i "s|- \${APACHE_PORT}|- $APACHE_PORT|" latest.yml
|
||||
sed -i "s|- \${TALK_PORT}|- $TALK_PORT|" latest.yml
|
||||
sed -i "s|\${NEXTCLOUD_DATADIR}|$NEXTCLOUD_DATADIR|" latest.yml
|
||||
sed -i "/name: nextcloud-aio/,$ d" latest.yml
|
||||
sed -i "/NEXTCLOUD_DATADIR/d" latest.yml
|
||||
sed -i "/\${NEXTCLOUD_MOUNT}/d" latest.yml
|
||||
sed -i "/^volumes:/a\ \ nextcloud_aio_nextcloud_trusted_cacerts:\n \ \ \ \ name: nextcloud_aio_nextcloud_trusted_cacerts" latest.yml
|
||||
@@ -52,11 +56,20 @@ cat << EOL > /tmp/initcontainers
|
||||
volumeMountsInitContainer:
|
||||
EOL
|
||||
cat << EOL > /tmp/initcontainers.database
|
||||
initContainers:
|
||||
- name: init-subpath
|
||||
image: alpine
|
||||
command:
|
||||
- mkdir
|
||||
- "-p"
|
||||
- /nextcloud-aio-database/data
|
||||
volumeMountsInitContainer:
|
||||
- name: init-volumes
|
||||
image: alpine
|
||||
command:
|
||||
- chown
|
||||
- 999:999
|
||||
- "-R"
|
||||
volumeMountsInitContainer:
|
||||
EOL
|
||||
# shellcheck disable=SC1083
|
||||
@@ -72,8 +85,16 @@ for variable in "${DEPLOYMENTS[@]}"; do
|
||||
volumeNames="$(grep -A1 mountPath "$variable" | grep -v mountPath | sed 's|.*name: ||' | sed '/^--$/d')"
|
||||
mapfile -t volumeNames <<< "$volumeNames"
|
||||
for volumeName in "${volumeNames[@]}"; do
|
||||
sed -i "/^.*volumeMountsInitContainer:/i\ \ \ \ \ \ \ \ \ \ \ \ - /$volumeName" "$variable"
|
||||
sed -i "/volumeMountsInitContainer:/a\ \ \ \ \ \ \ \ \ \ \ \ - name: $volumeName\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ mountPath: /$volumeName" "$variable"
|
||||
# The Nextcloud container runs as root user and sets the correct permissions automatically for the data-dir if the www-data user cannot write to it
|
||||
if [ "$volumeName" != "nextcloud-aio-nextcloud-data" ]; then
|
||||
sed -i "/^.*volumeMountsInitContainer:/i\ \ \ \ \ \ \ \ \ \ \ \ - /$volumeName" "$variable"
|
||||
sed -i "/volumeMountsInitContainer:/a\ \ \ \ \ \ \ \ \ \ \ \ - name: $volumeName\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ mountPath: /$volumeName" "$variable"
|
||||
# Workaround for the database volume
|
||||
if [ "$volumeName" = nextcloud-aio-database ]; then
|
||||
sed -i "/mountPath: \/var\/lib\/postgresql\/data/a\ \ \ \ \ \ \ \ \ \ \ \ \ \ subPath: data" "$variable"
|
||||
fi
|
||||
|
||||
fi
|
||||
done
|
||||
sed -i "s|volumeMountsInitContainer|volumeMounts|" "$variable"
|
||||
if grep -q claimName "$variable"; then
|
||||
@@ -100,13 +121,31 @@ find ./ -name '*persistentvolumeclaim.yaml' -exec sed -i "/accessModes:/i\ \ sto
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*persistentvolumeclaim.yaml' -exec sed -i "/accessModes:/i\ \ {{- end }}" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*deployment.yaml' -exec sed -i "/restartPolicy:/d" \{} \;
|
||||
find ./ -name '*deployment.yaml' -exec sed -i "/restartPolicy:/d" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*apache*' -exec sed -i "s|$APACHE_IP_BINDING|{{ .Values.APACHE_IP_BINDING }}|" \{} \;
|
||||
find ./ -name '*apache*' -exec sed -i "s|$APACHE_PORT|{{ .Values.APACHE_PORT }}|" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*apache*' -exec sed -i "s|$APACHE_PORT|{{ .Values.APACHE_PORT }}|" \{} \;
|
||||
find ./ -name '*talk*' -exec sed -i "s|$TALK_PORT|{{ .Values.TALK_PORT }}|" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*talk*' -exec sed -i "s|$TALK_PORT|{{ .Values.TALK_PORT }}|" \{} \;
|
||||
find ./ -name '*apache-service.yaml' -exec sed -i "/^spec:/a\ \ type: LoadBalancer" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*talk-service.yaml' -exec sed -i "/^spec:/a\ \ type: LoadBalancer" \{} \;
|
||||
echo '---' > /tmp/talk-service.copy
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*talk-service.yaml' -exec cat \{} \; >> /tmp/talk-service.copy
|
||||
sed -i 's|name: nextcloud-aio-talk|name: nextcloud-aio-talk-public|' /tmp/talk-service.copy
|
||||
# shellcheck disable=SC1083
|
||||
INTERNAL_TALK_PORTS="$(find ./ -name '*talk-deployment.yaml' -exec grep -oP 'containerPort: [0-9]+' \{} \;)"
|
||||
mapfile -t INTERNAL_TALK_PORTS <<< "$INTERNAL_TALK_PORTS"
|
||||
for port in "${INTERNAL_TALK_PORTS[@]}"; do
|
||||
port="$(echo "$port" | grep -oP '[0-9]+')"
|
||||
sed -i "/$port/d" /tmp/talk-service.copy
|
||||
done
|
||||
echo '---' >> /tmp/talk-service.copy
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*talk-service.yaml' -exec grep -v '{{ .Values.*}}\|protocol: UDP\|type: LoadBalancer' \{} \; >> /tmp/talk-service.copy
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*talk-service.yaml' -exec mv /tmp/talk-service.copy \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*.yaml' -exec sed -i "s|'{{|\"{{|g;s|}}'|}}\"|g" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
@@ -119,7 +158,7 @@ find ./ \( -not -name '*service.yaml' -name '*.yaml' \) -exec sed -i "/^status:/
|
||||
find ./ \( -not -name '*persistentvolumeclaim.yaml' -name '*.yaml' \) -exec sed -i "/resources:/d" \{} \;
|
||||
# shellcheck disable=SC1083
|
||||
find ./ -name '*.yaml' -exec sed -i "/creationTimestamp: null/d" \{} \;
|
||||
VOLUMES="$(find ./ -name '*persistentvolumeclaim.yaml' | sed 's|-persistentvolumeclaim.yaml||g;s|.*nextcloud-aio-||g')"
|
||||
VOLUMES="$(find ./ -name '*persistentvolumeclaim.yaml' | sed 's|-persistentvolumeclaim.yaml||g;s|.*nextcloud-aio-||g' | sort)"
|
||||
mapfile -t VOLUMES <<< "$VOLUMES"
|
||||
for variable in "${VOLUMES[@]}"; do
|
||||
name="$(echo "$variable" | sed 's|-|_|g' | tr '[:lower:]' '[:upper:]')_STORAGE_SIZE"
|
||||
@@ -147,8 +186,13 @@ sed -i 's|"||g' /tmp/sample.conf
|
||||
sed -i 's|=|: |' /tmp/sample.conf
|
||||
sed -i 's|= |: |' /tmp/sample.conf
|
||||
sed -i '/^NEXTCLOUD_DATADIR/d' /tmp/sample.conf
|
||||
sed -i '/^APACHE_IP_BINDING/d' /tmp/sample.conf
|
||||
sed -i '/^NEXTCLOUD_MOUNT/d' /tmp/sample.conf
|
||||
sed -i '/^IPV6_NETWORK/d' /tmp/sample.conf
|
||||
sed -i '/_ENABLED.*/s/ yes / "yes" /' /tmp/sample.conf
|
||||
sed -i '/_ENABLED.*/s/ no / "no" /' /tmp/sample.conf
|
||||
sed -i 's|^NEXTCLOUD_TRUSTED_CACERTS_DIR: .*|NEXTCLOUD_TRUSTED_CACERTS_DIR: # Setting this to any value allows to automatically import root certificates into the Nextcloud container|' /tmp/sample.conf
|
||||
sed -i 's|10737418240|"10737418240"|' /tmp/sample.conf
|
||||
# shellcheck disable=SC2129
|
||||
echo 'STORAGE_CLASS: # By setting this, you can adjust the storage class for your volumes' >> /tmp/sample.conf
|
||||
for variable in "${VOLUME_VARIABLE[@]}"; do
|
||||
@@ -174,4 +218,9 @@ done
|
||||
|
||||
chmod 777 -R ./
|
||||
|
||||
# Seems like the dir needs to match the name of the chart
|
||||
cd ../
|
||||
rm -rf ./nextcloud-aio-helm-chart
|
||||
mv ./helm-chart ./nextcloud-aio-helm-chart
|
||||
|
||||
set +ex
|
||||
@@ -1,17 +1,15 @@
|
||||
IMAGE_TAG: latest # Version of docker images, should be latest or latest-arm64. Note: latest-arm64 has no clamav support
|
||||
AIO_TOKEN: 123456 # Has no function but needs to be set!
|
||||
AIO_URL: localhost # Has no function but needs to be set!
|
||||
APACHE_IP_BINDING: 0.0.0.0 # This can be changed to e.g. 127.0.0.1 if you want to run AIO behind a reverse proxy and if that is running on the same host and using localhost to connect
|
||||
APACHE_MAX_SIZE: 10737418240 # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
|
||||
APACHE_PORT: 443 # Changing this to a different value than 443 will allow you to run it behind a reverse proxy.
|
||||
CLAMAV_ENABLED: no # Setting this to yes enables the option in Nextcloud automatically. Note: latest-arm64 has no clamav support
|
||||
APACHE_MAX_SIZE: "10737418240" # This needs to be an integer and in sync with NEXTCLOUD_UPLOAD_LIMIT
|
||||
APACHE_PORT: 443 # Changing this to a different value than 443 will allow you to run it behind a web server or reverse proxy (like Apache, Nginx and else).
|
||||
CLAMAV_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
COLLABORA_DICTIONARIES: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru # You can change this in order to enable other dictionaries for collabora
|
||||
COLLABORA_ENABLED: yes # Setting this to yes enables the option in Nextcloud automatically.
|
||||
COLLABORA_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
COLLABORA_SECCOMP_POLICY: --o:security.seccomp=true # Changing the value to false allows to disable the seccomp feature of the Collabora container.
|
||||
DATABASE_PASSWORD: # TODO! This needs to be a unique and good password!
|
||||
FULLTEXTSEARCH_ENABLED: no # Setting this to yes enables the option in Nextcloud automatically.
|
||||
IMAGINARY_ENABLED: no # Setting this to yes enables the option in Nextcloud automatically.
|
||||
JANUS_API_KEY: # TODO! This needs to be a unique and good password!
|
||||
FULLTEXTSEARCH_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
IMAGINARY_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
INSTALL_LATEST_MAJOR: no # Setting this to yes will install the latest Major Nextcloud version upon the first installation
|
||||
NC_DOMAIN: yourdomain.com # TODO! Needs to be changed to the domain that you want to use for Nextcloud.
|
||||
NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value.
|
||||
NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value.
|
||||
@@ -21,24 +19,24 @@ NEXTCLOUD_PASSWORD: # TODO! This is the password of the initially crea
|
||||
NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts # Allows to modify the Nextcloud apps that are installed on starting AIO the first time
|
||||
NEXTCLOUD_TRUSTED_CACERTS_DIR: # Setting this to any value allows to automatically import root certificates into the Nextcloud container
|
||||
NEXTCLOUD_UPLOAD_LIMIT: 10G # This allows to change the upload limit of the Nextcloud container
|
||||
ONLYOFFICE_ENABLED: no # Setting this to yes enables the option in Nextcloud automatically.
|
||||
ONLYOFFICE_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
ONLYOFFICE_SECRET: # TODO! This needs to be a unique and good password!
|
||||
REDIS_PASSWORD: # TODO! This needs to be a unique and good password!
|
||||
SIGNALING_SECRET: # TODO! This needs to be a unique and good password!
|
||||
TALK_ENABLED: yes # Setting this to yes enables the option in Nextcloud automatically.
|
||||
TALK_ENABLED: "no" # Setting this to "yes" (with quotes) enables the option in Nextcloud automatically.
|
||||
TALK_PORT: 3478 # This allows to adjust the port that the talk container is using.
|
||||
TIMEZONE: Europe/Berlin # TODO! This is the timezone that your containers will use.
|
||||
TURN_SECRET: # TODO! This needs to be a unique and good password!
|
||||
UPDATE_NEXTCLOUD_APPS: no # When setting to yes, it will automatically update all installed Nextcloud apps upon container startup on saturdays.
|
||||
UPDATE_NEXTCLOUD_APPS: no # When setting to yes (with quotes), it will automatically update all installed Nextcloud apps upon container startup on saturdays.
|
||||
STORAGE_CLASS: # By setting this, you can adjust the storage class for your volumes
|
||||
ELASTICSEARCH_STORAGE_SIZE: 1Gi # You can change the size of the elasticsearch volume that default to 1Gi with this value
|
||||
NEXTCLOUD_TRUSTED_CACERTS_STORAGE_SIZE: 1Gi # You can change the size of the nextcloud-trusted-cacerts volume that default to 1Gi with this value
|
||||
COLLABORA_FONTS_STORAGE_SIZE: 1Gi # You can change the size of the collabora-fonts volume that default to 1Gi with this value
|
||||
ONLYOFFICE_STORAGE_SIZE: 1Gi # You can change the size of the onlyoffice volume that default to 1Gi with this value
|
||||
CLAMAV_STORAGE_SIZE: 1Gi # You can change the size of the clamav volume that default to 1Gi with this value
|
||||
DATABASE_DUMP_STORAGE_SIZE: 1Gi # You can change the size of the database-dump volume that default to 1Gi with this value
|
||||
NEXTCLOUD_DATA_STORAGE_SIZE: 1Gi # You can change the size of the nextcloud-data volume that default to 1Gi with this value
|
||||
NEXTCLOUD_STORAGE_SIZE: 1Gi # You can change the size of the nextcloud volume that default to 1Gi with this value
|
||||
REDIS_STORAGE_SIZE: 1Gi # You can change the size of the redis volume that default to 1Gi with this value
|
||||
DATABASE_STORAGE_SIZE: 1Gi # You can change the size of the database volume that default to 1Gi with this value
|
||||
APACHE_STORAGE_SIZE: 1Gi # You can change the size of the apache volume that default to 1Gi with this value
|
||||
CLAMAV_STORAGE_SIZE: 1Gi # You can change the size of the clamav volume that default to 1Gi with this value
|
||||
COLLABORA_FONTS_STORAGE_SIZE: 1Gi # You can change the size of the collabora-fonts volume that default to 1Gi with this value
|
||||
DATABASE_STORAGE_SIZE: 1Gi # You can change the size of the database volume that default to 1Gi with this value
|
||||
DATABASE_DUMP_STORAGE_SIZE: 1Gi # You can change the size of the database-dump volume that default to 1Gi with this value
|
||||
ELASTICSEARCH_STORAGE_SIZE: 1Gi # You can change the size of the elasticsearch volume that default to 1Gi with this value
|
||||
NEXTCLOUD_STORAGE_SIZE: 1Gi # You can change the size of the nextcloud volume that default to 1Gi with this value
|
||||
NEXTCLOUD_DATA_STORAGE_SIZE: 1Gi # You can change the size of the nextcloud-data volume that default to 1Gi with this value
|
||||
NEXTCLOUD_TRUSTED_CACERTS_STORAGE_SIZE: 1Gi # You can change the size of the nextcloud-trusted-cacerts volume that default to 1Gi with this value
|
||||
ONLYOFFICE_STORAGE_SIZE: 1Gi # You can change the size of the onlyoffice volume that default to 1Gi with this value
|
||||
REDIS_STORAGE_SIZE: 1Gi # You can change the size of the redis volume that default to 1Gi with this value
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user