Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4be284c210 | ||
|
|
8a320392f4 | ||
|
|
e3263eabcd | ||
|
|
0246b885ad | ||
|
|
3ef9fa1210 | ||
|
|
7d07b88395 | ||
|
|
08f4da8343 | ||
|
|
a2ce89e46a | ||
|
|
6ceec09f0d | ||
|
|
47dc66ac79 | ||
|
|
4afed447e8 | ||
|
|
a999ddd582 | ||
|
|
38005bc214 | ||
|
|
bb221d3a07 | ||
|
|
ef7d44d4d0 | ||
|
|
16984d5906 | ||
|
|
49c4451d7d | ||
|
|
68a712c9d6 | ||
|
|
220618bc4f | ||
|
|
1c6b9eab4d | ||
|
|
07a78d3ad2 | ||
|
|
dc7ca5f2cc | ||
|
|
6351444ffc | ||
|
|
843bb0d72b | ||
|
|
b2c79dff79 | ||
|
|
e6f24c67dd | ||
|
|
459ba34789 | ||
|
|
1d80b5d0ef | ||
|
|
2519c6f961 | ||
|
|
60315f2849 | ||
|
|
280ca04a44 | ||
|
|
74f5ae0fb3 | ||
|
|
ef3944a4a6 | ||
|
|
c300da8b25 | ||
|
|
957b5d8a06 | ||
|
|
74b77919e7 | ||
|
|
be44c96847 | ||
|
|
c7c40c83a9 | ||
|
|
1f2228a991 | ||
|
|
96f5d04839 | ||
|
|
ebb88e255b | ||
|
|
2b4d85d1da | ||
|
|
dc999354ca | ||
|
|
cdc7c587a8 | ||
|
|
fe08144bf5 | ||
|
|
054a7b3926 | ||
|
|
765ceddcb9 | ||
|
|
0700c0b613 | ||
|
|
68b2c59c1f | ||
|
|
a5871d6390 | ||
|
|
f0c7b3725e | ||
|
|
ea9d7c72aa | ||
|
|
cff59eb342 | ||
|
|
a5ef302fa4 | ||
|
|
1515e9e1f3 | ||
|
|
924668c1fd | ||
|
|
971d025910 | ||
|
|
7e29add93e | ||
|
|
91cd6bb716 | ||
|
|
b46ae1db0f | ||
|
|
6e3033086f | ||
|
|
b44546d755 | ||
|
|
b6ace61817 | ||
|
|
e140ed9514 | ||
|
|
516da45523 | ||
|
|
f1462d92b7 | ||
|
|
b90a00c28c | ||
|
|
5bff5b7d12 | ||
|
|
4a2fc9e0d3 | ||
|
|
37f5929511 | ||
|
|
7fca82784e | ||
|
|
dfb057bfbf | ||
|
|
ff83788463 | ||
|
|
c223983f28 | ||
|
|
71bf5e5ab8 | ||
|
|
40d85b3873 | ||
|
|
f5b2b29376 | ||
|
|
8c10378fa5 | ||
|
|
c416945abb | ||
|
|
0279ecae84 | ||
|
|
0d29cfffac | ||
|
|
0d56b5bf03 | ||
|
|
77a0c55176 | ||
|
|
a527c3f507 | ||
|
|
3f4b2eb9eb | ||
|
|
883632adb9 | ||
|
|
48964a4b25 | ||
|
|
5cdfd79fe5 | ||
|
|
80f5a499b7 | ||
|
|
4fd5dadb0f | ||
|
|
ba7deb6725 | ||
|
|
3341323db3 | ||
|
|
e1ec21332c | ||
|
|
d52ca0dd0c | ||
|
|
bc23dde9fe | ||
|
|
bb0f2913b5 | ||
|
|
9e068b1bbc | ||
|
|
6cf118a3b1 | ||
|
|
963092a1cf | ||
|
|
92f48895e2 | ||
|
|
72a827ab6d | ||
|
|
ae86a49fd6 | ||
|
|
68d0bc9bc5 | ||
|
|
cf98bc8d95 | ||
|
|
85fad15233 | ||
|
|
2cc6edda2e | ||
|
|
fa8d52a1a9 | ||
|
|
17cb3e5acf | ||
|
|
beda918d52 | ||
|
|
a7607ab939 | ||
|
|
ec55c189c4 | ||
|
|
809e15214b | ||
|
|
3e1fae8e5d | ||
|
|
8da2c9ad92 | ||
|
|
7025c87394 | ||
|
|
977283136a | ||
|
|
f376065a54 | ||
|
|
30fbdf3c9b | ||
|
|
d4de7df987 | ||
|
|
0c183165fc | ||
|
|
12574f3f64 | ||
|
|
50f3e98002 | ||
|
|
0789c3ac27 | ||
|
|
3f7ec1b4d5 | ||
|
|
f3a9d39226 | ||
|
|
1e8ffe10c1 | ||
|
|
2374995356 | ||
|
|
d132de8de5 | ||
|
|
8ca94f5cf8 | ||
|
|
46904e1a6b | ||
|
|
52bcbcb550 | ||
|
|
9c22750a26 | ||
|
|
61a4ee8f52 | ||
|
|
fbe4635d6c | ||
|
|
641fd1c65d | ||
|
|
167067a90c | ||
|
|
822d41be97 | ||
|
|
5e26d5c6fc | ||
|
|
62a57a3445 | ||
|
|
e94c2b63d2 | ||
|
|
c1ecbdeb1a | ||
|
|
62b6d00fcc | ||
|
|
f9e4575e07 | ||
|
|
207aee279b | ||
|
|
6615362c61 | ||
|
|
0be3a775d7 | ||
|
|
8bdb75f776 | ||
|
|
4e45e1f43d | ||
|
|
e967cdca54 | ||
|
|
c4347b747b | ||
|
|
cf7cb474e4 | ||
|
|
d42e307187 | ||
|
|
e12b2b9fa4 | ||
|
|
f58c5ae67f | ||
|
|
4d07f96e0b | ||
|
|
6a5a53b142 | ||
|
|
7f346c70d5 | ||
|
|
08c706bcfb | ||
|
|
7be1b74cf9 | ||
|
|
192822b062 | ||
|
|
c738f3fbb5 | ||
|
|
00fe7d2943 | ||
|
|
92ac9bc692 | ||
|
|
dcf14d58b8 | ||
|
|
f6f1497847 | ||
|
|
b06c2f2d5b | ||
|
|
6f57e8fb60 | ||
|
|
30311afda1 | ||
|
|
fea9dc1570 | ||
|
|
0e242e4b90 | ||
|
|
bb8920b68c | ||
|
|
e3911fc56c | ||
|
|
6bb1499842 | ||
|
|
ef838c65c7 | ||
|
|
eea2c21153 | ||
|
|
d984bba156 | ||
|
|
db2022e3cf | ||
|
|
abafdd5c5d | ||
|
|
af5c4bae3a | ||
|
|
7929039bd4 | ||
|
|
a78e66a69a | ||
|
|
77cedac33f | ||
|
|
30ecb09e48 | ||
|
|
da440fdbda | ||
|
|
7dc7db4fe4 | ||
|
|
d7995abfa7 | ||
|
|
72aa309dda | ||
|
|
d198f6f410 | ||
|
|
d6dcad85c5 | ||
|
|
573169b6c2 | ||
|
|
cb09bf0137 | ||
|
|
d80d0baaa5 | ||
|
|
28b6d77279 | ||
|
|
78b9bd06c4 | ||
|
|
907117573b | ||
|
|
17b4f21317 | ||
|
|
c256ad2bec | ||
|
|
3d4fa22127 | ||
|
|
0aaf395f1b | ||
|
|
5599e187e7 | ||
|
|
da9bbdb58f | ||
|
|
75a4bc17b4 | ||
|
|
dcac2cd2ba | ||
|
|
e7a0fcabc7 | ||
|
|
bd0ab0013f | ||
|
|
54c89b4488 | ||
|
|
443dd8ab93 | ||
|
|
d3c1253bb9 | ||
|
|
3b22d451d8 | ||
|
|
c62039d0fe | ||
|
|
a4bfcb5921 | ||
|
|
d9bb6e4db9 | ||
|
|
ea8e230d76 | ||
|
|
c200028bc0 | ||
|
|
e985752eae | ||
|
|
82029e6f81 | ||
|
|
e5ca34021a | ||
|
|
737ebc6321 | ||
|
|
f8a1ff2e92 | ||
|
|
933ddf4221 | ||
|
|
f8a94d186a | ||
|
|
408d8dc635 | ||
|
|
97c2325b95 | ||
|
|
ca215608d6 | ||
|
|
ab97df91ef | ||
|
|
ee4425a4c0 | ||
|
|
15ba187aa3 | ||
|
|
7b14ba476f | ||
|
|
4af5047907 | ||
|
|
f498144f5e | ||
|
|
6c6208aa7e | ||
|
|
8cf865de84 | ||
|
|
22bf9de635 | ||
|
|
461b6ba700 | ||
|
|
69567af795 | ||
|
|
f7f20a8ff8 | ||
|
|
717d5e3da5 | ||
|
|
4ad20c7687 | ||
|
|
e14c8b18c8 | ||
|
|
2cfc8ee74c | ||
|
|
73047a6114 | ||
|
|
bb41dec4f6 | ||
|
|
c1193fcda0 | ||
|
|
b1f1214534 | ||
|
|
7b050209a8 | ||
|
|
74c26ba715 | ||
|
|
fb2d0fb0f9 | ||
|
|
d307231325 | ||
|
|
5ca4abb05c | ||
|
|
86c3bfe43f | ||
|
|
e1f344b79f | ||
|
|
5214a155ba | ||
|
|
2b06e251dc | ||
|
|
b789a73e14 | ||
|
|
4d25b5acd2 | ||
|
|
dac90a3298 | ||
|
|
6f38d5f199 | ||
|
|
a795d948d9 | ||
|
|
4529897377 | ||
|
|
4784863c70 | ||
|
|
d884da1207 | ||
|
|
f334ae8925 | ||
|
|
bd521a56ca | ||
|
|
247b50d27f | ||
|
|
810b2d2193 | ||
|
|
10a5141b4c | ||
|
|
5514cd4118 | ||
|
|
7883618dbc | ||
|
|
e80a8b36ac | ||
|
|
60287821a6 | ||
|
|
18481bee41 | ||
|
|
48c11963f8 | ||
|
|
6619c4ef47 | ||
|
|
3df4d69b98 | ||
|
|
4956838f8f | ||
|
|
ae214249a3 | ||
|
|
bc30990044 | ||
|
|
69a2c7176e | ||
|
|
b910e72d40 | ||
|
|
8af467d970 | ||
|
|
0e1df36451 | ||
|
|
9c0faf4e70 | ||
|
|
b1e7c758a7 | ||
|
|
16a92ecdb2 | ||
|
|
47ff6e0f9e | ||
|
|
ecca22e07a | ||
|
|
97002dd7aa | ||
|
|
7c5b5d66ff | ||
|
|
c757aca483 | ||
|
|
8a71408485 | ||
|
|
bf62773448 | ||
|
|
f1124be5eb | ||
|
|
6d0ef3dff5 | ||
|
|
fa8f90d8c3 | ||
|
|
edc0d4df00 | ||
|
|
b958a809c5 | ||
|
|
0a3cd3f04b | ||
|
|
170e21e0c8 | ||
|
|
4a3dcc890f | ||
|
|
091a714713 | ||
|
|
fb4b0f9cc0 | ||
|
|
0f96683e24 | ||
|
|
19ae780bb6 | ||
|
|
9012dabb3e | ||
|
|
fcc7c4cd2a | ||
|
|
1ece8598da | ||
|
|
bd2ac5a2ef | ||
|
|
45d9564e95 | ||
|
|
3d600876a1 | ||
|
|
4f654e2f53 | ||
|
|
38adf360ef | ||
|
|
def409af3f | ||
|
|
9cc764fc12 | ||
|
|
d3d578ae26 | ||
|
|
a9b3660403 | ||
|
|
1c0b129391 | ||
|
|
7cc8a4055b | ||
|
|
dfa86d81fe | ||
|
|
eec038c519 | ||
|
|
ec10e794be | ||
|
|
75d096a5ee | ||
|
|
cab99c5f26 | ||
|
|
aea6325487 | ||
|
|
88084a581c | ||
|
|
5c5d77d125 | ||
|
|
0f4bbf7aa4 | ||
|
|
6bbede0a65 | ||
|
|
6f325a59db | ||
|
|
68b6b3fbcd | ||
|
|
2ec47dff76 | ||
|
|
c00dd838c6 | ||
|
|
71a6e1c79b | ||
|
|
794822c542 | ||
|
|
2e1918b793 | ||
|
|
c9c28030c6 | ||
|
|
046044645d | ||
|
|
a534e28c31 | ||
|
|
5d0b6bb4c3 | ||
|
|
a3c08af485 | ||
|
|
2018b1d0f3 | ||
|
|
9939880334 | ||
|
|
537746a6cb | ||
|
|
8e4394b44b | ||
|
|
520a62c289 | ||
|
|
85cd595267 | ||
|
|
84c6632093 | ||
|
|
c4ec620e04 | ||
|
|
9339fa9b79 | ||
|
|
81a05cba11 | ||
|
|
a472002822 | ||
|
|
fa927dd63c | ||
|
|
a9d952ef37 | ||
|
|
b00207c6c0 | ||
|
|
bedb598793 | ||
|
|
6d8e1ce97f | ||
|
|
22fba56a6a | ||
|
|
07361d978e | ||
|
|
c2a932cbcd | ||
|
|
816abc1044 | ||
|
|
a6ef57cb83 | ||
|
|
19649f8028 | ||
|
|
bc5212dc9b | ||
|
|
b4e0d5e83d | ||
|
|
997378062c | ||
|
|
c0906d1ce1 | ||
|
|
4edf3d63f3 | ||
|
|
af81e6b0ab | ||
|
|
7ef19365a9 | ||
|
|
04070fe852 | ||
|
|
fa47916247 | ||
|
|
d8e0311ca7 | ||
|
|
8267b80214 | ||
|
|
2bc8ed274b | ||
|
|
e628a7137a | ||
|
|
ce7aadca21 | ||
|
|
f69c8ced98 | ||
|
|
92ffd3ce73 | ||
|
|
28cb6d17ed | ||
|
|
4d3b881959 | ||
|
|
1166bede86 | ||
|
|
ac451e6519 | ||
|
|
a5a564327a | ||
|
|
10360bf14a | ||
|
|
ee978ab20d | ||
|
|
30aa8ca1bf | ||
|
|
539bd67014 | ||
|
|
b4440f585b | ||
|
|
d91e8d0575 | ||
|
|
37ee6f7988 | ||
|
|
31c80cec44 | ||
|
|
b34a52faf4 | ||
|
|
5b2e634acf | ||
|
|
acd2667ba5 | ||
|
|
a364eccb10 | ||
|
|
2052ac2810 | ||
|
|
fd7e3074bc | ||
|
|
adc624ce0b | ||
|
|
3dc5184c62 | ||
|
|
0deb6d5788 | ||
|
|
5042a8e4b8 | ||
|
|
98b4077c07 | ||
|
|
b9e06dbc54 | ||
|
|
d58005764c | ||
|
|
2fa50318d1 | ||
|
|
91689206db | ||
|
|
c3e9c66d77 | ||
|
|
9726ec12a6 | ||
|
|
c5e047ae5b | ||
|
|
78e493ff49 | ||
|
|
3e59d1ea92 | ||
|
|
163fb2348e | ||
|
|
dcd450b076 | ||
|
|
4cef4af1e9 | ||
|
|
894bfd951b | ||
|
|
1f42836ba4 | ||
|
|
59e42aa77a | ||
|
|
28cf4d06ab | ||
|
|
703230968b | ||
|
|
ac7bb1f70a | ||
|
|
5b7578aefb | ||
|
|
248925e652 | ||
|
|
1859648bae | ||
|
|
554b691f3e | ||
|
|
93432fc48c | ||
|
|
c3feb330b6 | ||
|
|
44f5d56d96 | ||
|
|
b8b3ecdc63 | ||
|
|
6881bffcde | ||
|
|
66f4dea749 | ||
|
|
c80486d31e | ||
|
|
3b3c28847f | ||
|
|
a54458b70a | ||
|
|
5ea535acd2 | ||
|
|
527da92e4a | ||
|
|
215bc793bf | ||
|
|
f7a3ed8f28 | ||
|
|
f2853f428f | ||
|
|
51e944c98f | ||
|
|
f9a067d2f4 | ||
|
|
055d6a826b | ||
|
|
e90ef74523 | ||
|
|
001bf396df | ||
|
|
24daf39f6d | ||
|
|
efc92da96e | ||
|
|
7adf5800b0 | ||
|
|
f170b1395a | ||
|
|
7c0997f6f3 | ||
|
|
789baaf316 | ||
|
|
540b228247 | ||
|
|
f584e872ce | ||
|
|
5308132ff8 | ||
|
|
d5889d1c22 | ||
|
|
05fcc6dbd1 | ||
|
|
8002db31d2 | ||
|
|
a2bed82c91 | ||
|
|
3765ab5565 | ||
|
|
6f2918b34c | ||
|
|
49b3f28b36 | ||
|
|
d7667dbcde | ||
|
|
29b67cb2a3 | ||
|
|
b86fd1a6f2 | ||
|
|
4a69f141e9 | ||
|
|
596cfe44b3 | ||
|
|
bf5f4a86d9 | ||
|
|
0a5f3f9e7d | ||
|
|
37b7d5b846 | ||
|
|
87cb0d3160 | ||
|
|
5f55804c43 | ||
|
|
8d7d9f166c | ||
|
|
6718686e58 | ||
|
|
3711fd938d | ||
|
|
8943c9db34 | ||
|
|
2e72fbe681 | ||
|
|
5e179cdb0d | ||
|
|
d5797eb860 | ||
|
|
21d09296ce | ||
|
|
a579863acb | ||
|
|
abba5d1823 | ||
|
|
295b77e091 | ||
|
|
979263685a | ||
|
|
91af2ad85a | ||
|
|
d9b7929b92 | ||
|
|
635df32b93 | ||
|
|
a4e9b30617 | ||
|
|
2db7b00402 | ||
|
|
2feaa57f79 | ||
|
|
27ba254cef | ||
|
|
871dcf640b | ||
|
|
a04001b34e | ||
|
|
01b57f8a86 | ||
|
|
533e166249 | ||
|
|
a09b7dfb1b | ||
|
|
fd31196d75 | ||
|
|
9df8c8e479 | ||
|
|
65e7b9c6a5 | ||
|
|
139b1f4e15 | ||
|
|
1c47280809 | ||
|
|
16cfdb7feb | ||
|
|
877b1b2928 | ||
|
|
3e3c0a8194 | ||
|
|
1fcb29d655 | ||
|
|
53ffd73c33 | ||
|
|
e1a10ab5c9 | ||
|
|
28bd51c5af | ||
|
|
28a3974f1e | ||
|
|
da7c18b93f | ||
|
|
2d1b767958 | ||
|
|
d7ce33dbde | ||
|
|
5fa65d9bd2 | ||
|
|
f7c6d220d9 | ||
|
|
7d94261be7 | ||
|
|
73d45aa9cf | ||
|
|
3660c57e00 | ||
|
|
d37785e8cf | ||
|
|
6846e74d8f | ||
|
|
7a2d898765 | ||
|
|
8d93d0411c | ||
|
|
62e701cedc | ||
|
|
9bed10a4aa | ||
|
|
e349098adb | ||
|
|
1c908406a9 | ||
|
|
9f3bea3a83 | ||
|
|
dbeb6cfb7d | ||
|
|
07ffa2b803 | ||
|
|
e40c2ca4db | ||
|
|
b64abd7da3 | ||
|
|
0ee8ca78a4 | ||
|
|
10921cf101 | ||
|
|
fbe5fba52c | ||
|
|
e70de8f8f5 | ||
|
|
ea0b500fd1 | ||
|
|
772b9e9598 | ||
|
|
d42225574c | ||
|
|
698c434b6b | ||
|
|
dfe9e23210 | ||
|
|
5bc6fb051f | ||
|
|
4067adb9c0 | ||
|
|
08069b7102 | ||
|
|
6309048fe5 | ||
|
|
69fd1ebb71 | ||
|
|
07ec14c67c | ||
|
|
1af1f20a4e | ||
|
|
38a5d25a8d | ||
|
|
77354187f4 | ||
|
|
7aa2efb3ae | ||
|
|
168d893ff1 | ||
|
|
e80bac5c27 | ||
|
|
3cabdeae07 | ||
|
|
7f7e3df719 | ||
|
|
4dd1be4653 | ||
|
|
7fe37bda48 | ||
|
|
0f4e8d27f7 | ||
|
|
0bdfdecac3 | ||
|
|
be8ad09250 | ||
|
|
98e41d5334 | ||
|
|
ad84d7315d | ||
|
|
e34488bad4 | ||
|
|
3f1daf23b8 | ||
|
|
472304b984 | ||
|
|
c31e35ca76 | ||
|
|
8c4ce762f2 | ||
|
|
3b00f6d238 | ||
|
|
d6a4925a1c | ||
|
|
b00dbf0692 | ||
|
|
df7af2918e | ||
|
|
be2c0502d0 | ||
|
|
1ea93ef735 | ||
|
|
3d338ef897 | ||
|
|
c8bb1c96d1 | ||
|
|
379ef37236 | ||
|
|
2335006a75 | ||
|
|
7bd036eb4a | ||
|
|
1b6f39956e | ||
|
|
7c2d0c8f2d | ||
|
|
abaa74a9aa | ||
|
|
90c878fadc | ||
|
|
55272980be | ||
|
|
899f803212 | ||
|
|
f7752dee94 | ||
|
|
1ca8846417 | ||
|
|
bf938bbf57 | ||
|
|
fae0d2814d | ||
|
|
db13614954 | ||
|
|
a7a73a09a8 | ||
|
|
59e70d58b2 | ||
|
|
9643bfbb53 | ||
|
|
0ef17ae38e | ||
|
|
17239ccb66 | ||
|
|
562a4e3dc6 | ||
|
|
066415879f | ||
|
|
8df7a3f342 | ||
|
|
e5f18a98f8 | ||
|
|
0b06cea437 | ||
|
|
10414241ac | ||
|
|
769fb74b8d | ||
|
|
650d4f52ea | ||
|
|
07ed513f3e | ||
|
|
02e9dc33b1 | ||
|
|
a4a13d95ca | ||
|
|
084109189b | ||
|
|
5c3bef0dec | ||
|
|
04eeba0d0a | ||
|
|
5b889ff557 | ||
|
|
ff7b2594fd | ||
|
|
0d2484b527 | ||
|
|
f697d077b8 | ||
|
|
93938b1031 | ||
|
|
d5f8f71676 | ||
|
|
4784e0f214 | ||
|
|
3e0a3272d0 | ||
|
|
16eaba9338 | ||
|
|
432bd66c1f | ||
|
|
118ddc0624 | ||
|
|
008be0d034 | ||
|
|
fe12837226 | ||
|
|
5a55275c10 | ||
|
|
da0b27caf6 | ||
|
|
a5355987b9 | ||
|
|
207292fc49 | ||
|
|
c18381ed31 | ||
|
|
e6eb7349b2 | ||
|
|
f341d1757b | ||
|
|
6b0c37f47e | ||
|
|
4026e3d070 | ||
|
|
fcb13faa98 | ||
|
|
5a6d0facd9 | ||
|
|
029e3503ef | ||
|
|
58a0f75210 | ||
|
|
8dd2041640 | ||
|
|
af16a31bd3 | ||
|
|
a5194219ac | ||
|
|
453ca9f667 | ||
|
|
daf47a4d1a | ||
|
|
d1013ceeb5 | ||
|
|
a5eda56ede | ||
|
|
023c14b4d3 | ||
|
|
f269161bd1 | ||
|
|
8dff3f14ed | ||
|
|
3641c168a0 | ||
|
|
5ea0851477 | ||
|
|
341853d55c | ||
|
|
6c8da225fd | ||
|
|
745a63530d | ||
|
|
2cf5714676 | ||
|
|
734b63d95f | ||
|
|
fc28653b1a | ||
|
|
0d5c4b5841 | ||
|
|
b743f98bc1 | ||
|
|
e9b148afce | ||
|
|
3fc17b2ffd | ||
|
|
674e747e55 | ||
|
|
2dfd6595a7 | ||
|
|
8f89dfee44 | ||
|
|
e5dcc5ce70 | ||
|
|
297491eba4 | ||
|
|
1bdb84b9e8 | ||
|
|
ef15035d74 | ||
|
|
0eebbbc197 | ||
|
|
7a29acb0be | ||
|
|
5af221dac2 | ||
|
|
2615456f07 | ||
|
|
7857355802 | ||
|
|
d741e4c6f5 | ||
|
|
5f0ff5e2f5 | ||
|
|
d883de37a1 | ||
|
|
6773dff281 | ||
|
|
12c6fc17df | ||
|
|
079a6bbe80 | ||
|
|
bbdbc6c656 | ||
|
|
7967e2bae6 | ||
|
|
34fefd23a0 | ||
|
|
5109ca6da7 | ||
|
|
b03ace0740 | ||
|
|
59c7034172 | ||
|
|
57e630081c | ||
|
|
016f94f8cc | ||
|
|
27d1c1ddf1 | ||
|
|
0310cbafce | ||
|
|
90470981c8 | ||
|
|
221c43cda2 | ||
|
|
af6102eadb | ||
|
|
fe27e4292c | ||
|
|
bf938bd39f | ||
|
|
23cb9b8815 | ||
|
|
a0e6e02924 | ||
|
|
b266e05226 | ||
|
|
8d47e79491 | ||
|
|
568d8f618b | ||
|
|
94e2d8370c | ||
|
|
8b2bf0c182 | ||
|
|
deb45ce5dc | ||
|
|
35021851b4 | ||
|
|
fd762e6a68 | ||
|
|
4af4a41b7e | ||
|
|
f922e36f32 | ||
|
|
89accf5ab3 | ||
|
|
07b9802637 | ||
|
|
7ee56c3f09 | ||
|
|
619e006e10 | ||
|
|
408497b23a | ||
|
|
e19544ffd5 | ||
|
|
e5709c0ca3 | ||
|
|
e77cbd4299 | ||
|
|
33ecf705cb | ||
|
|
48ca63327e | ||
|
|
1a209fde97 | ||
|
|
b971d81e08 | ||
|
|
422ce7d46c | ||
|
|
48aaa1ef6a | ||
|
|
8b9c37e240 | ||
|
|
050b7004d8 | ||
|
|
3d60cb6a19 | ||
|
|
be93df4b19 | ||
|
|
b1f7fee413 | ||
|
|
5393d02499 | ||
|
|
5d8c3e32b6 | ||
|
|
d9d84a272c | ||
|
|
49f6fe399a | ||
|
|
cd315efe5b | ||
|
|
3115a40be1 | ||
|
|
71e2e5d8b7 | ||
|
|
25298799c8 | ||
|
|
cfef3bf1f9 | ||
|
|
2f9d3dab16 | ||
|
|
a15698910d | ||
|
|
0b8d2f2331 | ||
|
|
f779b9090c | ||
|
|
619f1cff73 | ||
|
|
2cb0be14d9 | ||
|
|
da3469cacb | ||
|
|
a078865989 | ||
|
|
52a59262e2 | ||
|
|
95ae43f8a1 | ||
|
|
9cb38fca62 | ||
|
|
7c31146e6c | ||
|
|
1bfccba6df | ||
|
|
e5df01012b | ||
|
|
e78f5aef66 | ||
|
|
cec1eff81d | ||
|
|
e68fe10d18 | ||
|
|
6a96f61422 | ||
|
|
55ef4f21d3 | ||
|
|
0e8c771d4a | ||
|
|
faafe98d60 | ||
|
|
f4290605b9 | ||
|
|
6ccaf182fc | ||
|
|
7851d7bcd6 | ||
|
|
d163d13fe6 | ||
|
|
1043a94d6a | ||
|
|
1b1611efab | ||
|
|
65ea40a998 | ||
|
|
1f5c2ff52e | ||
|
|
f690912f71 | ||
|
|
1f69c67ba0 | ||
|
|
378424d273 | ||
|
|
ebc3196d86 | ||
|
|
1e11bec6b1 | ||
|
|
10adc55f02 | ||
|
|
1ba21cb4ae | ||
|
|
02618af131 | ||
|
|
471a835135 | ||
|
|
d17b564c9d | ||
|
|
bbc80b24be | ||
|
|
5eec1ed40f | ||
|
|
cf4b67c8e7 | ||
|
|
e12576a01a | ||
|
|
b12ac2b233 | ||
|
|
df5e820496 | ||
|
|
52e0602c48 | ||
|
|
7c10dce519 | ||
|
|
053e21aa2f | ||
|
|
ac67445f47 | ||
|
|
0c40d6ccc7 | ||
|
|
01c20b7dc2 | ||
|
|
a8b4c7ff48 | ||
|
|
85f770353f | ||
|
|
927cfe0ca4 | ||
|
|
bdccc7d82c | ||
|
|
7e7d724854 | ||
|
|
a6be409eb6 | ||
|
|
52fb92411f | ||
|
|
79024c9f60 | ||
|
|
de8033affb | ||
|
|
f0c61d4779 | ||
|
|
1dff54e70b | ||
|
|
19d8145043 | ||
|
|
b442d0e3d3 | ||
|
|
9f7afe6b98 | ||
|
|
eb67477449 | ||
|
|
4f8e93b76b | ||
|
|
2aec5a7e96 | ||
|
|
1298a0dcaf | ||
|
|
225089bfbd | ||
|
|
01c2d576e1 | ||
|
|
395d4607d2 | ||
|
|
105bbac4ef | ||
|
|
519d9f1904 | ||
|
|
9f5f54063d | ||
|
|
8bae2213c3 | ||
|
|
98a2862ddf | ||
|
|
a74495111b | ||
|
|
1a1a2b4a3a | ||
|
|
e44d3ed58c | ||
|
|
b2e07ae91d | ||
|
|
79d4397c66 | ||
|
|
9c60b1f1fc | ||
|
|
8f45091819 | ||
|
|
90bc4f91e7 | ||
|
|
b547bb877c | ||
|
|
64ed06aaf8 | ||
|
|
774433b508 | ||
|
|
25d7b3f1ad | ||
|
|
750458c1b8 | ||
|
|
c985b43237 | ||
|
|
bf35024b28 | ||
|
|
18c5a6b667 | ||
|
|
7443039354 | ||
|
|
65b0f97b5c | ||
|
|
b2a7afce17 | ||
|
|
b436e6eda7 | ||
|
|
df294dd137 | ||
|
|
3847b0d61e | ||
|
|
81b333235d | ||
|
|
8215766d39 | ||
|
|
12565e35f3 | ||
|
|
67ee42083b | ||
|
|
796ad01b9e | ||
|
|
0ec4274285 | ||
|
|
a9a38505a0 | ||
|
|
eee3fa41b5 | ||
|
|
ec7438ddfe | ||
|
|
683e2dab16 | ||
|
|
5485bb3f7d | ||
|
|
1f78f292a0 | ||
|
|
c4ed8629b2 | ||
|
|
1561a83155 | ||
|
|
ec217851e2 | ||
|
|
f708b9060d | ||
|
|
d22b2074af | ||
|
|
d2ee7ddf47 | ||
|
|
b617b39870 | ||
|
|
934ac113fd | ||
|
|
b009a78180 | ||
|
|
84c9c787ab | ||
|
|
6a8c2c6127 | ||
|
|
bed1b4201e | ||
|
|
5d9bbb47f0 | ||
|
|
fadbacec91 | ||
|
|
226faa5366 | ||
|
|
d59dfff7dd | ||
|
|
456998e63b | ||
|
|
9eab510975 | ||
|
|
cd6ef5917a | ||
|
|
da02278c9c | ||
|
|
6c4f8e9252 | ||
|
|
9ddc4fcbe6 | ||
|
|
b82f4b18ff | ||
|
|
66623dacea | ||
|
|
3569754088 | ||
|
|
1ab7e8de2f | ||
|
|
339a9db1f6 | ||
|
|
74fed54f3d | ||
|
|
cf5896a640 | ||
|
|
6a010781a5 | ||
|
|
e2ffeab158 | ||
|
|
849bd680b4 | ||
|
|
8ada212d8f | ||
|
|
4d33340413 | ||
|
|
7a0acbae7b | ||
|
|
6c3ce63c23 | ||
|
|
06cec5866e | ||
|
|
03d1b04a1d | ||
|
|
cee2d0f075 | ||
|
|
906a9347be | ||
|
|
65fb18cb1c | ||
|
|
0d66be0495 | ||
|
|
dd414440d8 | ||
|
|
85e3630f26 | ||
|
|
1648f59018 | ||
|
|
35167a5d1f | ||
|
|
5f58cf6787 | ||
|
|
35cbb4584b | ||
|
|
8921f435ae | ||
|
|
dafc5d6239 | ||
|
|
5033dae87b | ||
|
|
55cb64dfd5 | ||
|
|
397457cbab | ||
|
|
b487a902ba | ||
|
|
b281bef3df | ||
|
|
e7d4d60362 | ||
|
|
9576ce9600 | ||
|
|
e592ded31a | ||
|
|
2c0225b57d | ||
|
|
a9034507ae | ||
|
|
25458ffe3b | ||
|
|
3e38ea66c0 | ||
|
|
887aa3f071 | ||
|
|
0b44e47fc6 | ||
|
|
02dc4addd8 | ||
|
|
c030db86a9 | ||
|
|
6e31a30715 | ||
|
|
5468dceaa7 | ||
|
|
7081bfb9c1 | ||
|
|
a1af35fd8c | ||
|
|
089c3fdfb7 | ||
|
|
b5175252cf | ||
|
|
db2a64e153 | ||
|
|
94a57de8ba | ||
|
|
c6de0197a5 | ||
|
|
c89853d620 | ||
|
|
45d1c32902 | ||
|
|
a304124ee5 | ||
|
|
7204e881c5 | ||
|
|
65fc2deaee | ||
|
|
32e7e6e20e | ||
|
|
46ef155acf | ||
|
|
7d39696084 | ||
|
|
51dcc5e474 | ||
|
|
487abdc4e6 | ||
|
|
fd33ad6cdb | ||
|
|
163b475163 | ||
|
|
613f6cae9d | ||
|
|
5532aae308 | ||
|
|
6b0fffd01a | ||
|
|
d20843f171 | ||
|
|
3e2932bd60 | ||
|
|
212d7c2b26 | ||
|
|
ced054fc7e | ||
|
|
c91fc2d60b | ||
|
|
9ee3bb5271 | ||
|
|
98f77707b0 | ||
|
|
c1a71af69a | ||
|
|
4757a67bbd | ||
|
|
f5388cfb49 | ||
|
|
2deb507552 | ||
|
|
8117b56a77 | ||
|
|
91b51025ec | ||
|
|
46538106a8 | ||
|
|
52e3e07088 | ||
|
|
9bfafd1c0b | ||
|
|
2bcea6a9c8 | ||
|
|
9216fe1f49 | ||
|
|
3d88f314bb | ||
|
|
b0693e2040 | ||
|
|
b67d09d1d1 | ||
|
|
e9bd448083 | ||
|
|
c9ad155b82 | ||
|
|
22dc3672b5 | ||
|
|
6f8440be32 | ||
|
|
546ead7187 | ||
|
|
ca8c11ffd7 | ||
|
|
2476422bec | ||
|
|
d3e7a42078 | ||
|
|
3e794a50f1 | ||
|
|
92455952ed | ||
|
|
79f28c1dee | ||
|
|
adfa0c9290 | ||
|
|
3f09480fc9 | ||
|
|
2ef40073d2 | ||
|
|
6b007d1a30 | ||
|
|
88bf9117a4 | ||
|
|
7972b84503 | ||
|
|
e4ccb07e14 | ||
|
|
3b7b71853b | ||
|
|
963745bd5a | ||
|
|
20c95de427 | ||
|
|
7c7061fbf7 | ||
|
|
35779c76e5 | ||
|
|
f7413b3060 | ||
|
|
b7e4ffaa8f | ||
|
|
a2a3d062bd | ||
|
|
6e120feee2 | ||
|
|
b21e6bb557 | ||
|
|
72cca72097 | ||
|
|
b13a5a2891 | ||
|
|
fc8267c0f1 | ||
|
|
71ad5e5410 | ||
|
|
4fdfcae901 | ||
|
|
60edd83103 | ||
|
|
afbf297c88 | ||
|
|
d2931aa17d | ||
|
|
466b26cd67 | ||
|
|
124a5ea52a | ||
|
|
3ccc2e395b | ||
|
|
c4726def00 | ||
|
|
f00265a248 | ||
|
|
2522a96747 | ||
|
|
bf7664a492 | ||
|
|
372b67ca2d | ||
|
|
f6a55caa48 | ||
|
|
4775e36f72 | ||
|
|
9c8d739665 | ||
|
|
eb2591af35 | ||
|
|
a20bc37cd8 | ||
|
|
67311af9c0 | ||
|
|
dc85a0b53a | ||
|
|
4860f6702e | ||
|
|
ae8f306f31 | ||
|
|
169d0c4215 | ||
|
|
539286bd2a | ||
|
|
23f48c7925 | ||
|
|
858e3aa61b | ||
|
|
ccd7fd0174 | ||
|
|
cd165019c3 | ||
|
|
2013b69228 | ||
|
|
aca70df681 | ||
|
|
4a6051f9fb | ||
|
|
afdd9ba7c7 | ||
|
|
826a456b00 | ||
|
|
0796cbbae0 | ||
|
|
4c8ead53c0 | ||
|
|
033b2886b7 | ||
|
|
70c7613c89 | ||
|
|
6480448695 | ||
|
|
0e50b6e2e4 | ||
|
|
0fbb10c358 | ||
|
|
b89c87f5ca | ||
|
|
af183492cc | ||
|
|
94bd257229 | ||
|
|
1f4bfa6c93 | ||
|
|
eca03e6a44 | ||
|
|
5f33716038 | ||
|
|
e3ed13ce56 | ||
|
|
00fdcae63e | ||
|
|
3e314c4bce | ||
|
|
063efcb3f4 | ||
|
|
2a13935c6c | ||
|
|
8f94c1a6a9 | ||
|
|
22dee54811 | ||
|
|
61a7a19134 | ||
|
|
7d0bba67fe | ||
|
|
6eb04e91ab | ||
|
|
171de689f6 | ||
|
|
a1e68dc934 | ||
|
|
494d54063f | ||
|
|
018530f679 | ||
|
|
c73293f16b | ||
|
|
c348a88f62 | ||
|
|
8fc82a7b74 | ||
|
|
a0c23a1092 | ||
|
|
99a9247762 | ||
|
|
16183075b7 | ||
|
|
c59b41d3f5 | ||
|
|
32db73808a | ||
|
|
bdb96a80ba | ||
|
|
cd3a22debd | ||
|
|
c87f67e793 | ||
|
|
c8c2cb1cee | ||
|
|
19809e0021 | ||
|
|
1b4125b99e | ||
|
|
3cf65f4cb0 | ||
|
|
5f2bf2a53c | ||
|
|
5f697ef42e | ||
|
|
e879c7578d | ||
|
|
27065fbe1d | ||
|
|
36c64662a5 | ||
|
|
d92b35ea90 | ||
|
|
71000c15f1 | ||
|
|
d3ce961559 | ||
|
|
35cb844733 | ||
|
|
d885f72a03 | ||
|
|
771db07cc9 | ||
|
|
de721af6f8 | ||
|
|
5cec195f09 | ||
|
|
bb32275e20 | ||
|
|
95654eee43 | ||
|
|
66f1a8b905 | ||
|
|
d71493bef8 | ||
|
|
7f06554109 | ||
|
|
02934a9714 | ||
|
|
45d920c278 | ||
|
|
f4485e65d9 | ||
|
|
a554348ebb | ||
|
|
78ecce7dda | ||
|
|
bb8d154a1e | ||
|
|
13339764b2 | ||
|
|
2afcb256d1 | ||
|
|
9b60b1ebf0 | ||
|
|
b8ec47be56 | ||
|
|
f67a6e1857 | ||
|
|
9423988512 | ||
|
|
4df0caebd8 | ||
|
|
947b1656ae | ||
|
|
cd62d7915d | ||
|
|
829e2c63e4 | ||
|
|
f4c02b1af1 | ||
|
|
97cb705e3d | ||
|
|
b3d1b43590 | ||
|
|
2a86d7500d | ||
|
|
2c1a3697bd | ||
|
|
d6269e7941 | ||
|
|
13fefd3bf2 | ||
|
|
c51cf9cbb5 | ||
|
|
39316455dd | ||
|
|
47f869c2ef | ||
|
|
87096a131e | ||
|
|
a8d7cdb11d | ||
|
|
9f1a21a08a | ||
|
|
f68d8ab1a8 | ||
|
|
b58264aaba | ||
|
|
63b497df1c | ||
|
|
f8469174b0 | ||
|
|
3413e11e6f | ||
|
|
f692355653 | ||
|
|
5875bc7284 | ||
|
|
6477ecac9b | ||
|
|
8bf29de4d1 | ||
|
|
43e7e4486c | ||
|
|
2e53d25462 | ||
|
|
f4f0e2807e | ||
|
|
18188f7047 | ||
|
|
225088ecb0 | ||
|
|
1b5ccb86e2 | ||
|
|
e7b485c0e9 | ||
|
|
884f7fd1b5 | ||
|
|
bd09144ae8 | ||
|
|
0986a544be | ||
|
|
6653823fa5 | ||
|
|
83bcaeeebf | ||
|
|
7f217a03f1 | ||
|
|
2df1fd1523 | ||
|
|
bf73c033be | ||
|
|
c28bb5e784 | ||
|
|
26cba7455c | ||
|
|
b439d91d0e | ||
|
|
82de650b79 | ||
|
|
45aedd9b18 | ||
|
|
f247d44230 | ||
|
|
fda4e23f56 | ||
|
|
006d03d73b | ||
|
|
d978697dad | ||
|
|
62684f48ab | ||
|
|
acf8946506 | ||
|
|
56d184abd6 | ||
|
|
35ea64604f | ||
|
|
1c99af96d5 | ||
|
|
0e2d47097f | ||
|
|
0461e0c08c | ||
|
|
5a10741a91 | ||
|
|
948d189305 | ||
|
|
4ea3335b19 | ||
|
|
2af6a89315 | ||
|
|
0bdaa05577 | ||
|
|
e46bce5f85 | ||
|
|
817961dcf4 | ||
|
|
c9252e9813 | ||
|
|
721dc5e924 | ||
|
|
b45e5e2df7 | ||
|
|
92a6cdea42 | ||
|
|
a0e17b5834 | ||
|
|
861d1fca09 | ||
|
|
770054a038 | ||
|
|
180943f4c5 | ||
|
|
fd01d5f787 | ||
|
|
74b52adfdf | ||
|
|
6a0aedd1e5 | ||
|
|
d80b0fba88 | ||
|
|
cf7d0ebd33 | ||
|
|
a7cf9cc25b | ||
|
|
81c7ff173a | ||
|
|
f3013f0ef8 | ||
|
|
a6a6ae6a5e | ||
|
|
6e554926dc | ||
|
|
b619989563 | ||
|
|
f506d48223 | ||
|
|
f869f5dbe3 | ||
|
|
0d93de311e | ||
|
|
dd7dc76c26 | ||
|
|
f38959bd46 | ||
|
|
183975e3cd | ||
|
|
87d2a0e1ef | ||
|
|
d1f4146564 | ||
|
|
6359bbd88d | ||
|
|
b2840b342f | ||
|
|
883a045614 | ||
|
|
08e064c1eb | ||
|
|
ca33b0271c | ||
|
|
ce94faa458 | ||
|
|
c7b8e0659d | ||
|
|
74d775d7d6 | ||
|
|
c18442e45c | ||
|
|
ed8436505a | ||
|
|
af3c127a81 | ||
|
|
14f79d54de | ||
|
|
2d615e67c7 | ||
|
|
e2278a2755 | ||
|
|
f322ac85b7 | ||
|
|
13c977c75f | ||
|
|
e00a526f9c | ||
|
|
a2fa1ef770 | ||
|
|
ba2e808a46 | ||
|
|
0729e6d2c8 | ||
|
|
9cd471a12d | ||
|
|
ec77a3ea36 | ||
|
|
6567ed84ca | ||
|
|
1e80baeaa4 | ||
|
|
5d28e85a0a | ||
|
|
1c31789424 |
@@ -0,0 +1,7 @@
|
||||
liberapay: marcpartensky
|
||||
patreon: marcpartensky
|
||||
github: marcpartensky
|
||||
custom:
|
||||
# - monero:43J2XmRtjDPRLD35UsYGH2AZamFBQz7dt4VdvZXVm3SuadTrvcoXUXBRUNHqukFte23Q5TWXqhbwaLJJgoVQzzbe2AJDANQ
|
||||
- https://paypal.me/marcpartensky
|
||||
- https://buymeacoffee.com/marcpartensky
|
||||
@@ -0,0 +1,27 @@
|
||||
name: Check docker compose files
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- v*
|
||||
jobs:
|
||||
build:
|
||||
env:
|
||||
BIND_MOUNTS: "/srv"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install make and docker-compose
|
||||
run: sudo apt install -y docker-compose make
|
||||
# - name: Check docker-compose files
|
||||
# run: for file in `find services/*`; do docker-compose -f $file config > /dev/null; done
|
||||
- name: Clone validator
|
||||
run: git clone https://github.com/serviceprototypinglab/dcvalidator /opt/validator
|
||||
- name: Merge to docker-compose.yml
|
||||
run: make merge
|
||||
- name: Validate docker-compose.yml
|
||||
# run: docker-compose -f stacks/docker-compose.yml config
|
||||
# run: /opt/validator/validator-cli.py -f stacks/docker-compose.yml
|
||||
run: docker-compose -f stacks/docker-compose.yml ps
|
||||
+31
-3
@@ -1,3 +1,31 @@
|
||||
data/secrets/
|
||||
data/certbot/
|
||||
data/traefik/
|
||||
docker-compose.yml
|
||||
data/openvpn
|
||||
data/secrets
|
||||
data/certbot
|
||||
data/searx
|
||||
data/jenkins
|
||||
data/beef
|
||||
data/tmate/keys
|
||||
data/authelia
|
||||
data/mx-puppet-discord
|
||||
data/matrix
|
||||
data/heimdall
|
||||
data/pihole/etc-pihole
|
||||
data/pxe
|
||||
data/postgres
|
||||
data/wireguard
|
||||
data/vaultwarden
|
||||
data/filebrowser
|
||||
data/focalboard
|
||||
data/openvpn_*
|
||||
data/mailcow
|
||||
data/dockvpn
|
||||
data/hydra
|
||||
data/yt-dlp
|
||||
data/mongo
|
||||
data/gpg
|
||||
data/redis
|
||||
data.tar.gz
|
||||
data.7z
|
||||
data.7z.gpg
|
||||
services/template.yml
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
image: docker:stable
|
||||
|
||||
stages:
|
||||
- deploy
|
||||
|
||||
services:
|
||||
- docker:dind
|
||||
|
||||
before_script:
|
||||
- apk update
|
||||
- apk add py-pip python3-dev libffi-dev openssl-dev gcc libc-dev make
|
||||
- pip install docker-compose
|
||||
|
||||
deploy_app:
|
||||
stage: deploy
|
||||
script:
|
||||
- docker-compose down
|
||||
- docker-compose up -d
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
FROM docker:dood
|
||||
|
||||
# RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
# RUN chmod +x /usr/local/bin/docker-compose
|
||||
COPY docker-compose.yml docker-compose.yml
|
||||
COPY vps.yml vps.yml
|
||||
|
||||
RUN docker stack deploy -c vps.yml vps
|
||||
|
||||
ENTRYPOINT ["docker"]
|
||||
CMD ["service", "ls"]
|
||||
@@ -0,0 +1,28 @@
|
||||
compose:
|
||||
cat ./env/vps.txt | xargs ./bin/docker-setup.sh
|
||||
swarm:
|
||||
cat ./env/vps.txt | STACK=vps xargs ./bin/docker-setup.sh
|
||||
merge:
|
||||
./bin/docker-setup.sh merge vps
|
||||
mswarm: merge
|
||||
docker stack deploy -c stacks/docker-compose.yml vps
|
||||
down:
|
||||
docker stack rm vps
|
||||
pull:
|
||||
for file in services/*; do docker-compose -f $$file pull; done
|
||||
export:
|
||||
7z a -p data.7z data
|
||||
gpg --encrypt --sign --recipient 'marc@marcpartensky.com' data.7z
|
||||
rm data.tgz
|
||||
networks:
|
||||
docker network create --driver overlay --attachable caddy || true
|
||||
docker network create --driver overlay --attachable ldap || true
|
||||
docker network create --driver overlay --attachable postgres || true
|
||||
docker network create --driver overlay --attachable mongo || true
|
||||
docker network create --driver overlay --attachable vpn || true
|
||||
docker network create --driver overlay --attachable redis || true
|
||||
docker network create --driver overlay --subnet 172.22.1.0/24 --gateway 172.22.1.1 --attachable mailcow || true
|
||||
docker network create --driver overlay --subnet 10.22.69.0/24 --gateway 10.22.69.1 --attachable pritunl || true
|
||||
node:
|
||||
docker node update --label-add net=web contabo
|
||||
docker node update --label-add net=none tower
|
||||
@@ -1,29 +1,72 @@
|
||||
[](https://github.com/MarcPartensky/Docker/actions/workflows/docker-swarm-deploy.yml)
|
||||
|
||||
# Docker
|
||||
[](https://swarm.marcpartensky.com)
|
||||
|
||||
## Domains
|
||||
- https://marcpartensky.com
|
||||
- https://www.marcpartensky.com
|
||||
- https://pandoc.marcpartensky.com
|
||||
- https://ialab.marcpartensky.com
|
||||
- https://notebook.marcpartensky.com
|
||||
- https://searx.marcpartensky.com
|
||||
- https://cloud.marcpartensky.com
|
||||
- https://wordpress.marcpartensky.com
|
||||
- https://git.marcpartensky.com
|
||||
<!-- - https://dev.marcpartensky.com -->
|
||||
<!-- - https://box.marcpartensky.com -->
|
||||
<!-- - https://business.marcpartensky.com -->
|
||||
- https://gitlab.marcpartensky.com
|
||||
- https://todolist.marcpartensky.com
|
||||
- https://api.todolist.marcpartensky.com
|
||||
- https://uml.marcpartensky.com
|
||||
- https://grafana.marcpartensky.com
|
||||
- https://prometheus.marcpartensky.com
|
||||
- https://swarm.marcpartensky.com
|
||||
- https://auth.marcpartensky.com
|
||||
- https://seafile.marcpartensky.com
|
||||
- https://cloud.marcpartensky.com
|
||||
- https://mail.marcpartensky.com
|
||||
- https://arch.marcpartensky.com
|
||||
- https://matrix.marcpartensky.com
|
||||
- https://vault.marcpartensky.com
|
||||
<!-- - https://dns.marcpartensky.com -->
|
||||
<!-- - https://glou.marcpartensky.com -->
|
||||
<!-- - https://minecraft.marcpartensky.com -->
|
||||
|
||||
## Commands
|
||||
## Reverse proxy
|
||||
The `docker-compose.yml` configuration is compatible with the following reverse-proxies:
|
||||
- traefik
|
||||
- caddy
|
||||
- nginx
|
||||
|
||||
## Run few services at once
|
||||
- Example : run a monero node
|
||||
```sh
|
||||
certbot certonly -d newdomain.com -n --standalone
|
||||
certbot -d domain name,subdomain.domain name,www.domain name --expand
|
||||
docker-compose -f services/monero-node.yml up -d
|
||||
```
|
||||
|
||||
- Example : run multiple a wordpress website behind a proxy
|
||||
```sh
|
||||
docker exec -i docker_minecraft_1 rcon-cli
|
||||
# create a global network
|
||||
docker network create --attachable caddy # add '--driver overlay' for swarm
|
||||
# then deploy both services
|
||||
docker-compose -f services/caddy.yml -f services/wordpress.yml up -d
|
||||
```
|
||||
|
||||
## Deploy lots of services at once
|
||||
- Select your services by putting those in ./env/vps.txt
|
||||
```sh
|
||||
nvim ./env/vps.txt
|
||||
```
|
||||
|
||||
- Generate a ./stack/docker-compose.yml with all merged configurations
|
||||
```sh
|
||||
./bin/docker-setup.sh merge vps # or make merge
|
||||
```
|
||||
|
||||
- Deploy
|
||||
```sh
|
||||
# as a swarm stack
|
||||
docker stack deploy -c ./stack/docker-compose.yml vps # or make mswarm
|
||||
|
||||
# or using docker-compose
|
||||
docker-compose -f ./stacks/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
### Links
|
||||
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/bin/sh
|
||||
|
||||
PROJECT_PATH="$PROGRAMS_PATH/docker"
|
||||
export COMPOSE_PATH_SEPARATOR=":"
|
||||
export COMPOSE_FILE=$(find $PROJECT_PATH/services/*.yml | xargs -I @ echo -n @:)
|
||||
export COMPOSE_FILE=${COMPOSE_FILE::-1}
|
||||
|
||||
|
||||
if [ "$1" = "-f" ]
|
||||
then
|
||||
docker-compose --file $@
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -f $PWD/docker-compose.yml ]
|
||||
then
|
||||
if [ "$#" = 0 ]
|
||||
then
|
||||
docker-compose ps
|
||||
exit
|
||||
fi
|
||||
docker-compose --file $PWD/docker-compose.yml $@
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$#" = 0 ]
|
||||
then
|
||||
docker-compose ps
|
||||
exit
|
||||
fi
|
||||
|
||||
docker-compose $@
|
||||
if [ "$1" = "up" ]
|
||||
then
|
||||
if [ "$2" = "-d" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 3}
|
||||
else
|
||||
docker-compose logs -f ${@: 2}
|
||||
fi
|
||||
elif [ "$1" = "start" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 2}
|
||||
elif [ "$1" = "restart" ]
|
||||
then
|
||||
docker-compose logs -f ${@: 2}
|
||||
fi
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import yaml
|
||||
import collections.abc
|
||||
|
||||
|
||||
def update(d, u):
|
||||
for k, v in u.items():
|
||||
if isinstance(v, collections.abc.Mapping):
|
||||
d[k] = update(d.get(k, {}), v)
|
||||
else:
|
||||
d[k] = v
|
||||
return d
|
||||
|
||||
|
||||
d = {}
|
||||
for file in sys.argv[1:]:
|
||||
with open(file, "r") as stream:
|
||||
di = yaml.safe_load(stream)
|
||||
d = update(d, di)
|
||||
|
||||
print(yaml.safe_dump(d))
|
||||
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $1 = merge ]
|
||||
then
|
||||
cat ./env/$2.txt | xargs -I @ echo ./services/@.yml | xargs ./bin/docker-merge.py > ./stacks/docker-compose.yml
|
||||
# export COMPOSE_FILE="$PWD/../docker-compose.yml"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if [ -z $STACK ]
|
||||
then
|
||||
sep="-f"
|
||||
else
|
||||
sep="-c"
|
||||
fi
|
||||
|
||||
services=$@
|
||||
|
||||
config_files() {
|
||||
for service in $services
|
||||
do
|
||||
echo -n "$sep services/$service.yml "
|
||||
done
|
||||
}
|
||||
|
||||
if [ -z $STACK ]
|
||||
then
|
||||
cmd="docker compose $(config_files) up -d"
|
||||
else
|
||||
cmd="docker stack deploy $(config_files) $STACK"
|
||||
fi
|
||||
|
||||
echo $cmd
|
||||
eval $cmd
|
||||
@@ -1,18 +0,0 @@
|
||||
FROM ubuntu:latest
|
||||
|
||||
# Escape from here if you can
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y openssh-server neovim
|
||||
|
||||
RUN service ssh start
|
||||
|
||||
# RUN useradd $NAME -p $PASSWORD
|
||||
|
||||
# need to:
|
||||
# nvim /etc/ssh/sshd_config
|
||||
# service ssh restart
|
||||
# docker run -it -p 7022:7022 --name box marcpartensky/box
|
||||
# maybe change guest passwd
|
||||
|
||||
EXPOSE 22
|
||||
@@ -1,47 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
marc:
|
||||
image: marcpartensky/dotfiles
|
||||
build:
|
||||
context: /root/git/dotfiles
|
||||
networks:
|
||||
- box
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
samy:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
|
||||
etienne:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
valentin:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
|
||||
alexandre:
|
||||
# image: marcpartensky/box
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
networks:
|
||||
- box
|
||||
|
||||
networks:
|
||||
box:
|
||||
@@ -0,0 +1 @@
|
||||
mail._domainkey.marcpartensky.com marcpartensky.com:mail:/etc/opendkim/keys/marcpartensky.com/mail.private
|
||||
@@ -0,0 +1 @@
|
||||
*@marcpartensky.com mail._domainkey.marcpartensky.com
|
||||
@@ -0,0 +1,2 @@
|
||||
127.0.0.1
|
||||
localhost
|
||||
@@ -0,0 +1,51 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIJKAIBAAKCAgEAouPk5YPodxb41YBVY4xdeJGRCzUXSrVYUZc2ukE2HqIqWsiv
|
||||
U7vPgBFlclBzMMJVdrt/NAt3NnulzWyQg6V+A8wSYkCNpevGlsp2TvkL8Mcuf1LV
|
||||
GfNScjycJ8nC8LhRgHZZJ876yM97mEK+J4X4k8X1/IWzwUSmOOAB3EpfuQLMVQL8
|
||||
KQh5gyAdvokbnmq+r9VqOyiFbZ03JzyW+RPMTQxMu2kid+KH336/j5Tvza8ITN3v
|
||||
qZRVfZJjJzCJHvx4iKpWy2iOFxNThlUTbnZ93xFEA+36s+pU2hT22RGN8qzSQFBt
|
||||
IXKEqyNJ4KoJ/X53ukYc4ZSmpRAz/PhxX9eIgurUwKXrSwX5127+eCIanRT4aMYS
|
||||
obuue7IGlHixNI4dmZW4H0kMs5MwDItYzNQfmsv7HDjkfsRhBlFpV5LMES1g4L4r
|
||||
WQ85kKcQYfl60FyReCKrrBGiFi9H8iEK5gDIgOFJ37qNa3yLolll31YdkhONsFyr
|
||||
OyGrEAcCzRHOa9jq9KEa5p8QyRekG75aGEfGlRMntkM1KAhdyjuyixle3I7SYywq
|
||||
tqJfjAButWJdvhuPf1jWmqzs97AoJZb2mYzgP/ur9sqHR8EBJ8HN9thRgf4Qsyxp
|
||||
PTO9tOU+4GtT9YSVSGjXHQ0SnPDAj8YxjOql5RDalmiP91NmAeGUfCbLwUkCAwEA
|
||||
AQKCAgBUDv7kYjnomvY2V0+5W4ow2g3blr46U3MMR9h6LYTcMhthVgcEUvs1v8R2
|
||||
RYXsN50a9I8kMHaIqy5Y4BmDljd9hiZGhcGTSiTlU/3Rqzu6OU+JbRmDlsmJIjYD
|
||||
Yl8zEisc+/XuUSWh01CYtniitMQenh3e/rBQoDiXSSIsqETVmNgRVsUB99mdDUnM
|
||||
Nb0G91cILj3v4W1Zr7Pyj5XpW4omiJ5gaFTdQQ2VDDeWxOkrX5QM9sri3CVx88Uv
|
||||
SCC62Nbqz9ySg5Yv2k1UGTs52fQC1UogLQMfLWI0WHU6d5ClFwI5Jkfq5soH9uH9
|
||||
CkK1ijoG6n+k+a01qTLq7Nq09uj+s6T0BFb6703ZATVxdTNxc3xaFcYm9ZpuDnCr
|
||||
U8P6sVClCa9axjMZk1Kjl7OKSyp8LlRWPacxO4GXqlNmhyMUEldKj8cBmmxzC7fj
|
||||
1fMXAve3EodVRM5Z6S+c/PO96TuJrSkddImWhPawd35/rrtBA+7ToPNYzy7aWk/N
|
||||
UZ9uFkwPMLaDZeRG590natPOUkB0FZ7F8EEjwMbUhf1iyoPvLPiixofVk1NKTWMr
|
||||
8DEN6bSH85v/lQaAQhmFFNRjdeyXts9+a7Kmsxos3AfW8hsmNHFxTuoXZ8AjvVAs
|
||||
P7hlPFoJultoUwX/ZpMZtsEwFW3FUSw33Onsdblezp7Lb12icQKCAQEAzVKid6vv
|
||||
TWGltBkL1XTtzYSNUTBIZfoOjKxTsrqSKNAR6i2lmN2bPKKTksPdloBoaQ/FHK6R
|
||||
/+mebfgmnyulY6zWo8EUewi3LFyL9KhXe0K38/jUUokKWSq1Ob5D8Kjq6MuTCfuS
|
||||
M5XnYfIZuIAZLE0244+Q8L03mc2f7uvl3KWaAZOVUsfHu/ETzTm6lgG8Liq5a0Fw
|
||||
thCVVupKVeSLjRa/RWFVR9E9jvIjplo+SVAUJWyYwlOfPDVr76gqrF5P+4lOQpAQ
|
||||
dzwhi4LHhvdgp9Y/Gw3s5vByA/7Ogh3QI5jS36w2EMCFYZpAe4HBQk1UOYVNBpeD
|
||||
58m3venG5pBy4wKCAQEAyxglzQhZSBNkkukoRm7zzmNAx9/M0ROu7uwmJ9t02Q94
|
||||
/3fpV2zVYA7rQKZcCgW5Dnhe4GaeyASRXq4x3v7F6iLCUjxbJ8e+YRhsNrp0WmYU
|
||||
Xk6+06EQgLBICqDQeMDDeR+KQzaJonuMSrGyUb8krR6RB+/W3LqK/0CQSSaHozzN
|
||||
6mxejoFoNhf7rfIP9JJD8QwpBsTJBQNCDvHo1lIA8e3nTngFzLJ56tRVwjaP8EPT
|
||||
qJ7RfoVxdTyUTZTq/8EGOqNrzLgB/FehXq3eTz89tdlHOTT+mJ8H23AEtepxpLFx
|
||||
5kN/eisi4PjUgCp11IHnmG8qnJr48uDlORdrqL424wKCAQBX/DVK+w7NJi8QAjuj
|
||||
+Tt+enLke8BKkuFxPtePG4xOmPtUUsNHwo8naLO8jNqEB/q2Kt/Y7qX5+G6/yTsj
|
||||
slxpXkOMYM0Z/B4ikHYZHZp/Y5PYpKS3yan5k+edGv+aPYiMwc/80yVPnclNm6WR
|
||||
/rLK3TvMQFVoFG2jJw6GH+icqQpZ6phupNXen+xQYZCnf47Yac6TO7PFEU4ttLCu
|
||||
JgX3K+xDGvakk/HBM9o7Cyjt2bcIYoUDoTn3Xx0l0faXbsLvk2NJ+tpTfh0R37UJ
|
||||
DTEKOzFHsqv2OsthEuwDrirnVjHnT7DLdPSzYpqHUo8yjlitXYYocP1BcpuecnOd
|
||||
kgDpAoIBAQCtLi4to8zeFQtR6teZF8t2VlRLG5+/ORWWTnBK1GvTG8qFrW6gSgG5
|
||||
I3+fZTxen3qpyCK/H0KONLbxEYEdMgr6GCGzlhv00/KXQQglsuC8pQcBVAyM0W8N
|
||||
DUShK3gZP+ZvRmHT5pF+p/N9TgFMi71ukf4B0pZZKgiUmC1w8xX+MD82gqouwlJm
|
||||
rhTCwwKv/nlI9qGVUABJ8flGXSm6d7qukbsHwnjPj/E+OUnXjkc3Dd9Sjfr99DRH
|
||||
UBz1+uJYq/Pv1KJ7svyefOrxnTlQQhERG/IL6hCffBxrFh4uMXgug9EoFK6DMn1P
|
||||
cV9i2tIXH56o8UJYwB1Anl1YTYxUG78ZAoIBAD748NDDIj5yxjzW7UzNajLs9iB2
|
||||
aiywcxPZCKo38Yi7KIaxIy8YeHqJ6chenvTl5S4ElB+sJ0SnYEvBqxceOXiM9l5i
|
||||
HrDxIc3gzwY0lN0h2ZEiSKBQgjCtFW6gZ+6KmPonk98S8l8hbFW0vL+nS4EE9vtO
|
||||
3cFhz/HPVB1ZY5ofy7/rLRd7GiISof9WcvrnOvE9BKFF0rNKZUjrf2PM3c2rObvj
|
||||
5rgLvUiX/Mn9ND/XHTjT/UVptmkmcnjFyRvQwXXA4ns7gxBWYfYB1bqwh6WRfEU6
|
||||
x3ykDol24hgohvpEnKMZDUTmLrxgF8hbJTP/57P2Yyy0faxZ/z/MER1qy28=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -0,0 +1,4 @@
|
||||
mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
|
||||
"p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAouPk5YPodxb41YBVY4xdeJGRCzUXSrVYUZc2ukE2HqIqWsivU7vPgBFlclBzMMJVdrt/NAt3NnulzWyQg6V+A8wSYkCNpevGlsp2TvkL8Mcuf1LVGfNScjycJ8nC8LhRgHZZJ876yM97mEK+J4X4k8X1/IWzwUSmOOAB3EpfuQLMVQL8KQh5gyAdvokbnmq+r9VqOyiFbZ03Jz"
|
||||
"yW+RPMTQxMu2kid+KH336/j5Tvza8ITN3vqZRVfZJjJzCJHvx4iKpWy2iOFxNThlUTbnZ93xFEA+36s+pU2hT22RGN8qzSQFBtIXKEqyNJ4KoJ/X53ukYc4ZSmpRAz/PhxX9eIgurUwKXrSwX5127+eCIanRT4aMYSobuue7IGlHixNI4dmZW4H0kMs5MwDItYzNQfmsv7HDjkfsRhBlFpV5LMES1g4L4rWQ85kKcQYfl60FyReCKrrBGi"
|
||||
"Fi9H8iEK5gDIgOFJ37qNa3yLolll31YdkhONsFyrOyGrEAcCzRHOa9jq9KEa5p8QyRekG75aGEfGlRMntkM1KAhdyjuyixle3I7SYywqtqJfjAButWJdvhuPf1jWmqzs97AoJZb2mYzgP/ur9sqHR8EBJ8HN9thRgf4QsyxpPTO9tOU+4GtT9YSVSGjXHQ0SnPDAj8YxjOql5RDalmiP91NmAeGUfCbLwUkCAwEAAQ==" ) ; ----- DKIM key mail for marcpartensky.com
|
||||
@@ -0,0 +1 @@
|
||||
marc@marcpartensky.com|{SHA512-CRYPT}$6$G1SLI/9La3kXrkrt$9MdkaLuUEoa2n8mVVZoCwmy0g6MrvlHDL0i2FVrUakAXi3pgPfo/HNz/mLWRFS6nG1oOeP8IMbTGM.JptPR../
|
||||
@@ -0,0 +1,183 @@
|
||||
bind_host: 0.0.0.0
|
||||
bind_port: 3000
|
||||
users:
|
||||
- name: marc
|
||||
password: $2a$10$E9cknJr/bTLtSUJ9EaW8r.Gw30FX8Plm8jgq.LaYxMwiX4DEuDK7O
|
||||
auth_attempts: 5
|
||||
block_auth_min: 15
|
||||
http_proxy: ""
|
||||
language: ""
|
||||
theme: auto
|
||||
debug_pprof: false
|
||||
web_session_ttl: 720
|
||||
dns:
|
||||
bind_hosts:
|
||||
- 0.0.0.0
|
||||
port: 53
|
||||
anonymize_client_ip: false
|
||||
protection_enabled: true
|
||||
blocking_mode: default
|
||||
blocking_ipv4: ""
|
||||
blocking_ipv6: ""
|
||||
blocked_response_ttl: 10
|
||||
protection_disabled_until: null
|
||||
parental_block_host: family-block.dns.adguard.com
|
||||
safebrowsing_block_host: standard-block.dns.adguard.com
|
||||
ratelimit: 20
|
||||
ratelimit_whitelist: []
|
||||
refuse_any: true
|
||||
upstream_dns:
|
||||
- https://dns10.quad9.net/dns-query
|
||||
upstream_dns_file: ""
|
||||
bootstrap_dns:
|
||||
- 9.9.9.10
|
||||
- 149.112.112.10
|
||||
- 2620:fe::10
|
||||
- 2620:fe::fe:10
|
||||
all_servers: false
|
||||
fastest_addr: false
|
||||
fastest_timeout: 1s
|
||||
allowed_clients: []
|
||||
disallowed_clients: []
|
||||
blocked_hosts:
|
||||
- version.bind
|
||||
- id.server
|
||||
- hostname.bind
|
||||
trusted_proxies:
|
||||
- 127.0.0.0/8
|
||||
- ::1/128
|
||||
cache_size: 4194304
|
||||
cache_ttl_min: 0
|
||||
cache_ttl_max: 0
|
||||
cache_optimistic: false
|
||||
bogus_nxdomain: []
|
||||
aaaa_disabled: false
|
||||
enable_dnssec: false
|
||||
edns_client_subnet:
|
||||
custom_ip: ""
|
||||
enabled: false
|
||||
use_custom: false
|
||||
max_goroutines: 300
|
||||
handle_ddr: true
|
||||
ipset: []
|
||||
ipset_file: ""
|
||||
bootstrap_prefer_ipv6: false
|
||||
filtering_enabled: true
|
||||
filters_update_interval: 24
|
||||
parental_enabled: false
|
||||
safebrowsing_enabled: false
|
||||
safebrowsing_cache_size: 1048576
|
||||
safesearch_cache_size: 1048576
|
||||
parental_cache_size: 1048576
|
||||
cache_time: 30
|
||||
safe_search:
|
||||
enabled: false
|
||||
bing: true
|
||||
duckduckgo: true
|
||||
google: true
|
||||
pixabay: true
|
||||
yandex: true
|
||||
youtube: true
|
||||
rewrites:
|
||||
- domain: medium.com
|
||||
answer: 0.0.0.0
|
||||
- domain: marc
|
||||
answer: marcpartensky.com
|
||||
blocked_services: []
|
||||
upstream_timeout: 10s
|
||||
private_networks: []
|
||||
use_private_ptr_resolvers: true
|
||||
local_ptr_upstreams: []
|
||||
use_dns64: false
|
||||
dns64_prefixes: []
|
||||
serve_http3: false
|
||||
use_http3_upstreams: false
|
||||
tls:
|
||||
enabled: false
|
||||
server_name: ""
|
||||
force_https: false
|
||||
port_https: 443
|
||||
port_dns_over_tls: 853
|
||||
port_dns_over_quic: 853
|
||||
port_dnscrypt: 0
|
||||
dnscrypt_config_file: ""
|
||||
allow_unencrypted_doh: false
|
||||
certificate_chain: ""
|
||||
private_key: ""
|
||||
certificate_path: ""
|
||||
private_key_path: ""
|
||||
strict_sni_check: false
|
||||
querylog:
|
||||
ignored: []
|
||||
interval: 2160h
|
||||
size_memory: 1000
|
||||
enabled: true
|
||||
file_enabled: true
|
||||
statistics:
|
||||
ignored: []
|
||||
interval: 24h
|
||||
enabled: true
|
||||
filters:
|
||||
- enabled: true
|
||||
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
|
||||
name: AdGuard DNS filter
|
||||
id: 1
|
||||
- enabled: true
|
||||
url: https://adaway.org/hosts.txt
|
||||
name: AdAway Default Blocklist
|
||||
id: 2
|
||||
- enabled: true
|
||||
url: https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
|
||||
name: WindowsSpyBlocker - Hosts spy rules
|
||||
id: 1668812860
|
||||
- enabled: true
|
||||
url: https://malware-filter.gitlab.io/malware-filter/phishing-filter-agh.txt
|
||||
name: Phishing URL Blocklist (PhishTank and OpenPhish)
|
||||
id: 1668812861
|
||||
- enabled: true
|
||||
url: https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV-AGH.txt
|
||||
name: Perflyst and Dandelion Sprout's Smart-TV Blocklist
|
||||
id: 1668812862
|
||||
- enabled: true
|
||||
url: https://raw.githubusercontent.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites/master/hosts
|
||||
name: The Big List of Hacked Malware Web Sites
|
||||
id: 1668812863
|
||||
whitelist_filters: []
|
||||
user_rules: []
|
||||
dhcp:
|
||||
enabled: false
|
||||
interface_name: ""
|
||||
local_domain_name: lan
|
||||
dhcpv4:
|
||||
gateway_ip: ""
|
||||
subnet_mask: ""
|
||||
range_start: ""
|
||||
range_end: ""
|
||||
lease_duration: 86400
|
||||
icmp_timeout_msec: 1000
|
||||
options: []
|
||||
dhcpv6:
|
||||
range_start: ""
|
||||
lease_duration: 86400
|
||||
ra_slaac_only: false
|
||||
ra_allow_slaac: false
|
||||
clients:
|
||||
runtime_sources:
|
||||
whois: true
|
||||
arp: true
|
||||
rdns: true
|
||||
dhcp: true
|
||||
hosts: true
|
||||
persistent: []
|
||||
log_file: ""
|
||||
log_max_backups: 0
|
||||
log_max_size: 100
|
||||
log_max_age: 3
|
||||
log_compress: false
|
||||
log_localtime: false
|
||||
verbose: false
|
||||
os:
|
||||
group: ""
|
||||
user: ""
|
||||
rlimit_nofile: 0
|
||||
schema_version: 20
|
||||
@@ -0,0 +1,30 @@
|
||||
# first caddyfile
|
||||
|
||||
{
|
||||
security {
|
||||
authorization policy marc {
|
||||
set auth url https://gate.marcpartensky.com/
|
||||
crypto key verify {env.JWT_SECRET}
|
||||
allow roles authp/admin authp/user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
marc.wf {
|
||||
redir https://marcpartensky.com/{uri}
|
||||
}
|
||||
|
||||
marc.tf {
|
||||
redir https://marcpartensky.com{uri}
|
||||
}
|
||||
|
||||
# authent.marcpartensky.com {
|
||||
# reverse_proxy authentik:9443 {
|
||||
# tls internal
|
||||
# }
|
||||
# }
|
||||
|
||||
# healthcheck
|
||||
# :8080 {
|
||||
# status 200 /
|
||||
# }
|
||||
@@ -0,0 +1,5 @@
|
||||
# Please restart ClamAV after changing signatures
|
||||
Example-Signature.Ignore-1
|
||||
PUA.Win.Trojan.EmbeddedPDF-1
|
||||
PUA.Pdf.Trojan.EmbeddedJavaScript-1
|
||||
PUA.Pdf.Trojan.OpenActionObjectwithJavascript-1
|
||||
@@ -0,0 +1,11 @@
|
||||
[database]
|
||||
type = postgres
|
||||
host = postgres:5432
|
||||
name = grafana
|
||||
user = grafana
|
||||
password = ZTliY2MwOWQ5ZjNiMzUyMTc5YWMwNmJi
|
||||
ssl_mode = disable
|
||||
|
||||
[auth.ldap]
|
||||
enabled = true
|
||||
config_file = /etc/grafana/ldap.toml
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,30 @@
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name dev.marcpartensky.com;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/dev.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/dev.marcpartensky.com/privkey.pem;
|
||||
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# logs
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
allow all;
|
||||
root /var/www/certbot;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://marcpartensky.com:8000;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
# server {
|
||||
# listen 443 ssl http2;
|
||||
# server_name docker.marcpartensky.com;
|
||||
|
||||
# # ssl keys + letsencrypt
|
||||
# ssl_certificate /etc/letsencrypt/live/docker.marcpartensky.com/fullchain.pem;
|
||||
# ssl_certificate_key /etc/letsencrypt/live/docker.marcpartensky.com/privkey.pem;
|
||||
|
||||
# include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# # logs
|
||||
# access_log /var/log/nginx/reverse-access.log;
|
||||
# error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
# location /.well-known/acme-challenge/ {
|
||||
# allow all;
|
||||
# root /var/www/certbot;
|
||||
# }
|
||||
|
||||
# location /docs {
|
||||
# proxy_pass http://docker;
|
||||
# # proxy_redirect off;
|
||||
# proxy_set_header Host $host;
|
||||
# proxy_set_header X-Real-IP $remote_addr;
|
||||
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
# proxy_set_header X-Forwarded-Proto https;
|
||||
# }
|
||||
# }
|
||||
@@ -2,6 +2,8 @@ server {
|
||||
listen 443 ssl http2;
|
||||
server_name git.marcpartensky.com;
|
||||
|
||||
client_max_body_size 10G;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/git.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/git.marcpartensky.com/privkey.pem;
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name jenkins.marcpartensky.com;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/jenkins.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/jenkins.marcpartensky.com/privkey.pem;
|
||||
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# logs
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
allow all;
|
||||
root /var/www/certbot;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://jenkins:8080;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
server {
|
||||
listen 25565;
|
||||
server_name mc.marcpartensky.com;
|
||||
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
location / {
|
||||
proxy_pass http://marcpartensky.com:7065;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ server {
|
||||
listen 443 ssl http2;
|
||||
server_name oxivia.business.marcpartensky.com;
|
||||
|
||||
client_max_body_size 10M;
|
||||
client_max_body_size 30M;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/oxivia.business.marcpartensky.com/fullchain.pem;
|
||||
|
||||
+24
-24
@@ -1,30 +1,30 @@
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name panel.marcpartensky.com;
|
||||
# server {
|
||||
# listen 443 ssl http2;
|
||||
# server_name panel.marcpartensky.com;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/panel.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/panel.marcpartensky.com/privkey.pem;
|
||||
# # ssl keys + letsencrypt
|
||||
# ssl_certificate /etc/letsencrypt/live/panel.marcpartensky.com/fullchain.pem;
|
||||
# ssl_certificate_key /etc/letsencrypt/live/panel.marcpartensky.com/privkey.pem;
|
||||
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
# include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# logs
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
# # logs
|
||||
# access_log /var/log/nginx/reverse-access.log;
|
||||
# error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
allow all;
|
||||
root /var/www/certbot;
|
||||
}
|
||||
# location /.well-known/acme-challenge/ {
|
||||
# allow all;
|
||||
# root /var/www/certbot;
|
||||
# }
|
||||
|
||||
location / {
|
||||
proxy_pass http://panel;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
# location / {
|
||||
# proxy_pass http://panel;
|
||||
# # proxy_redirect off;
|
||||
# proxy_set_header Host $host;
|
||||
# proxy_set_header X-Real-IP $remote_addr;
|
||||
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
# proxy_set_header X-Forwarded-Proto https;
|
||||
# }
|
||||
# }
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name ialab.marcpartensky.com;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/ialab.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/ialab.marcpartensky.com/privkey.pem;
|
||||
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# logs
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
allow all;
|
||||
root /var/www/certbot;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://ialab;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name vnc.marcpartensky.com;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/vnc.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/vnc.marcpartensky.com/privkey.pem;
|
||||
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# logs
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
allow all;
|
||||
root /var/www/certbot;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://vnc:6901;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name alex.wp.marcpartensky.com;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/alex.wp.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/alex.wp.marcpartensky.com/privkey.pem;
|
||||
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# logs
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
allow all;
|
||||
root /var/www/certbot;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://wordpress_alex;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name marc.wp.marcpartensky.com;
|
||||
|
||||
# ssl keys + letsencrypt
|
||||
ssl_certificate /etc/letsencrypt/live/marc.wp.marcpartensky.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/marc.wp.marcpartensky.com/privkey.pem;
|
||||
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# logs
|
||||
access_log /var/log/nginx/reverse-access.log;
|
||||
error_log /var/log/nginx/reverse-error.log;
|
||||
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
allow all;
|
||||
root /var/www/certbot;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://wordpress_marc;
|
||||
# proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
# Pi-hole: A black hole for Internet advertisements
|
||||
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
|
||||
# Network-wide ad blocking via your own hardware.
|
||||
#
|
||||
# Dnsmasq config for Pi-hole's FTLDNS
|
||||
#
|
||||
# This file is copyright under the latest version of the EUPL.
|
||||
# Please see LICENSE file for your rights under this license.
|
||||
|
||||
###############################################################################
|
||||
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
|
||||
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
|
||||
# #
|
||||
# IF YOU WISH TO CHANGE THE UPSTREAM SERVERS, CHANGE THEM IN: #
|
||||
# /etc/pihole/setupVars.conf #
|
||||
# #
|
||||
# ANY OTHER CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE #
|
||||
# WITHIN /etc/dnsmasq.d/yourname.conf #
|
||||
###############################################################################
|
||||
|
||||
addn-hosts=/etc/pihole/local.list
|
||||
addn-hosts=/etc/pihole/custom.list
|
||||
|
||||
|
||||
localise-queries
|
||||
|
||||
|
||||
no-resolv
|
||||
|
||||
|
||||
|
||||
cache-size=10000
|
||||
|
||||
log-queries
|
||||
log-facility=/var/log/pihole.log
|
||||
|
||||
log-async
|
||||
server=8.8.8.8
|
||||
server=8.8.4.4
|
||||
interface=eth0
|
||||
@@ -0,0 +1,42 @@
|
||||
# Pi-hole: A black hole for Internet advertisements
|
||||
# (c) 2021 Pi-hole, LLC (https://pi-hole.net)
|
||||
# Network-wide ad blocking via your own hardware.
|
||||
#
|
||||
# RFC 6761 config file for Pi-hole
|
||||
#
|
||||
# This file is copyright under the latest version of the EUPL.
|
||||
# Please see LICENSE file for your rights under this license.
|
||||
|
||||
###############################################################################
|
||||
# FILE AUTOMATICALLY POPULATED BY PI-HOLE INSTALL/UPDATE PROCEDURE. #
|
||||
# ANY CHANGES MADE TO THIS FILE AFTER INSTALL WILL BE LOST ON THE NEXT UPDATE #
|
||||
# #
|
||||
# CHANGES SHOULD BE MADE IN A SEPARATE CONFIG FILE #
|
||||
# WITHIN /etc/dnsmasq.d/yourname.conf #
|
||||
###############################################################################
|
||||
|
||||
# RFC 6761: Caching DNS servers SHOULD recognize
|
||||
# test, localhost, invalid
|
||||
# names as special and SHOULD NOT attempt to look up NS records for them, or
|
||||
# otherwise query authoritative DNS servers in an attempt to resolve these
|
||||
# names.
|
||||
server=/test/
|
||||
server=/localhost/
|
||||
server=/invalid/
|
||||
|
||||
# The same RFC requests something similar for
|
||||
# 10.in-addr.arpa. 21.172.in-addr.arpa. 27.172.in-addr.arpa.
|
||||
# 16.172.in-addr.arpa. 22.172.in-addr.arpa. 28.172.in-addr.arpa.
|
||||
# 17.172.in-addr.arpa. 23.172.in-addr.arpa. 29.172.in-addr.arpa.
|
||||
# 18.172.in-addr.arpa. 24.172.in-addr.arpa. 30.172.in-addr.arpa.
|
||||
# 19.172.in-addr.arpa. 25.172.in-addr.arpa. 31.172.in-addr.arpa.
|
||||
# 20.172.in-addr.arpa. 26.172.in-addr.arpa. 168.192.in-addr.arpa.
|
||||
# Pi-hole implements this via the dnsmasq option "bogus-priv" (see
|
||||
# 01-pihole.conf) because this also covers IPv6.
|
||||
|
||||
# OpenWRT furthermore blocks bind, local, onion domains
|
||||
# see https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=package/network/services/dnsmasq/files/rfc6761.conf;hb=HEAD
|
||||
# and https://www.iana.org/assignments/special-use-domain-names/special-use-domain-names.xhtml
|
||||
# We do not include the ".local" rule ourselves, see https://github.com/pi-hole/pi-hole/pull/4282#discussion_r689112972
|
||||
server=/bind/
|
||||
server=/onion/
|
||||
@@ -11,9 +11,13 @@ global:
|
||||
scrape_configs:
|
||||
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
|
||||
- job_name: 'prometheus'
|
||||
|
||||
# Override the global default and scrape targets from this job every 5 seconds.
|
||||
scrape_interval: 5s
|
||||
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
- targets: ['node-exporter:9100']
|
||||
|
||||
- job_name: cadvisor
|
||||
scrape_interval: 5s
|
||||
static_configs:
|
||||
- targets:
|
||||
- cadvisor:8080
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
settings.yml
|
||||
@@ -1,47 +0,0 @@
|
||||
[uwsgi]
|
||||
# Who will run the code
|
||||
uid = searx
|
||||
gid = searx
|
||||
|
||||
# Number of workers (usually CPU count)
|
||||
workers = 4
|
||||
|
||||
# The right granted on the created socket
|
||||
chmod-socket = 666
|
||||
|
||||
# Plugin to use and interpretor config
|
||||
single-interpreter = true
|
||||
master = true
|
||||
plugin = python3
|
||||
lazy-apps = true
|
||||
enable-threads = true
|
||||
|
||||
# Module to import
|
||||
module = searx.webapp
|
||||
|
||||
# Virtualenv and python path
|
||||
pythonpath = /usr/local/searx/
|
||||
chdir = /usr/local/searx/searx/
|
||||
|
||||
# Disable logging for privacy
|
||||
disable-logging=True
|
||||
|
||||
# But keep errors for 2 days
|
||||
touch-logrotate = /run/uwsgi-logrotate
|
||||
unique-cron = 15 0 -1 -1 -1 { touch /run/uwsgi-logrotate }
|
||||
log-backupname = /var/log/uwsgi/uwsgi.log.1
|
||||
logto = /var/log/uwsgi/uwsgi.log
|
||||
|
||||
# No keep alive
|
||||
# See https://github.com/searx/searx-docker/issues/24
|
||||
add-header = Connection: close
|
||||
|
||||
# uwsgi serves the static files
|
||||
# expires set to one day as Flask does
|
||||
static-map = /static=/usr/local/searx/searx/static
|
||||
static-expires = /* 864000
|
||||
static-gzip-all = True
|
||||
offload-threads = %k
|
||||
|
||||
# Cache
|
||||
cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
KEYS_PATH="./data/tmate/keys"
|
||||
|
||||
set -eu
|
||||
|
||||
gen_key() {
|
||||
keytype=$1
|
||||
ks="${keytype}_"
|
||||
key="$KEYS_PATH/ssh_host_${ks}key"
|
||||
if [ ! -e "${key}" ] ; then
|
||||
ssh-keygen -t "${keytype}" -f "${key}" -N ''
|
||||
echo ""
|
||||
fi
|
||||
SIG=$(ssh-keygen -l -E SHA256 -f "$key.pub" | cut -d ' ' -f 2)
|
||||
}
|
||||
|
||||
mkdir -p $KEYS_PATH
|
||||
gen_key rsa
|
||||
RSA_SIG=$SIG
|
||||
gen_key ed25519
|
||||
ED25519_SIG=$SIG
|
||||
|
||||
|
||||
echo "You may use the following settings this in your .tmate.conf:"
|
||||
echo ""
|
||||
echo "set -g tmate-server-host localhost"
|
||||
echo "set -g tmate-server-port 22"
|
||||
echo "set -g tmate-server-rsa-fingerprint $RSA_SIG"
|
||||
echo "set -g tmate-server-ed25519-fingerprint $ED25519_SIG"
|
||||
@@ -0,0 +1,7 @@
|
||||
http:
|
||||
middlewares:
|
||||
basic:
|
||||
basicAuth:
|
||||
users:
|
||||
- test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
|
||||
# usersFile: etc/traefik/.htpasswd
|
||||
@@ -0,0 +1,98 @@
|
||||
# https://doc.traefik.io/traefik/routing/overview/
|
||||
global:
|
||||
checkNewVersion: true
|
||||
sendAnonymousUsage: false
|
||||
api:
|
||||
# insecure: false # = secure
|
||||
insecure: true
|
||||
dashboard: true
|
||||
# debug: true
|
||||
debug: false
|
||||
providers:
|
||||
docker:
|
||||
swarmMode: true
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
exposedByDefault: false # traefik enabled containers only
|
||||
network: caddy
|
||||
file:
|
||||
filename: dynamic.yml
|
||||
serversTransport: # enable ssl backend
|
||||
insecureSkipVerify: true
|
||||
certificatesResolvers:
|
||||
# https://community.traefik.io/t/help-with-multiple-certificate-resolvers/15134
|
||||
tls:
|
||||
acme:
|
||||
tlsChallenge: {}
|
||||
email: marc.partensky@gmail.com
|
||||
storage: /config/acme.json
|
||||
cloudflare:
|
||||
acme:
|
||||
email: marc.partensky@gmail.com
|
||||
storage: /config/acme.json
|
||||
dnsChallenge:
|
||||
provider: cloudflare
|
||||
resolvers:
|
||||
- "1.1.1.1:53"
|
||||
|
||||
ping: {} # mandatory for healthcheck
|
||||
log:
|
||||
level: debug
|
||||
# level: error
|
||||
entryPoints:
|
||||
websecure:
|
||||
address: ':443'
|
||||
forwardedHeaders:
|
||||
insecure: true
|
||||
# http3:
|
||||
# advertisedPort: 443
|
||||
http:
|
||||
tls:
|
||||
certResolver: tls
|
||||
# middlewares:
|
||||
# - ldap
|
||||
# http3:
|
||||
# advertisedPort: 443
|
||||
web:
|
||||
address: ':80'
|
||||
forwardedHeaders:
|
||||
insecure: true
|
||||
# forwardedHeaders:
|
||||
# trustedIPs:
|
||||
# - "127.0.0.1/32"
|
||||
# - "192.168.1.7"
|
||||
http:
|
||||
redirections:
|
||||
entryPoint:
|
||||
to: websecure
|
||||
scheme: https
|
||||
permanent: true
|
||||
priority: 10
|
||||
experimental:
|
||||
# http3: true
|
||||
plugins:
|
||||
ldapAuth:
|
||||
moduleName: "github.com/wiltonsr/ldapAuth"
|
||||
version: "v0.0.19"
|
||||
souin:
|
||||
moduleName: "github.com/darkweak/souin"
|
||||
version: "v1.6.22"
|
||||
sablier:
|
||||
moduleName: "github.com/acouvreur/sablier"
|
||||
version: "v1.0.0"
|
||||
|
||||
# ldap entreprise https://doc.traefik.io/traefik-enterprise/operations/static-configuration/
|
||||
# authSources:
|
||||
# ldapSource:
|
||||
# ldap:
|
||||
# url: ldaps://marcpartensky.com:636
|
||||
# startTLS: true
|
||||
# insecureSkipVerify: true
|
||||
# bindDN: cn=admin,dc=admin,dc=org
|
||||
|
||||
# - --providers.docker.network=web # <== Operate on the docker network named web
|
||||
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
|
||||
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_TLSCHALLENGE=true
|
||||
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_EMAIL=marc.partensky@gmail.com
|
||||
# TRAEFIK_CERTIFICATESRESOLVERS_TLS_ACME_STORAGE=/letsencrypt/acme.json # log settings (options: error, debug, panic, fatal, warn, info) - https://docs.traefik.io/observability/logs/ ##
|
||||
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
|
||||
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
|
||||
@@ -1,5 +1,5 @@
|
||||
file_uploads = On
|
||||
memory_limit = 500M
|
||||
upload_max_filesize = 10M
|
||||
upload_max_filesize = 30M
|
||||
post_max_size = 500M
|
||||
max_execution_time = 600
|
||||
|
||||
@@ -1,708 +0,0 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
|
||||
traefik:
|
||||
image: traefik
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
command:
|
||||
## Provider Settings - https://docs.traefik.io/providers/docker/#provider-configuration ##
|
||||
# - --providers.docker.exposedbydefault=false # <== Don't expose every container to traefik, only expose enabled ones
|
||||
- --providers.file.filename=/dynamic.yaml # <== Referring to a dynamic configuration file
|
||||
# - --providers.docker.network=web # <== Operate on the docker network named web
|
||||
- --providers.docker=true # <== Enabling docker as the provider for traefik
|
||||
## API Settings - https://docs.traefik.io/operations/api/, endpoints - https://docs.traefik.io/operations/api/#endpoints ##
|
||||
- --api.insecure=true # <== Enabling insecure api, NOT RECOMMENDED FOR PRODUCTION
|
||||
- --api.dashboard=true # <== Enabling the dashboard to view services, middlewares, routers, etc...
|
||||
- --api.debug=true # <== Enabling additional endpoints for debugging and profiling
|
||||
## Entrypoints Settings - https://docs.traefik.io/routing/entrypoints/#configuration ##
|
||||
- --entrypoints.websecure.address=:443
|
||||
## Certificate Settings (Let's Encrypt) - https://docs.traefik.io/https/acme/#configuration-examples ##
|
||||
- --certificatesresolvers.tls.acme.tlschallenge=true # <== Enable TLS-ALPN-01 to generate and renew ACME certs
|
||||
- --certificatesresolvers.tls.acme.email=marc.partensky@gmail.com # <== Setting email for certs
|
||||
- --certificatesresolvers.tls.acme.storage=/letsencrypt/acme.json # <== Defining acme file to store cert information
|
||||
## Log Settings (options: ERROR, DEBUG, PANIC, FATAL, WARN, INFO) - https://docs.traefik.io/observability/logs/ ##
|
||||
- --log.level=DEBUG # <== Setting the level of the logs from traefik
|
||||
ports:
|
||||
- "8081:443"
|
||||
- "8080:8080" # The Web UI (enabled by --api.insecure=true)
|
||||
volumes:
|
||||
- ./data/traefik/letsencrypt:/letsencrypt
|
||||
- ./data/traefik/dynamic.yaml:/dynamic.yaml
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.api.rule=Host(`traefik.marcpartensky.com`)"
|
||||
- "traefik.http.routers.api.service=api@internal" # <== Enabling the api to be a service to access
|
||||
- "traefik.http.routers.traefik.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=tls"
|
||||
|
||||
whoami:
|
||||
image: traefik/whoami
|
||||
restart: unless-stopped
|
||||
user: nobody
|
||||
labels:
|
||||
- "traefik.http.routers.whoami.rule=Host(`whoami.marcpartensky.com`)"
|
||||
- "traefik.http.routers.whoami.entrypoints=websecure"
|
||||
- "traefik.http.routers.whoami.tls.certresolver=tls"
|
||||
|
||||
nginx:
|
||||
image: nginx
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "2222:2222"
|
||||
volumes:
|
||||
- ./data/nginx:/etc/nginx/conf.d
|
||||
- /etc/letsencrypt:/etc/letsencrypt
|
||||
- /var/log/nginx:/var/log/nginx
|
||||
# - ./data/certbot/conf:/etc/letsencrypt
|
||||
# - ./data/certbot/www:/var/www/certbot
|
||||
# - type: bind
|
||||
# source: /home/my-user/elk-stack/.htpasswd
|
||||
# target: /etc/nginx/.htpasswd
|
||||
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
|
||||
networks:
|
||||
- nginx
|
||||
- box
|
||||
|
||||
portainer:
|
||||
image: portainer/portainer-ce
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /srv/portainer:/data
|
||||
networks:
|
||||
- nginx
|
||||
command:
|
||||
- --logo
|
||||
- https://marcpartensky.com/static/home/assets/img/white-orchid.svg
|
||||
labels:
|
||||
- "traefik.http.routers.portainer.rule=Host(`docker.marcpartensky.com`)"
|
||||
- "traefik.http.routers.portainer.entrypoints=websecure"
|
||||
- "traefik.http.routers.portainer.tls.certresolver=tls"
|
||||
|
||||
# registry:
|
||||
# restart: unless-stopped
|
||||
# image: registry:latest
|
||||
# ports:
|
||||
# - 5000:5000
|
||||
# environment:
|
||||
# REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
|
||||
# REGISTRY_HTTP_TLS_KEY: /certs/domain.key
|
||||
# REGISTRY_AUTH: htpasswd
|
||||
# REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
|
||||
# REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
|
||||
# volumes:
|
||||
# - /path/data:/var/lib/registry
|
||||
# - /path/certs:/certs
|
||||
# - /path/auth:/auth
|
||||
|
||||
# registry:
|
||||
# image: registry:latest
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - /srv/registry:/var/lib/registry
|
||||
# - "$(pwd)"/certs:/certs
|
||||
# ports:
|
||||
# - "5000:7000"
|
||||
# environment:
|
||||
# - REGISTRY_HTTP_ADDR=0.0.0.0:443 \
|
||||
# - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
|
||||
# - REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
|
||||
# -p 443:443
|
||||
|
||||
website:
|
||||
image: marcpartensky/website
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: /root/git/website
|
||||
dockerfile: /root/git/website/Dockerfile
|
||||
args:
|
||||
env_file: /root/git/website/.env
|
||||
env_file:
|
||||
- ./data/secrets/website.env
|
||||
environment:
|
||||
- DEBUG=false
|
||||
# - KEY=/app/privkey.pem
|
||||
# - CERT=/app/fullchain.pem
|
||||
working_dir: /app
|
||||
tty: true
|
||||
# - ./manage.py collectstatic --noinput
|
||||
entrypoint: >
|
||||
sh -c "python manage.py migrate;
|
||||
daphne django_project.asgi:application --port 80 --bind website -v2"
|
||||
# entrypoint: "daphne -e ssl:7000:privateKey=$$KEY:certKey=$$CERT django_project.asgi:application"
|
||||
# entrypoint: daphne -b website -e ssl:443:privateKey=/app/privkey.pem:certKey=/app/fullchain.pem django_project.asgi:application
|
||||
links:
|
||||
- redis
|
||||
- postgres
|
||||
volumes:
|
||||
- /srv/website/media:/app/media
|
||||
networks:
|
||||
- website
|
||||
- nginx
|
||||
depends_on:
|
||||
- redis
|
||||
- postgres
|
||||
|
||||
postgres:
|
||||
image: postgres
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/postgres/dump:/srv/postgresql/dump
|
||||
env_file:
|
||||
- data/secrets/postgres.env
|
||||
networks:
|
||||
- website
|
||||
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- website
|
||||
|
||||
# certbot:
|
||||
# image: certbot/certbot
|
||||
# volumes:
|
||||
# - ./data/certbot/conf:/etc/letsencrypt
|
||||
# - ./data/certbot/www:/var/www/certbot
|
||||
# entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
|
||||
|
||||
# certbot_nginx:
|
||||
# restart: unless-stopped
|
||||
# image: staticfloat/nginx-certbot
|
||||
# ports:
|
||||
# - "80:80/tcp"
|
||||
# - "443:443/tcp"
|
||||
# environment:
|
||||
# CERTBOT_EMAIL: marc.partensky@gmail.com
|
||||
# # variable names are space-separated
|
||||
# ENVSUBST_VARS: FQDN
|
||||
# FQDN: marcpartensky.com
|
||||
# volumes:
|
||||
# - ./conf.d:/etc/nginx/user.conf.d:ro
|
||||
# - letsencrypt:/etc/letsencrypt
|
||||
|
||||
esclave:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
build: /root/git/discord-bot
|
||||
env_file:
|
||||
- ./data/secrets/esclave.env
|
||||
|
||||
ia:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
build: /root/git/discord-bot
|
||||
env_file:
|
||||
- ./data/secrets/ia.env
|
||||
|
||||
esclave2:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
build: /root/git/discord-bot
|
||||
env_file:
|
||||
- ./data/secrets/esclave2.env
|
||||
networks:
|
||||
- discord
|
||||
depends_on:
|
||||
- discord_bot_mongo
|
||||
|
||||
discord_bot_mongo:
|
||||
image: mongo
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- discord
|
||||
env_file:
|
||||
- ./data/secrets/discord_bot_mongo.env
|
||||
|
||||
servant:
|
||||
image: marcpartensky/servitor
|
||||
restart: unless-stopped
|
||||
build: /root/git/servitor
|
||||
|
||||
pandoc:
|
||||
build: /root/git/pandoc-api
|
||||
image: marcpartensky/pandoc-api
|
||||
restart: unless-stopped
|
||||
# working_dir: /app
|
||||
env_file:
|
||||
- ./data/secrets/pandoc.env
|
||||
entrypoint: "flask run --host pandoc --port 80"
|
||||
volumes:
|
||||
- /srv/pandoc:/app
|
||||
- /var/log/nginx:/var/log/nginx
|
||||
networks:
|
||||
- nginx
|
||||
|
||||
# https://github.com/itzg/docker-minecraft-server/blob/master/README.md
|
||||
# minecraft_aventure:
|
||||
# image: itzg/minecraft-server
|
||||
# restart: always
|
||||
# environment:
|
||||
# - TZ=Europe/Paris
|
||||
# - OPS=MazexRedstone
|
||||
# - EULA=TRUE
|
||||
# - ENABLE_AUTOPAUSE=TRUE
|
||||
# - ENABLE_COMMAND_BLOCK=TRUE
|
||||
# - MEMORY=2G
|
||||
# - VERSION=1.13.2
|
||||
# - ICON=https://cdn.discordapp.com/attachments/507519157387132940/816443237384454144/maxime.png
|
||||
# - MOTD=Venez jouer sur le serveur de Marc Partensky. Venez! On est bien!
|
||||
# - WORLD=https://download2342.mediafire.com/89adsak3r96g/xavlx2bmrypq2s0/Across+The+Time+II+-+Time+For+Regrets+%28release+1.0.4%29.zip
|
||||
# # - MODS=https://www.example.com/mods/mod1.jar,https://www.example.com/mods/mod2.jar
|
||||
# tty: true
|
||||
# stdin_open: true
|
||||
# volumes:
|
||||
# - /srv/minecraft/data:/data
|
||||
# ports:
|
||||
# - "25565:25565"
|
||||
|
||||
minecraft:
|
||||
image: itzg/minecraft-server
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
- EULA=TRUE
|
||||
- OPS=MazexRedstone
|
||||
- ENABLE_COMMAND_BLOCK=TRUE
|
||||
- MEMORY=2G
|
||||
- VERSION=1.16.5
|
||||
- ICON=https://cdn.discordapp.com/attachments/611251401514811392/818288635199225886/server.png
|
||||
- MOTD=Venez jouer sur le serveur de Marc Partensky. Venez! On est bien!
|
||||
- ANNOUNCE_PLAYER_ACHIEVEMENTS=TRUE
|
||||
- LEVEL=Server
|
||||
- ONLINE_MODE=FALSE # no need for an account
|
||||
- DIFFICULTY=hard
|
||||
- VIEW_DISTANCE=32
|
||||
# - WORLD=/srv/minecraft/zip/Server.zip
|
||||
# - SNOOPER_ENABLED=false
|
||||
tty: true
|
||||
stdin_open: true
|
||||
volumes:
|
||||
- /srv/minecraft/data/:/data
|
||||
ports:
|
||||
- "25565:25565"
|
||||
|
||||
# pterodactyl:
|
||||
# build: /root/fork/panel
|
||||
# restart: unless-stopped
|
||||
# networks:
|
||||
# - nginx
|
||||
|
||||
notebook:
|
||||
image: jupyter/base-notebook
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8888:8888"
|
||||
environment:
|
||||
# - GEN_CERT=yes
|
||||
- JUPYTER_ENABLE_LAB=yes
|
||||
- GRANT_SUDO=yes
|
||||
entrypoint: start.sh jupyter lab --user root
|
||||
# entrypoint: start-notebook.sh \
|
||||
# --NotebookApp.keyfile=key/0000_key-certbot.pem
|
||||
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
|
||||
# volumes:
|
||||
# - /etc/letsencrypt/keys:/home/jovyan/work/key
|
||||
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
|
||||
# - /etc/letsencrypt:/etc/letsencrypt
|
||||
|
||||
# env:
|
||||
# image: marcpartensky/env
|
||||
# build:
|
||||
# context: /root/git/dotfiles
|
||||
# dockerfile: /root/git/dotfiles/Dockerfile
|
||||
# args:
|
||||
# env_file: /root/git/dotfiles/.env
|
||||
# ports:
|
||||
# - "22:7020"
|
||||
# - "8022:7021"
|
||||
# volumes:
|
||||
|
||||
# elasticsearch:
|
||||
# image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
|
||||
# image: docker.elastic.co/elasticsearch/elasticsearch:latest
|
||||
# image: elasticsearch:latest
|
||||
# environment:
|
||||
# - discovery.type=single-node
|
||||
# - ES_ENABLE_SECURITY=true
|
||||
# env_file:
|
||||
# - ./data/secrets/elasticsearch.env
|
||||
# volumes:
|
||||
# - /srv/elasticsearch/data:/srv/elasticsearch/data
|
||||
# # - elasticsearch:/usr/share/elasticsearch/data
|
||||
# networks:
|
||||
# - nginx
|
||||
# - elk
|
||||
# ports:
|
||||
# - "9200:9200"
|
||||
# - "9300:9300"
|
||||
# ulimits:
|
||||
# memlock:
|
||||
# soft: -1
|
||||
# hard: -1
|
||||
|
||||
# kibana:
|
||||
# image: docker.elastic.co/kibana/kibana:latest
|
||||
# image: kibana:latest
|
||||
# ports:
|
||||
# - "5601:5601"
|
||||
# env_file:
|
||||
# - ./data/secrets/kibana.env
|
||||
# depends_on:
|
||||
# - elasticsearch
|
||||
# networks:
|
||||
# - nginx
|
||||
|
||||
ialab:
|
||||
image: marcpartensky/ialab
|
||||
user: nobody
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: /root/git/ialab
|
||||
dockerfile: /root/git/ialab/Dockerfile
|
||||
environment:
|
||||
- FLASK_APP=server.py
|
||||
# - FLASK_APP=/app/server.py
|
||||
# - FLASK_APP=/app/wsgi.py
|
||||
# env_file:
|
||||
# - /root/git/ialab/.flaskenv
|
||||
# working_dir: /app
|
||||
entrypoint: flask run --host ialab --port 80
|
||||
# entrypoint: "gunicorn server:app"
|
||||
# entrypoint: "gunicorn --chdir /app server:app"
|
||||
volumes:
|
||||
- /srv/ialab:/app
|
||||
networks:
|
||||
- nginx
|
||||
|
||||
open_web_calendar:
|
||||
working_dir: /app
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: /root/fork/open-web-calendar
|
||||
dockerfile: /root/fork/open-web-calendar/Dockerfile
|
||||
environment:
|
||||
- HOST=open_web_calendar
|
||||
- PORT=80
|
||||
networks:
|
||||
- nginx
|
||||
entrypoint: python app.py
|
||||
|
||||
# discord_voice_recorder:
|
||||
# image: drv
|
||||
# volumes:
|
||||
# - /srv/discord-voice-recorder/recordings:/usr/src/bot/recordings
|
||||
|
||||
wordpress:
|
||||
image: wordpress
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- nginx
|
||||
- wordpress
|
||||
env_file:
|
||||
- data/secrets/wordpress.env
|
||||
volumes:
|
||||
- /srv/wordpress:/var/www/html
|
||||
depends_on:
|
||||
- wordpress_mysql
|
||||
|
||||
wordpress_mysql:
|
||||
image: mysql
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- data/secrets/wordpress.env
|
||||
networks:
|
||||
- wordpress
|
||||
volumes:
|
||||
- /srv/wordpress_mysql:/var/lib/mysql
|
||||
|
||||
business:
|
||||
image: wordpress
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- nginx
|
||||
- business
|
||||
env_file:
|
||||
- data/secrets/business.env
|
||||
volumes:
|
||||
- /srv/business:/var/www/html
|
||||
depends_on:
|
||||
- business_mysql
|
||||
|
||||
business_mysql:
|
||||
image: mysql
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- data/secrets/business.env
|
||||
networks:
|
||||
- business
|
||||
volumes:
|
||||
- /srv/business_mysql:/var/lib/mysql
|
||||
|
||||
oxivia:
|
||||
image: wordpress
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- data/secrets/oxivia.env
|
||||
volumes:
|
||||
- /srv/oxivia:/var/www/html
|
||||
- ./data/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
|
||||
networks:
|
||||
- nginx
|
||||
- oxivia
|
||||
depends_on:
|
||||
- oxivia_mysql
|
||||
|
||||
oxivia_mysql:
|
||||
image: mysql
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- data/secrets/oxivia.env
|
||||
volumes:
|
||||
- /srv/oxivia_mysql:/var/lib/mysql
|
||||
networks:
|
||||
- oxivia
|
||||
|
||||
samba:
|
||||
image: dperson/samba
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /:/mount
|
||||
ports:
|
||||
- "139:139"
|
||||
- "445:445"
|
||||
|
||||
plantuml:
|
||||
image: plantuml/plantuml-server:tomcat
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- nginx
|
||||
|
||||
nextcloud:
|
||||
image: nextcloud
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- nextcloud:/var/www/html
|
||||
env_file:
|
||||
- ./data/secrets/nextcloud.env
|
||||
networks:
|
||||
- nextcloud
|
||||
- nginx
|
||||
depends_on:
|
||||
- nextcloud_mariadb
|
||||
|
||||
nextcloud_mariadb:
|
||||
image: mariadb
|
||||
restart: unless-stopped
|
||||
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
||||
volumes:
|
||||
- nextcloud_mariadb:/var/lib/mysql
|
||||
env_file:
|
||||
- ./data/secrets/nextcloud.env
|
||||
networks:
|
||||
- nextcloud
|
||||
|
||||
searx:
|
||||
image: searx/searx
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./data/searx:/etc/searx
|
||||
# environment:
|
||||
# - PORT=80
|
||||
# - BASE_URL=http://localhost:$PORT
|
||||
networks:
|
||||
- nginx
|
||||
|
||||
todolist:
|
||||
image: marcpartensky/je-todoapp-react
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: /root/je/todoapp/react
|
||||
dockerfile: /root/je/todoapp/react/Dockerfile
|
||||
environment:
|
||||
- PORT=80
|
||||
- SPRING_API_URL=https://api.todolist.marcpartensky.com
|
||||
depends_on:
|
||||
- todolist_api
|
||||
networks:
|
||||
- nginx
|
||||
# entrypoint: ["/bin/sh", "-c", "'SPRING_API_URL=https://api.todolist.marcpartensky.com serve -s build'"]
|
||||
|
||||
todolist_api:
|
||||
image: marcpartensky/je-todoapp-spring-api
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: /root/je/todoapp/spring-api
|
||||
dockerfile: /root/je/todoapp/spring-api/Dockerfile
|
||||
env_file:
|
||||
- ./data/secrets/todolist.env
|
||||
environment:
|
||||
- PORT=80
|
||||
- POSTGRES_HOST=todolist_db
|
||||
depends_on:
|
||||
- todolist_db
|
||||
networks:
|
||||
- todolist_api
|
||||
- nginx
|
||||
|
||||
todolist_db:
|
||||
image: postgres
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /srv/todolist/db:/var/lib/postgresql/data
|
||||
env_file:
|
||||
- ./data/secrets/todolist.env
|
||||
networks:
|
||||
- todolist_api
|
||||
|
||||
openvpn:
|
||||
image: kylemanna/openvpn
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
ports:
|
||||
- "1194:1194/udp"
|
||||
volumes:
|
||||
- /srv/openvpn:/etc/openvpn
|
||||
networks:
|
||||
- nginx
|
||||
- nextcloud
|
||||
- website
|
||||
- wordpress
|
||||
- gitea
|
||||
- elk
|
||||
- box
|
||||
- todolist_api
|
||||
- discord
|
||||
|
||||
watchtower:
|
||||
image: containrrr/watchtower
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ~/.docker/config.json:/config.json
|
||||
networks:
|
||||
- nginx
|
||||
command: --interval 10 --http-api-metrics --http-api-token demotoken --debug docker_prometheus_1 docker_grafana_1
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./data/prometheus:/etc/prometheus
|
||||
- /srv/prometheus:/prometheus
|
||||
# ports:
|
||||
# - "9090:9090"
|
||||
user: root
|
||||
networks:
|
||||
- nginx
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana
|
||||
restart: unless-stopped
|
||||
# ports:
|
||||
# - "3000:3000"
|
||||
environment:
|
||||
GF_INSTALL_PLUGINS: grafana-clock-panel,grafana-simple-json-datasource
|
||||
user: root
|
||||
volumes:
|
||||
- ./data/grafana:/etc/grafana/provisioning
|
||||
- /srv/grafana:/var/lib/grafana
|
||||
networks:
|
||||
- nginx
|
||||
|
||||
gitea:
|
||||
image: gitea/gitea:1.14.1
|
||||
restart: unless-stopped
|
||||
# user: git
|
||||
environment:
|
||||
- USER=git
|
||||
- USER_UID=1004
|
||||
- USER_GID=1004
|
||||
env_file:
|
||||
- ./data/secrets/gitea.env
|
||||
networks:
|
||||
- gitea
|
||||
- nginx
|
||||
volumes:
|
||||
- /home/git/.ssh/:/data/git/.ssh
|
||||
# - /srv/gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "7012:22"
|
||||
depends_on:
|
||||
- gitea_postgres
|
||||
|
||||
gitea_postgres:
|
||||
image: postgres
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ./data/secrets/gitea.env
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- /srv/gitea_postgres:/var/lib/postgresql/data
|
||||
|
||||
archlinux:
|
||||
image: archlinux
|
||||
restart: unless-stopped
|
||||
stdin_open: true
|
||||
tty: true
|
||||
volumes:
|
||||
- /srv/archlinux:/root
|
||||
|
||||
poiret:
|
||||
image: poiret
|
||||
restart: unless-stopped
|
||||
build:
|
||||
context: /root/git/poiret
|
||||
networks:
|
||||
- nginx
|
||||
|
||||
healingpath:
|
||||
image: marcpartensky/brainperformer
|
||||
restart: unless-stopped
|
||||
# user: healingpath
|
||||
build:
|
||||
context: /root/git/brainperformer
|
||||
env_file: ./data/secrets/healingpath.env
|
||||
networks:
|
||||
- healingpath
|
||||
- nginx
|
||||
depends_on:
|
||||
- healingpath_db
|
||||
|
||||
healingpath_db:
|
||||
image: mysql
|
||||
restart: unless-stopped
|
||||
# user: healingpath
|
||||
env_file: ./data/secrets/healingpath.env
|
||||
volumes:
|
||||
- /srv/healingpath/db:/var/lib/mysql
|
||||
networks:
|
||||
- healingpath
|
||||
|
||||
volumes:
|
||||
letsencrypt:
|
||||
nextcloud:
|
||||
nextcloud_mariadb:
|
||||
|
||||
networks:
|
||||
healingpath:
|
||||
nextcloud:
|
||||
website:
|
||||
nginx:
|
||||
wordpress:
|
||||
business:
|
||||
gitea:
|
||||
elk:
|
||||
box:
|
||||
todolist_api:
|
||||
discord:
|
||||
oxivia:
|
||||
# traefik:
|
||||
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
traefik
|
||||
website
|
||||
valentin
|
||||
open-web-calendar
|
||||
adguard
|
||||
servant
|
||||
discord
|
||||
docker-api
|
||||
ialab
|
||||
portainer
|
||||
authentik
|
||||
nextcloud
|
||||
jenkins
|
||||
seafile
|
||||
matrix
|
||||
etherpad
|
||||
pritunl
|
||||
pritunl-mongo
|
||||
fail2ban
|
||||
ldap
|
||||
ldap-manager
|
||||
vaultwarden
|
||||
authentik
|
||||
@@ -1,80 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
if ! [ -x "$(command -v docker-compose)" ]; then
|
||||
echo 'Error: docker-compose is not installed.' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
domains=(marcpartensky.com www.marcpartensky.com)
|
||||
rsa_key_size=4096
|
||||
data_path="./data/certbot"
|
||||
email="" # Adding a valid address is strongly recommended
|
||||
staging=0 # Set to 1 if you're testing your setup to avoid hitting request limits
|
||||
|
||||
if [ -d "$data_path" ]; then
|
||||
read -p "Existing data found for $domains. Continue and replace existing certificate? (y/N) " decision
|
||||
if [ "$decision" != "Y" ] && [ "$decision" != "y" ]; then
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -e "$data_path/conf/options-ssl-nginx.conf" ] || [ ! -e "$data_path/conf/ssl-dhparams.pem" ]; then
|
||||
echo "### Downloading recommended TLS parameters ..."
|
||||
mkdir -p "$data_path/conf"
|
||||
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf > "$data_path/conf/options-ssl-nginx.conf"
|
||||
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem > "$data_path/conf/ssl-dhparams.pem"
|
||||
echo
|
||||
fi
|
||||
|
||||
echo "### Creating dummy certificate for $domains ..."
|
||||
path="/etc/letsencrypt/live/$domains"
|
||||
mkdir -p "$data_path/conf/live/$domains"
|
||||
docker-compose run --rm --entrypoint "\
|
||||
openssl req -x509 -nodes -newkey rsa:$rsa_key_size -days 1\
|
||||
-keyout '$path/privkey.pem' \
|
||||
-out '$path/fullchain.pem' \
|
||||
-subj '/CN=localhost'" certbot
|
||||
echo
|
||||
|
||||
|
||||
echo "### Starting nginx ..."
|
||||
docker-compose up --force-recreate -d nginx
|
||||
echo
|
||||
|
||||
echo "### Deleting dummy certificate for $domains ..."
|
||||
docker-compose run --rm --entrypoint "\
|
||||
rm -Rf /etc/letsencrypt/live/$domains && \
|
||||
rm -Rf /etc/letsencrypt/archive/$domains && \
|
||||
rm -Rf /etc/letsencrypt/renewal/$domains.conf" certbot
|
||||
echo
|
||||
|
||||
|
||||
echo "### Requesting Let's Encrypt certificate for $domains ..."
|
||||
#Join $domains to -d args
|
||||
domain_args=""
|
||||
for domain in "${domains[@]}"; do
|
||||
domain_args="$domain_args -d $domain"
|
||||
done
|
||||
|
||||
# Select appropriate email arg
|
||||
case "$email" in
|
||||
"") email_arg="--register-unsafely-without-email" ;;
|
||||
*) email_arg="--email $email" ;;
|
||||
esac
|
||||
|
||||
# Enable staging mode if needed
|
||||
if [ $staging != "0" ]; then staging_arg="--staging"; fi
|
||||
|
||||
docker-compose run --rm --entrypoint "\
|
||||
certbot certonly --webroot -w /var/www/certbot \
|
||||
$staging_arg \
|
||||
$email_arg \
|
||||
$domain_args \
|
||||
--rsa-key-size $rsa_key_size \
|
||||
--agree-tos \
|
||||
--force-renewal" certbot
|
||||
echo
|
||||
|
||||
echo "### Reloading nginx ..."
|
||||
docker-compose exec nginx nginx -s reload
|
||||
@@ -0,0 +1,43 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
adguard:
|
||||
image: adguard/adguardhome
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 53:53/tcp
|
||||
- 53:53/udp
|
||||
- 67:67/udp
|
||||
- 68:68/udp # adguard home as dhcp
|
||||
# - 80:80/tcp # https/dns-over-https
|
||||
# - 443:443/tcp
|
||||
# - 443:443/udp
|
||||
# - 3000:3000/tcp # adguard home's admin
|
||||
- 853:853/tcp # dns-over-tls
|
||||
- 784:784/udp # dns-over-quic
|
||||
- 853:853/udp
|
||||
- 8853:8853/udp
|
||||
- 5443:5443/tcp # dnscrypt server
|
||||
- 5443:5443/udp
|
||||
volumes:
|
||||
- adguard:/opt/adguardhome/work
|
||||
- ../data/adguard:/opt/adguardhome/conf
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.adguard.rule: >
|
||||
Host(`adguard.marcpartensky.com`) ||
|
||||
Host(`adguard.marcpartensky.fr`)
|
||||
traefik.http.routers.adguard.entrypoints: websecure
|
||||
traefik.http.routers.adguard.tls.certresolver: cloudflare
|
||||
traefik.http.services.adguard.loadbalancer.server.port: 3000
|
||||
traefik.http.routers.adguard.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
adguard:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,19 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
agenda_militant:
|
||||
image: marcpartensky/agenda-militant
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
caddy: agenda.militant.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.agenda_militant.rule: Host(`agenda.militant.marcpartensky.com`)
|
||||
traefik.http.routers.agenda_militant.entrypoints: websecure
|
||||
traefik.http.routers.agenda_militant.tls.certresolver: tls
|
||||
traefik.http.services.agenda_militant.loadbalancer.server.port: 8080
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,27 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
android:
|
||||
image: budtmo/docker-android-x86-12.0
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
# - "6080:6080"
|
||||
- "5554:5554"
|
||||
- "5555:5555"
|
||||
- "4723:4723"
|
||||
environment:
|
||||
DEVICE: "Samsung Galaxy S6"
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.android.rule: >
|
||||
Host(`android.marcpartensky.fr`)
|
||||
traefik.http.routers.android.entrypoints: websecure
|
||||
traefik.http.routers.android.tls.certresolver: cloudflare
|
||||
traefik.http.services.android.loadbalancer.server.port: 6080
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,56 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
arch:
|
||||
image: marcpartensky/arch:vnc
|
||||
restart: unless-stopped
|
||||
ports: # vnc is shared
|
||||
- "5900:5900"
|
||||
networks:
|
||||
- caddy
|
||||
- ldap
|
||||
volumes:
|
||||
- arch:/home/marc
|
||||
deploy:
|
||||
labels:
|
||||
caddy: arch.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.arch.rule: Host(`arch.marcpartensky.com`)
|
||||
traefik.http.routers.arch.entrypoints: websecure
|
||||
traefik.http.routers.arch.tls.certresolver: tls
|
||||
traefik.http.services.arch.loadbalancer.server.port: 8080
|
||||
# traefik.http.routers.arch.middlewares: ldap_auth, sablier
|
||||
#
|
||||
# # sablier
|
||||
# # The sablier URL service, must be reachable from the Traefik instance
|
||||
# traefik.http.middlewares.sablier.plugin.sablierUrl: http://sablier:10000
|
||||
# # Comma separated names of containers/services/deployments etc.
|
||||
# traefik.http.middlewares.sablier.plugin.names: arch
|
||||
# # The session duration after which containers/services/deployments instances are shutdown
|
||||
# traefik.http.middlewares.sablier.plugin.sessionDuration: 1m
|
||||
# # You can only use one strategy at a time
|
||||
# # To do so, only declare `dynamic` or `blocking`
|
||||
#
|
||||
# # Dynamic strategy, provides the waiting webui
|
||||
# # (Optional) Defaults to the middleware name
|
||||
# traefik.http.middlewares.sablier.plugin.dynamic.displayName: Starting application
|
||||
# # (Optional) Set to true or false to show details specifcally for this middleware, unset to use Sablier server defaults
|
||||
# traefik.http.middlewares.sablier.plugin.dynamic.showDetails: "true"
|
||||
# # (Optional) The theme to use
|
||||
# traefik.http.middlewares.sablier.plugin.dynamic.theme: hacker-terminal
|
||||
# # (Optional) The loading page refresh frequency
|
||||
# traefik.http.middlewares.sablier.plugin.dynamic.refreshFrequency: 5s
|
||||
#
|
||||
# # Blocking strategy, waits until services are up and running
|
||||
# # but will not wait more than `timeout`
|
||||
# # blocking:
|
||||
# # timeout: 1m
|
||||
|
||||
volumes:
|
||||
arch:
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,45 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
authelia:
|
||||
image: authelia/authelia
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 9091
|
||||
environment:
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- ../data/authelia:/config
|
||||
networks:
|
||||
- authelia
|
||||
- caddy
|
||||
labels:
|
||||
caddy: authelia.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 9091}}"
|
||||
traefik.enable: true
|
||||
traefik.http.routers.authelia.rule: Host(`authelia.marcpartensky.com`)
|
||||
traefik.http.routers.authelia.entrypoints: websecure
|
||||
traefik.http.routers.authelia.tls: true
|
||||
traefik.http.routers.authelia.tls.certresolver: tls
|
||||
traefik.http.middlewares.authelia.forwardauth.address: http://authelia:9091/api/verify?rd=https://authelia.marcpartensky.com # yamllint disable-line rule:line-length
|
||||
traefik.http.middlewares.authelia.forwardauth.trustForwardHeader: true
|
||||
traefik.http.middlewares.authelia.forwardauth.authResponseHeaders: Remote-User,Remote-Groups,Remote-Name,Remote-Email # yamllint disable-line rule:line-length
|
||||
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 6379
|
||||
environment:
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- authelia_redis:/data
|
||||
networks:
|
||||
- authelia
|
||||
|
||||
volumes:
|
||||
authelia_redis:
|
||||
|
||||
networks:
|
||||
authelia:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,119 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
authentik:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
|
||||
restart: unless-stopped
|
||||
command: server
|
||||
environment:
|
||||
AUTHENTIK_DEBUG: "true"
|
||||
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
|
||||
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: admin
|
||||
# WORKERS: 2
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
# ports:
|
||||
# - "0.0.0.0:${AUTHENTIK_PORT_HTTP:-9000}:9000"
|
||||
# - "0.0.0.0:${AUTHENTIK_PORT_HTTPS:-9443}:9443"
|
||||
volumes:
|
||||
- media:/media
|
||||
- templates:/templates
|
||||
- geoip:/geoip
|
||||
# depends_on:
|
||||
# - postgres
|
||||
# - redis
|
||||
# - worker
|
||||
networks:
|
||||
- authentik
|
||||
- caddy
|
||||
- postgres
|
||||
- redis
|
||||
- ldap
|
||||
labels:
|
||||
caddy: authentik.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 9000}}"
|
||||
# traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.com`)
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.authentik.rule: Host(`authentik.marcpartensky.fr`)
|
||||
traefik.http.routers.authentik.entrypoints: websecure
|
||||
traefik.http.routers.authentik.tls.certresolver: cloudflare
|
||||
traefik.http.services.authentik.loadbalancer.server.port: 9000
|
||||
|
||||
worker:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.2.1}
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
command: worker
|
||||
environment:
|
||||
AUTHENTIK_REDIS__HOST: redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: postgres
|
||||
AUTHENTIK_ERROR_REPORTING__ENABLED: "false"
|
||||
# This is optional, and can be removed. If you remove this, the following will happen
|
||||
# - The permissions for the /backups and /media folders aren't fixed, so make sure they are 1000:1000
|
||||
# - The docker socket can't be accessed anymore
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /srv/authentik:/backups
|
||||
- media:/media
|
||||
- certs:/certs
|
||||
- templates:/templates
|
||||
- geoip:/geoip
|
||||
env_file:
|
||||
- ../data/secrets/authentik.env
|
||||
networks:
|
||||
- authentik
|
||||
- postgres
|
||||
- redis
|
||||
|
||||
# authentik_geoipupdate:
|
||||
# image: maxmindinc/geoipupdate:latest
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - authentik_geoip:/usr/share/GeoIP
|
||||
# environment:
|
||||
# GEOIPUPDATE_EDITION_IDS: "GeoLite2-City"
|
||||
# GEOIPUPDATE_FREQUENCY: "8"
|
||||
# # env_file:
|
||||
# # - ../data/secrets/authentik.env
|
||||
# networks:
|
||||
# - authentik
|
||||
# version: "3.5"
|
||||
|
||||
ldap:
|
||||
image: ghcr.io/goauthentik/ldap
|
||||
ports:
|
||||
- 3389:389
|
||||
- 6636:636
|
||||
# Optionally specify which networks the container should be
|
||||
# might be needed to reach the core authentik server
|
||||
networks:
|
||||
- authentik
|
||||
environment:
|
||||
AUTHENTIK_DEBUG: "true"
|
||||
AUTHENTIK_HOST: http://authentik:9000
|
||||
# AUTHENTIK_HOST: https://authentik:9443
|
||||
# AUTHENTIK_HOST: https://authentik.marcpartensky.fr
|
||||
AUTHENTIK_INSECURE: "false"
|
||||
env_file:
|
||||
- ../data/secrets/authentik_ldap.env
|
||||
|
||||
volumes:
|
||||
# backups:
|
||||
postgres:
|
||||
media:
|
||||
certs:
|
||||
templates:
|
||||
geoip:
|
||||
|
||||
networks:
|
||||
authentik:
|
||||
ldap:
|
||||
external: true
|
||||
redis:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,35 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
beef:
|
||||
image: marcpartensky/beef
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
- "6789:6789"
|
||||
- "61985:61985"
|
||||
- "61986:61986"
|
||||
volumes:
|
||||
- beef:/root/.ms4f
|
||||
- /tmp/beef:/tmp/data
|
||||
- ../data/beef/config.yaml:/beef/config.yaml
|
||||
labels:
|
||||
caddy: beef.marcpartensky.com"
|
||||
caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
caddy.@ws.0_header: "Connection *Upgrade*"
|
||||
caddy.@ws.1_header: "Upgrade websocket"
|
||||
caddy.0_reverse_proxy: "@ws {{upstreams 61985}}"
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.beef.rule: Host(`beef.marcpartensky.com`)
|
||||
traefik.http.routers.beef.rule: Host(`beef.marcpartensky.fr`)
|
||||
traefik.http.routers.beef.entrypoints: websecure
|
||||
traefik.http.routers.beef.tls.certresolver: tls
|
||||
traefik.http.services.beef.loadbalancer.server.port: 3000
|
||||
|
||||
volumes:
|
||||
beef:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,26 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
burpserver:
|
||||
image: pschiffe/burp-server
|
||||
ports:
|
||||
- "4971:4971"
|
||||
volumes:
|
||||
- conf:/etc/burp
|
||||
- data:/var/spool/burp
|
||||
environment:
|
||||
BURP_CLIENTS_CONFIG: "host1:pass1 host2:pass2 host3:pass3"
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
privileged: true
|
||||
# deploy:
|
||||
# labels:
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.burpserver.rule: Host(`burp.marcpartensky.fr`)
|
||||
# traefik.http.routers.burpserver.entrypoints: websecure
|
||||
# traefik.http.routers.burpserver.tls.certresolver: tls
|
||||
# traefik.http.services.burpserver.loadbalancer.server.port: 4971
|
||||
|
||||
volumes:
|
||||
conf:
|
||||
data:
|
||||
@@ -0,0 +1,55 @@
|
||||
version: "3.9"
|
||||
|
||||
configs:
|
||||
caddy-basic-content:
|
||||
file: ../data/caddy/Caddyfile
|
||||
labels:
|
||||
caddy:
|
||||
|
||||
services:
|
||||
caddy:
|
||||
image: marcpartensky/caddy
|
||||
ports:
|
||||
- "80:80"
|
||||
# - "443:443"
|
||||
environment:
|
||||
CADDY_INGRESS_NETWORKS: caddy
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- caddy_data:/data
|
||||
- ../data/caddy/Caddyfile:/etc/Caddyfile
|
||||
networks:
|
||||
caddy:
|
||||
# ipv4_address: 10.0.0.1
|
||||
logging:
|
||||
# syslog?
|
||||
options:
|
||||
max-size: 5m
|
||||
max-file: "10"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "localhost:80"]
|
||||
deploy:
|
||||
labels: # Global options
|
||||
caddy.email: marc@marcpartensky.com
|
||||
update_config:
|
||||
parallelism: 1
|
||||
delay: 5s
|
||||
order: start-first
|
||||
failure_action: rollback
|
||||
rollback_config:
|
||||
order: start-first
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
# restart_policy:
|
||||
# condition: any
|
||||
resources:
|
||||
reservations:
|
||||
cpus: '1'
|
||||
memory: 500M
|
||||
volumes:
|
||||
caddy_data:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,54 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
cadvisor:
|
||||
# image: google/cadvisor:v0.39.0
|
||||
# image: google/cadvisor
|
||||
image: gcr.io/cadvisor/cadvisor
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:rw
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker:/var/lib/docker:ro
|
||||
command:
|
||||
- '-docker_only'
|
||||
- '-logtostderr'
|
||||
# - '-storage-driver=influxdb'
|
||||
# - '-storage-opt=host=swarm-manager1:8086'
|
||||
# - '-storage-opt=database=cadvisor'
|
||||
# - '-storage-opt=retention=1d'
|
||||
# - '-storage-opt=user=root'
|
||||
# - '-storage-opt=password=yourpassword'
|
||||
# - '-housekeeping_interval=5s'
|
||||
# - '-enable_load_reader'
|
||||
# - '-cpu_global_percentage=true'
|
||||
# - '-cpu_historic_interval=1m'
|
||||
# - '-docker_label_enable'
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
resources:
|
||||
limits:
|
||||
memory: 1g
|
||||
reservations:
|
||||
memory: 512m
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
mode: global
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.cadvisor.rule: Host(`cadvisor.marcpartensky.fr`)
|
||||
# traefik.http.routers.cadvisor.rule: >
|
||||
# Host(`cadvisor.marcpartensky.com`) || Host(`cadvisor.marcpartensky.fr`)
|
||||
traefik.http.routers.cadvisor.entrypoints: websecure
|
||||
traefik.http.routers.cadvisor.tls.certresolver: tls
|
||||
traefik.http.services.cadvisor.loadbalancer.server.port: 8080
|
||||
traefik.http.routers.cadvisor.middlewares: ldap_auth
|
||||
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,6 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
chatgpt:
|
||||
image: wongsaang/chatgpt-ui:latest
|
||||
ports:
|
||||
- "8000:80"
|
||||
@@ -0,0 +1,17 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
cowrie:
|
||||
image: rayson/cowrie:20160907-1
|
||||
user: cowrie
|
||||
ports:
|
||||
- "22:2222/tcp"
|
||||
- "23:2223/tcp"
|
||||
environment:
|
||||
COWRIE_TELNET_ENABLED: "yes"
|
||||
volumes:
|
||||
- cowrie:/opt/cowrie/data:Z
|
||||
- cowrie-log:/opt/cowrie/log:Z
|
||||
|
||||
volumes:
|
||||
cowrie:
|
||||
cowrie-log:
|
||||
@@ -0,0 +1,21 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
controller:
|
||||
image: cybercube/crafty-controller
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.controller.loadbalancer.server.port: 8000
|
||||
traefik.http.routers.controller.rule: Host(`controller.marcpartensky.fr`)
|
||||
# traefik.http.routers.controller.rule: >
|
||||
# Host(`controller.marcpartensky.com`) || Host(`controller.marcpartensky.fr`)
|
||||
traefik.http.routers.controller.entrypoints: websecure
|
||||
# traefik.http.routers.controller.tls.certresolver: tls
|
||||
traefik.http.routers.controller.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.controller.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,29 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
ui:
|
||||
image: alseambusher/crontab-ui
|
||||
networks:
|
||||
- caddy
|
||||
# ports:
|
||||
# - 8000:8000
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- crontabs:/crontab-ui/crontabs
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.ui.loadbalancer.server.port: 8000
|
||||
traefik.http.routers.ui.rule: >
|
||||
Host(`cron.marcpartensky.com`) ||
|
||||
Host(`cron.marcpartensky.fr`)
|
||||
traefik.http.routers.ui.entrypoints: websecure
|
||||
# traefik.http.routers.ui.tls.certresolver: tls
|
||||
traefik.http.routers.ui.tls.certresolver: cloudflare
|
||||
traefik.http.routers.ui.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
crontabs:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,47 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
discord_bot_mongo:
|
||||
image: mongo
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- discord_bot_mongo:/data/db
|
||||
networks:
|
||||
- discord
|
||||
ports:
|
||||
- "27017:27017"
|
||||
env_file:
|
||||
- ../data/secrets/discord_bot_mongo.env
|
||||
# healthcheck:
|
||||
# test: CMD echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet
|
||||
|
||||
discord_mongo_express:
|
||||
image: mongo-express
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ME_CONFIG_OPTIONS_EDITORTHEME: "ambiance"
|
||||
env_file:
|
||||
- ../data/secrets/discord_mongo_express.env
|
||||
networks:
|
||||
- discord
|
||||
- caddy
|
||||
depends_on:
|
||||
- discord_bot_mongo
|
||||
labels:
|
||||
caddy: mongo.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8081}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.mongo.rule: Host(`mongo.marcpartensky.com`)
|
||||
traefik.http.routers.mongo.entrypoints: websecure
|
||||
traefik.http.routers.mongo.tls.certresolver: tls
|
||||
traefik.http.services.mongo.loadbalancer.server.port: 80
|
||||
|
||||
volumes:
|
||||
discord_bot_mongo:
|
||||
|
||||
networks:
|
||||
discord:
|
||||
caddy:
|
||||
external: true
|
||||
attachable: true
|
||||
driver: overlay
|
||||
@@ -0,0 +1,34 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
bot:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7010:8000"
|
||||
networks:
|
||||
- discord
|
||||
env_file:
|
||||
- ../data/secrets/discord-bot.env
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
ia:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7011:8000"
|
||||
networks:
|
||||
- discord
|
||||
env_file:
|
||||
- ../data/secrets/ia.env
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
chatgpt:
|
||||
image: xxxbrian/discord_chatgpt_bot:latest
|
||||
env_file:
|
||||
- ../data/secrets/discord_chatgpt.env
|
||||
|
||||
networks:
|
||||
discord:
|
||||
@@ -0,0 +1,22 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
docker_api:
|
||||
image: marcpartensky/docker-api
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- discord
|
||||
|
||||
# db:
|
||||
# image: postgres
|
||||
# container_name: docker-app-db
|
||||
# restart: unless-stopped
|
||||
# environment:
|
||||
# POSTGRES_USER: docker_user
|
||||
# POSTGRES_PASSWORD: d3kTrklm54208
|
||||
# POSTGRES_DB: docker
|
||||
|
||||
networks:
|
||||
discord:
|
||||
@@ -0,0 +1,8 @@
|
||||
version: "3.3"
|
||||
services:
|
||||
dockercraft:
|
||||
image: gaetan/dockercraft
|
||||
ports:
|
||||
- "25567:25565"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:Z
|
||||
@@ -0,0 +1,28 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
dockvpn:
|
||||
image: alekslitvinenk/openvpn
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
networks:
|
||||
- caddy
|
||||
devices:
|
||||
- /dev/net/tun
|
||||
ports:
|
||||
- 1194:1194/udp
|
||||
- 8080:8080/tcp
|
||||
volumes:
|
||||
- ../data/dockvpn:/opt/Dockovpn_data/clients
|
||||
environment:
|
||||
HOST_ADDR: vpn.marcpartensky.fr
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.dockvpn.rule: >
|
||||
Host(`dockvpn.marcpartensky.fr`)
|
||||
traefik.http.routers.dockvpn.entrypoints: websecure
|
||||
traefik.http.routers.dockvpn.tls.certresolver: cloudflare
|
||||
traefik.http.services.dockvpn.loadbalancer.server.port: 8080
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,37 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
duplicati:
|
||||
image: lscr.io/linuxserver/duplicati:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: Europe/Paris
|
||||
# CLI_ARGS: #optional
|
||||
volumes:
|
||||
- /srv:/srv
|
||||
- duplicati_config:/config
|
||||
- duplicati_backups:/backups
|
||||
- duplicati_source:/source
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.duplicati.loadbalancer.server.port: 8200
|
||||
traefik.http.routers.duplicati.rule: >
|
||||
Host(`duplicati.marcpartensky.com`) ||
|
||||
Host(`duplicati.marcpartensky.fr`)
|
||||
traefik.http.routers.duplicati.entrypoints: websecure
|
||||
traefik.http.routers.duplicati.tls.certresolver: tls
|
||||
# traefik.http.routers.duplicati.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
duplicati_config:
|
||||
duplicati_backups:
|
||||
duplicati_source:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,7 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
image: fazalfarhan01/earnapp:lite
|
||||
volumes:
|
||||
- earnapp:/etc/earnapp
|
||||
environment:
|
||||
EARNAPP_UUID: $EARNAPP_DEVICE_ID
|
||||
@@ -0,0 +1,34 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
etesync:
|
||||
image: victorrds/etesync
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
env_file:
|
||||
- ../data/secrets/etesync.env
|
||||
volumes:
|
||||
- static:/srv/etebase/static
|
||||
- media:/data/media
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.etesync.loadbalancer.server.port: 3735
|
||||
traefik.http.routers.etesync.rule: >
|
||||
# Host(`etesync.marcpartensky.com`) ||
|
||||
Host(`etesync.marcpartensky.fr`)
|
||||
traefik.http.routers.etesync.entrypoints: websecure
|
||||
traefik.http.routers.etesync.tls.certresolver: tls
|
||||
# traefik.http.routers.etesync.tls.certresolver: cloudflare
|
||||
# traefik.http.routers.etesync.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
static:
|
||||
media:
|
||||
@@ -0,0 +1,39 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
etherpad:
|
||||
image: etherpad/etherpad
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/etherpad.env
|
||||
# environment:
|
||||
# SETTINGS_PATH: /etc/etherpad/settings.json
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
# volumes:
|
||||
# - data:/opt/etherpad-lite/var
|
||||
# volumes:
|
||||
# - ../data/etherpad/settings.json:/opt/etherpad-lite/settings.json
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.etherpad.rule: >
|
||||
Host(`pad.marcpartensky.com`) ||
|
||||
Host(`pad.marcpartensky.fr`)
|
||||
traefik.http.routers.etherpad.entrypoints: websecure
|
||||
traefik.http.routers.etherpad.tls.certresolver: cloudflare
|
||||
traefik.http.services.etherpad.loadbalancer.server.port: 9001
|
||||
traefik.http.middlewares.redirect-pad-com.redirectregex.regex: "^https://etherpad.marcpartensky.com/(.*)"
|
||||
traefik.http.middlewares.redirect-pad-com.redirectregex.replacement: "https://pad.marcpartensky.com/$${1}"
|
||||
traefik.http.middlewares.redirect-pad-fr.redirectregex.regex: "^https://etherpad.marcpartensky.fr/(.*)"
|
||||
traefik.http.middlewares.redirect-pad-fr.redirectregex.replacement: "https://pad.marcpartensky.fr/$${1}"
|
||||
|
||||
# volumes:
|
||||
# data:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
@@ -0,0 +1,18 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
fail2ban:
|
||||
image: crazymax/fail2ban:latest
|
||||
restart: unless-stopped
|
||||
network_mode: "host"
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
volumes:
|
||||
- fail2ban:/data
|
||||
- /var/log:/var/log:ro
|
||||
env_file:
|
||||
- ../data/secrets/fail2ban.env
|
||||
|
||||
volumes:
|
||||
fail2ban:
|
||||
@@ -0,0 +1,10 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
feroxbuster:
|
||||
image: epi052/feroxbuster
|
||||
volumes:
|
||||
- /srv/feroxbuster:/srv
|
||||
command: >
|
||||
-u http://ravens-pu8yvgzavpu7ooyr.francecentral.cloudapp.azure.com
|
||||
-x php
|
||||
--wordlist /srv/rockyou.txt
|
||||
@@ -0,0 +1,31 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
filebrowser:
|
||||
image: hurlenko/filebrowser
|
||||
restart: unless-stopped
|
||||
# user: "${UID}:${GID}"
|
||||
volumes:
|
||||
- /root/Videos:/data
|
||||
- ../data/filebrowser:/config
|
||||
# environment:
|
||||
# FB_BASEURL: /filebrowser
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.filebrowser.rule: >
|
||||
Host(`file.marcpartensky.fr`) ||
|
||||
Host(`file.marcpartensky.com`)
|
||||
traefik.http.routers.filebrowser.entrypoints: websecure
|
||||
traefik.http.routers.filebrowser.tls.certresolver: tls
|
||||
traefik.http.services.filebrowser.loadbalancer.server.port: 8080
|
||||
traefik.http.routers.filebrowser.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
data:
|
||||
@@ -0,0 +1,31 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
focalboard:
|
||||
image: mattermost/focalboard
|
||||
volumes:
|
||||
- data:/opt/focalboard/data
|
||||
- pack:/opt/focalboard/pack
|
||||
- ../data/focalboard/config.json:/opt/focalboard/config.json
|
||||
environment:
|
||||
EXCLUDE_ENTERPRISE: "1"
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.focalboard.rule: >
|
||||
Host(`board.marcpartensky.com`) || Host(`board.marcpartensky.fr`)
|
||||
traefik.http.routers.focalboard.entrypoints: websecure
|
||||
# traefik.http.routers.focalboard.tls.certresolver: tls
|
||||
traefik.http.services.focalboard.loadbalancer.server.port: 8000
|
||||
# traefik.http.routers.focalboard.middlewares: ldap_auth
|
||||
|
||||
volumes:
|
||||
data:
|
||||
pack:
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,31 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
fuseki:
|
||||
image: stain/jena-fuseki
|
||||
volumes:
|
||||
# - ./config:/fuseki/configuration
|
||||
- data:/fuseki/databases
|
||||
# environment:
|
||||
# - FUSEKI_HOME=/fuseki
|
||||
# - FUSEKI_BASE=/fuseki/databases
|
||||
env_file:
|
||||
- ../data/secrets/fuseki.env
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.fuseki.rule: Host(`fuseki.marcpartensky.com`)
|
||||
traefik.http.services.fuseki.loadbalancer.server.port: 3030
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
data:
|
||||
@@ -0,0 +1,25 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
gitbook:
|
||||
image: marcpartensky/gitbook
|
||||
# image: billryan/gitbook
|
||||
# image: yanqd0/gitbook
|
||||
restart: unless-stopped
|
||||
# volumes:
|
||||
# - ../data/gitbook:/gitbook
|
||||
environment:
|
||||
# BOOK_URL: https://github.com/marcpartensky/docker
|
||||
BOOK_URL: https://github.com/marcpartensky/markdown
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.gitbook.rule: Host(`gitbook.marcpartensky.com`)
|
||||
traefik.http.routers.gitbook.entrypoints: websecure
|
||||
traefik.http.routers.gitbook.tls.certresolver: tls
|
||||
traefik.http.services.gitbook.loadbalancer.server.port: 4000
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,50 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.14.6
|
||||
restart: unless-stopped
|
||||
# user: git
|
||||
# environment:
|
||||
# - USER=git
|
||||
# - USER_UID=1004
|
||||
# - USER_GID=1004
|
||||
env_file:
|
||||
- ../data/secrets/gitea.env
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
volumes:
|
||||
- ssh:/data/git/.ssh
|
||||
- data:/data
|
||||
# - /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "42070:22"
|
||||
# labels:
|
||||
# caddy: gitea.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.gitea.rule: Host(`git.marcpartensky.com`)
|
||||
# traefik.http.routers.gitea.entrypoints: websecure
|
||||
# traefik.http.routers.gitea.tls.certresolver: tls
|
||||
# traefik.http.services.gitea.loadbalancer.server.port: 3000
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.gitea.rule: >
|
||||
Host(`git.marcpartensky.com`) ||
|
||||
Host(`git.marcpartensky.fr`)
|
||||
traefik.http.routers.gitea.entrypoints: websecure
|
||||
# traefik.http.routers.gitea.tls.certresolver: tls
|
||||
traefik.http.routers.gitea.tls.certresolver: cloudflare
|
||||
traefik.http.services.gitea.loadbalancer.server.port: 3000
|
||||
|
||||
volumes:
|
||||
data:
|
||||
ssh:
|
||||
|
||||
networks:
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,56 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
gitlab:
|
||||
image: gitlab/gitlab-ee:latest
|
||||
restart: unless-stopped
|
||||
hostname: gitlab.marcpartensky.com
|
||||
environment:
|
||||
GITLAB_OMNIBUS_CONFIG: |
|
||||
external_url 'http://gitlab.marcpartensky.com'
|
||||
gitlab_rails['gitlab_shell_ssh_port'] = 7020
|
||||
ports:
|
||||
- '7020:22'
|
||||
networks:
|
||||
- caddy
|
||||
volumes:
|
||||
- gitlab_config:/etc/gitlab
|
||||
- gitlab_log:/var/log/gitlab
|
||||
- gitlab_data:/var/opt/gitlab
|
||||
labels:
|
||||
caddy: gitlab.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams http 80}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.gitlab.rule: Host(`gitlab.marcpartensky.com`)
|
||||
traefik.http.routers.gitlab.entrypoints: websecure
|
||||
traefik.http.routers.gitlab.tls.certresolver: tls
|
||||
traefik.http.services.gitlab.loadbalancer.server.port: 80
|
||||
# shm_size: '512m'
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.gitlab.rule: Host(`gitlab.marcpartensky.com`)
|
||||
traefik.http.routers.gitlab.entrypoints: websecure
|
||||
traefik.http.routers.gitlab.tls.certresolver: tls
|
||||
traefik.http.services.gitlab.loadbalancer.server.port: 80
|
||||
resources:
|
||||
reservations:
|
||||
cpus: "1"
|
||||
# memory: "512M"
|
||||
memory: "3G"
|
||||
|
||||
gitlab-runner:
|
||||
image: gitlab/gitlab-runner:alpine
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 2
|
||||
|
||||
volumes:
|
||||
gitlab_config:
|
||||
gitlab_log:
|
||||
gitlab_data:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,36 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
gluetun:
|
||||
image: qmcgaw/gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
env_file:
|
||||
- ../data/secrets/gluetun.env
|
||||
# environment:
|
||||
# # VPN_SERVICE_PROVIDER: protonvpn
|
||||
# # VPN_SERVICE_PROVIDER: openvpn
|
||||
# OPENVPN_USER: marcpartensky
|
||||
# OPENVPN_PASSWORD: Lxxxxxxxxxyyyyyxxxxn
|
||||
# # SERVER_COUNTRIES: France
|
||||
# # FREE_ONLY: on # Only required when using ProtonVPN's free service
|
||||
ports:
|
||||
- 9091:9091
|
||||
- 51413:51413
|
||||
- 51413:51413/udp # Application container's ports to be published
|
||||
networks:
|
||||
- vpn
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.services.gluetun.loadbalancer.server.port: 8000
|
||||
traefik.http.routers.gluetun.rule: Host(`gluetun.marcpartensky.com`)
|
||||
traefik.http.routers.gluetun.entrypoints: websecure
|
||||
traefik.http.routers.gluetun.tls.certresolver: tls
|
||||
traefik.http.routers.gluetun.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
vpn:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,7 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
gpg:
|
||||
image: marcpartensky/gpg
|
||||
volumes:
|
||||
- /srv:/srv
|
||||
- ../data/gpg:/root/keys
|
||||
@@ -0,0 +1,38 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
grafana:
|
||||
image: grafana/grafana
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- ../data/secrets/grafana.env
|
||||
# environment:
|
||||
# GF_INSTALL_PLUGINS: grafana-ldap-auth
|
||||
volumes:
|
||||
- ../data/grafana:/etc/grafana
|
||||
- grafana:/var/lib/grafana
|
||||
networks:
|
||||
- caddy
|
||||
- postgres
|
||||
- ldap
|
||||
deploy:
|
||||
labels:
|
||||
caddy: grafana.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.grafana.rule: >
|
||||
Host(`grafana.marcpartensky.fr`) ||
|
||||
Host(`grafana.marcpartensky.com`)
|
||||
traefik.http.routers.grafana.entrypoints: websecure
|
||||
traefik.http.routers.grafana.tls.certresolver: tls
|
||||
traefik.http.services.grafana.loadbalancer.server.port: 3000
|
||||
|
||||
volumes:
|
||||
grafana:
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,37 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
heimdall:
|
||||
image: lscr.io/linuxserver/heimdall:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: France/Paris
|
||||
volumes:
|
||||
- ../data/heimdall:/config
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: heimdall.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
|
||||
traefik.http.routers.heimdall.entrypoints: websecure
|
||||
traefik.http.routers.heimdall.tls: "true"
|
||||
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.source: marcpartensky.com
|
||||
# traefik.http.middlewares.test-ldap-auth.plugin.ldapAuth.baseDN: dc=marcpartensky,dc=com
|
||||
# traefik.http.services.heimdall.loadbalancer.server.port: 80
|
||||
# traefik.http.routers.heimdall.middlewares: authelia-basic@docker
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.heimdall.rule: Host(`heimdall.marcpartensky.com`)
|
||||
traefik.http.routers.heimdall.entrypoints: websecure
|
||||
traefik.http.routers.heimdall.tls.certresolver: tls
|
||||
traefik.http.services.heimdall.loadbalancer.server.port: 80
|
||||
traefik.http.routers.duplicati.middlewares: ldap_auth
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,10 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
homeassistant:
|
||||
restart: unless-stopped
|
||||
image: ghcr.io/home-assistant/home-assistant:stable
|
||||
volumes:
|
||||
- config:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
privileged: true
|
||||
network_mode: host
|
||||
@@ -0,0 +1,30 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
homer:
|
||||
image: b4bz/homer
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- homer:/www/assets
|
||||
environment:
|
||||
INIT_ASSETS: 1 # default
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: homer.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.homer.rule: >
|
||||
Host(`homer.marcpartensky.com`) ||
|
||||
Host(`homer.marcpartensky.fr`)
|
||||
traefik.http.routers.homer.entrypoints: websecure
|
||||
traefik.http.routers.homer.tls.certresolver: tls
|
||||
traefik.http.services.homer.loadbalancer.server.port: 8080
|
||||
|
||||
volumes:
|
||||
homer:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,6 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
honeygain:
|
||||
image: marcpartensky/honeygain
|
||||
env_file:
|
||||
- ../data/secrets/honeygain.env
|
||||
@@ -0,0 +1,16 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
hydra:
|
||||
image: marcpartensky/hydra:latest
|
||||
network_mode: host
|
||||
env_file:
|
||||
- ../data/secrets/hydra.env
|
||||
# command: -P /rockyou.txt -L /usernames.txt ssh://192.168.252.18
|
||||
# workdir: /root
|
||||
volumes:
|
||||
- ../data/hydra/rockyou.txt:/rockyou.txt
|
||||
- ../data/hydra/usernames.txt:/usernames.txt
|
||||
- hydra:/root
|
||||
|
||||
volumes:
|
||||
hydra:
|
||||
@@ -0,0 +1,19 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ia:
|
||||
image: marcpartensky/discord-bot
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "7011:8000"
|
||||
networks:
|
||||
- discord
|
||||
depends_on:
|
||||
- docker_api
|
||||
env_file:
|
||||
- ../data/secrets/ia.env
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
networks:
|
||||
discord:
|
||||
@@ -0,0 +1,31 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ialab:
|
||||
image: marcpartensky/ialab:latest
|
||||
# volumes:
|
||||
# - ialab:/app
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: ialab.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8000}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ialab.rule: Host(`ialab.marcpartensky.com`)
|
||||
traefik.http.routers.ialab.entrypoints: websecure
|
||||
traefik.http.routers.ialab.tls.certresolver: tls
|
||||
traefik.http.services.ialab.loadbalancer.server.port: 80
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ialab.rule: Host(`ialab.marcpartensky.com`)
|
||||
traefik.http.routers.ialab.entrypoints: websecure
|
||||
traefik.http.routers.ialab.tls.certresolver: tls
|
||||
traefik.http.services.ialab.loadbalancer.server.port: 80
|
||||
|
||||
# volumes:
|
||||
# ialab:
|
||||
#
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,65 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
ipfs:
|
||||
restart: unless-stopped
|
||||
image: lscr.io/linuxserver/ipfs
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: Europe/Paris
|
||||
volumes:
|
||||
- ipfs:/config
|
||||
- /srv/:/srv
|
||||
networks:
|
||||
- caddy
|
||||
ports:
|
||||
# - 80:80 #dumb http client
|
||||
# - 443:443 #optional
|
||||
- 4001:4001
|
||||
- 5001:5001
|
||||
- 8080:8080
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.1'
|
||||
memory: 500M
|
||||
# reservations:
|
||||
# cpus: '0.1'
|
||||
# memory: 100M
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.com`)
|
||||
traefik.http.routers.ipfs.rule: Host(`ipfs.marcpartensky.fr`)
|
||||
# traefik.http.routers.ipfs.rule: >
|
||||
# Host(`ipfs.marcpartensky.com`) || Host(`ipfs.marcpartensky.fr`)
|
||||
# traefik.http.routers.ipfs.entrypoints: websecure
|
||||
# traefik.http.routers.ipfs.tls.certresolver: tls
|
||||
traefik.http.routers.ipfs.tls.certresolver: cloudflare
|
||||
traefik.http.services.ipfs.loadbalancer.server.port: 5001
|
||||
traefik.http.routers.ifps.middlewares: ldap_auth
|
||||
# traefik.frontend.redirect.regex: ^https://ipfs.marcpartensky.com$$
|
||||
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
|
||||
# traefik.http.routers.ifps.middlewares: add-context
|
||||
#
|
||||
# # here is the logic provided by gustavomtborges of this gist:
|
||||
# traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
|
||||
# traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
|
||||
#
|
||||
traefik.http.routers.ipfs.middlewares: custom_repath
|
||||
traefik.http.middlewares.custom_repath.replacepathregex.regex: ^/$$
|
||||
traefik.http.middlewares.custom_repath.replacepathregex.replacement: /webui
|
||||
|
||||
# the middleware 'add-context' must be defined so that the regex rules can be attached to it
|
||||
traefik.http.routers.ipfs.middlewares: add-context
|
||||
|
||||
# here is the logic provided by gustavomtborges of this gist:
|
||||
traefik.http.middlewares.add-context.redirectregex.regex: ^https:\\/\\/([^\\/]+)\\/?$$
|
||||
traefik.http.middlewares.add-context.redirectregex.replacement: https://$$1/webui
|
||||
|
||||
|
||||
volumes:
|
||||
ipfs:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,15 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
ipsec:
|
||||
image: hwdsl2/ipsec-vpn-server
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
ports:
|
||||
- "500:500/udp"
|
||||
- "4500:4500/udp"
|
||||
volumes:
|
||||
- ikev2-vpn:/etc/ipsec.d
|
||||
- /lib/modules:/lib/modules:ro
|
||||
|
||||
volumes:
|
||||
ikev2-vpn:
|
||||
@@ -0,0 +1,47 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
jellyfin:
|
||||
image: jellyfin/jellyfin:latest
|
||||
environment:
|
||||
# PUID: 1000
|
||||
# PGID: 1000
|
||||
# TZ: Europe/Paris
|
||||
JELLYFIN_PublishedServerUrl: jellyfin.marcpartensky.fr
|
||||
devices:
|
||||
- /dev/dri
|
||||
volumes:
|
||||
- config:/config
|
||||
- cache:/cache
|
||||
- media:/media
|
||||
- movies:/movies
|
||||
- musics:/musics
|
||||
- photos:/photos
|
||||
- ~/Videos/Youtube:/videos
|
||||
# ports:
|
||||
# - 8920:8920 #optional https self signed
|
||||
# - 7359:7359/udp #optional lan discovery
|
||||
# - 1900:1900/udp #optional dnla
|
||||
networks:
|
||||
- caddy
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.jellyfin.rule: >
|
||||
Host(`jellyfin.marcpartensky.fr`) ||
|
||||
Host(`jellyfin.marcpartensky.com`)
|
||||
traefik.http.routers.jellyfin.entrypoints: websecure
|
||||
traefik.http.routers.jellyfin.tls.certresolver: tls
|
||||
traefik.http.services.jellyfin.loadbalancer.server.port: 8096
|
||||
|
||||
volumes:
|
||||
config:
|
||||
cache:
|
||||
media:
|
||||
movies:
|
||||
musics:
|
||||
photos:
|
||||
videos:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,28 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jenkins:
|
||||
image: jenkins/jenkins:lts-jdk11
|
||||
user: root
|
||||
volumes:
|
||||
- jenkins:/var/jenkins_home
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- caddy
|
||||
# ports:
|
||||
# - "50000:50000"
|
||||
labels:
|
||||
caddy: jenkins.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.jenkins.rule: Host(`jenkins.marcpartensky.com`)
|
||||
traefik.http.routers.jenkins.entrypoints: websecure
|
||||
traefik.http.routers.jenkins.tls.certresolver: tls
|
||||
traefik.http.services.jenkins.loadbalancer.server.port: 8080
|
||||
|
||||
volumes:
|
||||
jenkins:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,46 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jupyterhub:
|
||||
image: marcpartensky/jupyterhub
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ../data/jupyterhub/jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py
|
||||
# - jupyterhub:/srv/jupyterhub
|
||||
networks:
|
||||
- ldap
|
||||
- caddy
|
||||
- jupyterhub
|
||||
environment:
|
||||
# DOCKER_IMAGE: marcpartensky/jupyterlab
|
||||
DOCKER_IMAGE: jupyterhub/singleuser
|
||||
DOCKER_NETWORK_NAME: caddy
|
||||
HUB_IP: jupyterhub
|
||||
DOCKER_HOST: unix:///var/run/docker.sock
|
||||
labels:
|
||||
caddy: jupyterhub.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8000}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.jupyterhub.rule: Host(`jupyterhub.marcpartensky.com`)
|
||||
traefik.http.routers.jupyterhub.entrypoints: websecure
|
||||
traefik.http.routers.jupyterhub.tls.certresolver: tls
|
||||
traefik.http.services.jupyterhub.loadbalancer.server.port: 8000
|
||||
# traefik.docker.network: jupyterhub_default
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.jupyterhub.rule: Host(`jupyterhub.marcpartensky.com`)
|
||||
traefik.http.routers.jupyterhub.rule: Host(`hub.marcpartensky.fr`)
|
||||
traefik.http.routers.jupyterhub.entrypoints: websecure
|
||||
traefik.http.routers.jupyterhub.tls.certresolver: tls
|
||||
traefik.http.services.jupyterhub.loadbalancer.server.port: 8000
|
||||
|
||||
networks:
|
||||
jupyterhub:
|
||||
name: jupyterhub
|
||||
driver: overlay
|
||||
caddy:
|
||||
external: true
|
||||
ldap:
|
||||
external: true
|
||||
@@ -0,0 +1,53 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
jupyterlab:
|
||||
# image: jupyter/datascience-notebook:latest
|
||||
image: marcpartensky/jupyterlab
|
||||
# restart: unless-stopped
|
||||
environment:
|
||||
# - GEN_CERT=yes
|
||||
JUPYTER_ENABLE_LAB: "yes"
|
||||
GRANT_SUDO: "yes"
|
||||
JUPYTER_CONFIG_DIR: /home/jupyter/.jupyter
|
||||
# entrypoint: python -m jupyter lab
|
||||
# entrypoint: start.sh jupyter lab --user root
|
||||
networks:
|
||||
- caddy
|
||||
# labels:
|
||||
# caddy: lab.marcpartensky.com
|
||||
# caddy.reverse_proxy: "{{upstreams 8888}}"
|
||||
# traefik.enable: "true"
|
||||
# traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.com`)
|
||||
# traefik.http.routers.jupyterlab.entrypoints: websecure
|
||||
# traefik.http.routers.jupyterlab.tls.certresolver: tls
|
||||
# traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
|
||||
# volumes:
|
||||
# - jupyterlab:/home/jupyter
|
||||
# - ../data/jupyterlab/:/home/jupyter/.jupyter/
|
||||
deploy:
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.jupyterlab.rule: Host(`lab.marcpartensky.fr`)
|
||||
traefik.http.routers.jupyterlab.rule: >
|
||||
Host(`lab.marcpartensky.fr`) && Host(`lab.marcpartensky.com`)
|
||||
traefik.http.routers.jupyterlab.entrypoints: websecure
|
||||
traefik.http.routers.jupyterlab.tls.certresolver: cloudflare
|
||||
traefik.http.services.jupyterlab.loadbalancer.server.port: 8888
|
||||
# entrypoint: start-notebook.sh \
|
||||
# --NotebookApp.keyfile=key/0000_key-certbot.pem
|
||||
# --NotebookApp.certfile=cert/0000_csr-certbot.pem
|
||||
# volumes:
|
||||
# - /etc/letsencrypt/keys:/home/jovyan/work/key
|
||||
# - /etc/letsencrypt/csr:/home/jovyan/work/cert
|
||||
# - /etc/letsencrypt:/etc/letsencrypt
|
||||
#
|
||||
volumes:
|
||||
jupyterlab:
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,29 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
keycloak:
|
||||
image: quay.io/keycloak/keycloak:19.0.3
|
||||
env_file:
|
||||
- ../data/secrets/keycloak.env
|
||||
networks:
|
||||
- caddy
|
||||
# command: start-dev
|
||||
command: start --optimized
|
||||
labels:
|
||||
caddy: keycloak.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.keycloak.rule: Host(`keycloak.marcpartensky.com`)
|
||||
traefik.http.routers.keycloak.entrypoints: websecure
|
||||
traefik.http.routers.keycloak.tls.certresolver: tls
|
||||
traefik.http.services.keycloak.loadbalancer.server.port: 8080
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.keycloak.rule: Host(`keycloak.marcpartensky.com`)
|
||||
traefik.http.routers.keycloak.entrypoints: websecure
|
||||
traefik.http.routers.keycloak.tls.certresolver: tls
|
||||
traefik.http.services.keycloak.loadbalancer.server.port: 8080
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,6 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
kippo:
|
||||
image: tomdesinto/kippo
|
||||
ports:
|
||||
- "22:22"
|
||||
@@ -0,0 +1,14 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
languagetool:
|
||||
image: erikvl87/languagetool
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- caddy
|
||||
labels:
|
||||
caddy: languagetoo.marcpartensky.com
|
||||
caddy.reverse_proxy: "{{ upstreams 8010 }}"
|
||||
|
||||
networks:
|
||||
caddy:
|
||||
external: true
|
||||
@@ -0,0 +1,48 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
ldap_manager_go:
|
||||
image: romnn/ldap-manager
|
||||
# command: --generate
|
||||
env_file:
|
||||
- ../data/secrets/ldap_manager_go.env
|
||||
networks:
|
||||
- ldap
|
||||
- caddy
|
||||
environment:
|
||||
HTTP_PORT: 80
|
||||
LDAP_HOST: "ldap"
|
||||
LDAP_PORT: 636
|
||||
# LDAP_ADMIN_PASSWORD: admin
|
||||
# LDAP_CONFIG_PASSWORD: config
|
||||
|
||||
LDAP_ORGANIZATION: Marc Partensky
|
||||
# LDAP_DOMAIN: marcpartensky.com
|
||||
LDAP_DOMAIN: marcpartensky.fr
|
||||
DAP_BASE_DN: dc=admin,dc=org
|
||||
|
||||
# DEFAULT_ADMIN_USERNAME: ldapadmin
|
||||
# DEFAULT_ADMIN_PASSWORD: changeme
|
||||
# FORCE_CREATE_ADMIN: "true"
|
||||
|
||||
LDAP_TLS: "false"
|
||||
LDAP_USE_RFC2307BIS: "true"
|
||||
|
||||
ISSUER: ldap@marcpartensky.com
|
||||
AUDIENCE: marcpartensky.com
|
||||
GENERATE: "true" # ports:
|
||||
# - 9090:9090
|
||||
deploy:
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
# traefik.http.routers.ldap_manager_go.rule: Host(`ldapgo.marcpartensky.com`)
|
||||
traefik.http.routers.ldap_manager_go.rule: >
|
||||
Host(`ldapgo.marcpartensky.com`) || Host(`ldapgo.marcpartensky.fr`)
|
||||
traefik.http.routers.ldap_manager_go.entrypoints: websecure
|
||||
traefik.http.routers.ldap_manager_go.tls.certresolver: tls
|
||||
traefik.http.services.ldap_manager_go.loadbalancer.server.port: 80
|
||||
|
||||
networks:
|
||||
ldap:
|
||||
external: true
|
||||
caddy:
|
||||
external: true
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user