Compare commits

93 Commits

Author SHA1 Message Date
090b437186 Merge pull request 'fix' (#145) from master into dev
Reviewed-on: #145
2025-09-15 01:39:53 +03:00
Egor Matveev
f6371f8813 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 11s
Deploy Dev / Push (pull_request) Successful in 15s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 22s
2025-09-15 01:39:13 +03:00
62e301ec5b Merge pull request 'master' (#143) from master into dev
Reviewed-on: #143
2025-09-15 00:12:28 +03:00
Egor Matveev
1af2cfa4e2 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 9s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 16s
Deploy Dev / Deploy dev (pull_request) Successful in 19s
Deploy Prod / Build (pull_request) Successful in 14s
Deploy Prod / Push (pull_request) Successful in 12s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 26s
2025-09-15 00:12:03 +03:00
Egor Matveev
975ae0cedc fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 21s
Deploy Prod / Push (pull_request) Successful in 11s
Deploy Prod / prepare (pull_request) Successful in 9s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
2025-09-15 00:06:34 +03:00
9fad7dd21a Merge pull request 'master' (#140) from master into dev
Reviewed-on: #140
2025-09-14 23:32:42 +03:00
Egor Matveev
0ba70d2e60 fix
Some checks are pending
Deploy Dev / Build (pull_request) Successful in 1m22s
Deploy Dev / Push (pull_request) Successful in 47s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 20s
Deploy Prod / Deploy prod (pull_request) Blocked by required conditions
Deploy Prod / Build (pull_request) Successful in 32s
Deploy Prod / Push (pull_request) Successful in 46s
Deploy Prod / prepare (pull_request) Successful in 4s
2025-09-14 23:32:16 +03:00
Egor Matveev
5a7d51e253 fix 2025-09-14 23:31:24 +03:00
Egor Matveev
e4670693cd Merge branch 'master' of https://gitea.chocomarsh.com/self/infra 2025-09-14 23:18:27 +03:00
0877334a4b Update nginx/nginx-dev/prepare.py 2025-09-14 23:17:22 +03:00
d6669a1d11 Update nginx/nginx-prod/prepare.py 2025-09-14 23:16:57 +03:00
Egor Matveev
90b875752b fix 2025-09-10 10:11:00 +03:00
Egor Matveev
557aae3678 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 16s
Deploy Prod / Push (pull_request) Successful in 16s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 33s
2025-07-12 10:28:05 +03:00
Egor Matveev
501769b234 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 14s
Deploy Prod / Push (pull_request) Successful in 15s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 34s
2025-07-12 10:20:46 +03:00
Egor Matveev
f784e8b45b fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 16s
Deploy Prod / Push (pull_request) Successful in 15s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 34s
2025-07-12 10:17:07 +03:00
Egor Matveev
b0284f699b fix
Some checks failed
Deploy Prod / Build (pull_request) Successful in 15s
Deploy Prod / Push (pull_request) Successful in 14s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Failing after 17s
2025-07-12 10:12:01 +03:00
Egor Matveev
d394210099 fix
Some checks failed
Deploy Prod / Build (pull_request) Successful in 9s
Deploy Prod / Push (pull_request) Successful in 13s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Failing after 14s
2025-07-12 10:09:29 +03:00
Egor Matveev
af5414d0bb fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 20s
Deploy Prod / Push (pull_request) Successful in 20s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 37s
2025-07-11 22:46:14 +03:00
Egor Matveev
41a063fb51 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 16s
Deploy Prod / Push (pull_request) Successful in 19s
Deploy Prod / prepare (pull_request) Successful in 9s
Deploy Prod / Deploy prod (pull_request) Successful in 39s
2025-07-11 22:28:48 +03:00
Egor Matveev
e4a6d0e057 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 15s
Deploy Prod / Push (pull_request) Successful in 19s
Deploy Prod / prepare (pull_request) Successful in 9s
Deploy Prod / Deploy prod (pull_request) Successful in 38s
2025-07-11 22:22:55 +03:00
Egor Matveev
b1b239a208 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 18s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 34s
2025-07-11 22:18:44 +03:00
Egor Matveev
dbbdece191 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 9s
Deploy Prod / Push (pull_request) Successful in 18s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 33s
2025-07-11 22:07:09 +03:00
Egor Matveev
b12ffd4320 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 18s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 33s
2025-07-11 21:50:00 +03:00
Egor Matveev
11462e658e fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 18s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 33s
2025-07-11 21:25:11 +03:00
Egor Matveev
0635632b13 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 13s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 32s
2025-07-11 21:20:19 +03:00
Egor Matveev
a51eecd553 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 17s
Deploy Prod / Push (pull_request) Successful in 18s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 39s
2025-07-11 21:03:22 +03:00
Egor Matveev
3a073fd7c9 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 16s
Deploy Prod / Push (pull_request) Successful in 19s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 37s
2025-07-11 20:35:56 +03:00
Egor Matveev
4b5dd750dd fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 16s
Deploy Prod / Push (pull_request) Successful in 20s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 36s
2025-07-11 20:23:46 +03:00
Egor Matveev
dc9a4c78fb fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 13s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 5s
Deploy Prod / Deploy prod (pull_request) Successful in 36s
2025-07-11 19:56:41 +03:00
Egor Matveev
d339eb1d2a fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 31s
2025-07-11 19:50:10 +03:00
Egor Matveev
20fed38b6a fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 32s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 38s
2025-07-10 18:43:01 +03:00
Egor Matveev
08868f4388 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 13s
Deploy Prod / Push (pull_request) Successful in 11s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 40s
2025-07-10 18:18:29 +03:00
Egor Matveev
cafd2be45a fix
Some checks failed
Deploy Prod / Build (pull_request) Successful in 3m27s
Deploy Prod / Push (pull_request) Successful in 1m43s
Deploy Prod / prepare (pull_request) Successful in 9s
Deploy Prod / Deploy prod (pull_request) Failing after 17s
2025-07-10 18:11:44 +03:00
e486a81e4f Update .deploy-infra/deploy-prod.yaml
All checks were successful
Deploy Prod / Build (pull_request) Successful in 13s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 35s
2025-06-20 17:29:33 +03:00
Egor Matveev
62813a17af fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 20s
Deploy Prod / Push (pull_request) Successful in 11s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 37s
2025-06-20 17:18:56 +03:00
1324c6f0a3 Merge pull request 'master' (#116) from master into dev
Reviewed-on: #116
2025-06-15 00:46:30 +03:00
Egor Matveev
37337a68ab fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 18s
Deploy Dev / Push (pull_request) Successful in 14s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 22s
2025-06-15 00:44:42 +03:00
Egor Matveev
f35bbf3548 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 10s
Deploy Prod / Push (pull_request) Successful in 14s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
2025-06-14 23:01:01 +03:00
Egor Matveev
3b5541e98a fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 6s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
2025-06-14 22:55:04 +03:00
Egor Matveev
76c072e36a fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 9s
Deploy Prod / Push (pull_request) Successful in 14s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 31s
2025-06-14 22:45:29 +03:00
Egor Matveev
c9ab3ab442 fix 2025-06-14 22:45:10 +03:00
Egor Matveev
1da6bf7cb8 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 6s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 28s
2025-06-14 22:40:36 +03:00
Egor Matveev
41be37ca66 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 6s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 29s
2025-06-14 22:34:58 +03:00
Egor Matveev
c25c56b27b fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 6s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 29s
2025-06-14 22:29:39 +03:00
150337c17d Update .deploy-infra/deploy-prod.yaml
All checks were successful
Deploy Prod / Build (pull_request) Successful in 11s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 32s
2025-06-14 20:21:34 +03:00
5efa8a98da Update .deploy-infra/deploy-prod.yaml
Some checks failed
Deploy Prod / Build (pull_request) Successful in 11s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 5s
Deploy Prod / Deploy prod (pull_request) Failing after 15s
2025-06-14 20:12:21 +03:00
13b4fbbd69 Update .deploy-infra/deploy-prod.yaml
Some checks failed
Deploy Prod / Build (pull_request) Successful in 10s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Failing after 15s
2025-06-14 20:10:11 +03:00
3f32593755 Update .deploy-infra/deploy-prod.yaml
Some checks failed
Deploy Prod / Build (pull_request) Successful in 10s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Failing after 14s
2025-06-14 20:06:30 +03:00
8890a24d56 Update .deploy-infra/deploy-prod.yaml
All checks were successful
Deploy Prod / Build (pull_request) Successful in 11s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 31s
2025-06-14 19:55:35 +03:00
fc6f0e7694 Update .deploy-infra/deploy-prod.yaml
Some checks failed
Deploy Prod / Build (pull_request) Successful in 15s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Failing after 16s
2025-06-14 19:52:53 +03:00
Egor Matveev
16b3adc2e3 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 7s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 29s
2025-06-14 13:01:20 +03:00
Egor Matveev
3aeb01a6ca fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 19s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 8s
Deploy Prod / Deploy prod (pull_request) Successful in 33s
2025-06-14 12:42:20 +03:00
Egor Matveev
6ebd7f5930 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 6s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 31s
2025-06-14 04:43:51 +03:00
Egor Matveev
506b71dc35 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 15s
Deploy Prod / Push (pull_request) Successful in 15s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 31s
2025-06-14 03:37:23 +03:00
05523cd797 Merge pull request 'fix' (#99) from master into dev
Reviewed-on: #99
2025-06-14 03:14:18 +03:00
Egor Matveev
3e8e12a153 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 11s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 23s
2025-06-14 03:13:58 +03:00
f0a258a422 Merge pull request 'fix' (#98) from master into dev
Reviewed-on: #98
2025-06-14 03:06:09 +03:00
Egor Matveev
3e045ef3ca fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 10s
Deploy Dev / Push (pull_request) Successful in 8s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 20s
2025-06-14 03:05:50 +03:00
8bdb1f6a17 Merge pull request 'fix' (#97) from master into dev
Reviewed-on: #97
2025-06-14 03:01:41 +03:00
Egor Matveev
8696b5e003 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 2m15s
Deploy Dev / Push (pull_request) Successful in 49s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 21s
2025-06-14 03:01:15 +03:00
02b3f3c740 Merge pull request 'fix' (#95) from master into dev
Reviewed-on: #95
2025-06-13 01:57:27 +03:00
Egor Matveev
6e8dc3126e fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 10s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 22s
Deploy Prod / Build (pull_request) Successful in 9s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 5s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
2025-06-13 01:57:06 +03:00
04acdbf72b Merge pull request 'fix' (#94) from master into dev
Reviewed-on: #94
2025-06-13 01:55:21 +03:00
Egor Matveev
e8727274c3 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 9s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 21s
2025-06-13 01:54:59 +03:00
a24c79752d Merge pull request 'fix' (#91) from master into dev
Reviewed-on: #91
2025-06-12 22:12:52 +03:00
Egor Matveev
036f4bb2a9 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 10s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
Deploy Dev / Build (pull_request) Successful in 12s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 19s
2025-06-12 22:12:08 +03:00
ce89f22545 Merge pull request 'master' (#89) from master into dev
Reviewed-on: #89
2025-06-12 13:45:01 +03:00
Egor Matveev
861327a017 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 15s
Deploy Dev / Push (pull_request) Successful in 14s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 21s
Deploy Prod / Build (pull_request) Successful in 14s
Deploy Prod / Push (pull_request) Successful in 15s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 34s
2025-06-12 13:44:20 +03:00
Egor Matveev
e174ff26c4 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 15s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
2025-06-12 13:26:50 +03:00
e00d0b63e7 Merge pull request 'fix' (#87) from master into dev
Reviewed-on: #87
2025-06-12 13:08:05 +03:00
Egor Matveev
1f3bdc2bd3 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 8s
Deploy Dev / Push (pull_request) Successful in 16s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 19s
2025-06-12 13:07:39 +03:00
223b6ac8a1 Merge pull request 'fix' (#86) from master into dev
Reviewed-on: #86
2025-06-12 12:53:30 +03:00
Egor Matveev
119d030552 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 8s
Deploy Dev / Push (pull_request) Successful in 16s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 19s
2025-06-12 12:53:13 +03:00
df0fdfe2e4 Merge pull request 'fix' (#85) from master into dev
Reviewed-on: #85
2025-06-12 01:57:43 +03:00
Egor Matveev
1b7979e37f fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 19s
Deploy Dev / Push (pull_request) Successful in 16s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 21s
2025-06-12 01:57:25 +03:00
e968457afa Merge pull request 'fix' (#83) from master into dev
Reviewed-on: #83
2025-06-12 01:02:55 +03:00
Egor Matveev
f38bf04212 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 43s
Deploy Dev / Push (pull_request) Successful in 41s
Deploy Dev / prepare (pull_request) Successful in 5s
Deploy Dev / Deploy dev (pull_request) Successful in 23s
Deploy Prod / Build (pull_request) Successful in 16s
Deploy Prod / Push (pull_request) Successful in 15s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 34s
2025-06-12 01:02:26 +03:00
2c2920d7b5 Merge pull request 'fix' (#82) from master into dev
Reviewed-on: #82
2025-06-10 01:30:46 +03:00
Egor Matveev
7c65fb0d97 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 16s
Deploy Dev / Push (pull_request) Successful in 15s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 21s
2025-06-10 01:30:16 +03:00
15b05eb4cf Merge pull request 'master' (#81) from master into dev
Reviewed-on: #81
2025-06-10 01:27:26 +03:00
Egor Matveev
f43b90c2a5 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 27s
Deploy Dev / Push (pull_request) Successful in 17s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 20s
2025-06-10 01:27:01 +03:00
Egor Matveev
f4dfcea203 fix 2025-06-10 01:26:06 +03:00
cd2e02bb82 Merge pull request 'fix' (#80) from master into dev
Reviewed-on: #80
2025-06-10 01:11:41 +03:00
Egor Matveev
90aaf361bb fix 2025-06-10 01:11:20 +03:00
7e4b38e9da Merge pull request 'fix' (#79) from master into dev
Reviewed-on: #79
2025-06-10 00:41:52 +03:00
Egor Matveev
79b8240592 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 14s
Deploy Dev / Push (pull_request) Successful in 15s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 21s
2025-06-10 00:41:27 +03:00
97ac924c22 Merge pull request 'fix' (#78) from master into dev
Reviewed-on: #78
2025-06-10 00:10:48 +03:00
Egor Matveev
f7a1e39c98 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 22s
Deploy Dev / Push (pull_request) Successful in 20s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 30s
2025-06-10 00:10:23 +03:00
f342e38fea Merge pull request 'fix' (#77) from master into dev
Reviewed-on: #77
2025-06-08 11:47:11 +03:00
Egor Matveev
3a8fde645f fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 11s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 20s
2025-06-08 11:45:52 +03:00
b4bf02cb14 Merge pull request 'master' (#76) from master into dev
Reviewed-on: #76
2025-06-08 11:13:24 +03:00
Egor Matveev
d1212d852b fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 43s
Deploy Dev / Push (pull_request) Successful in 44s
Deploy Dev / prepare (pull_request) Successful in 5s
Deploy Dev / Deploy dev (pull_request) Successful in 25s
2025-06-08 11:12:54 +03:00
Egor Matveev
0994e3b25a fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 11s
Deploy Prod / Push (pull_request) Successful in 11s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 34s
2025-06-04 21:20:11 +03:00
22 changed files with 296 additions and 447 deletions

View File

@@ -7,6 +7,7 @@ services:
networks: networks:
- common-infra-nginx-development - common-infra-nginx-development
- configurator - configurator
- minio-development
environment: environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_DEV MINIO_SECRET_KEY: $MINIO_SECRET_KEY_DEV
ports: ports:
@@ -27,8 +28,29 @@ services:
parallelism: 1 parallelism: 1
# order: stop-first # order: stop-first
clickhouse:
image: clickhouse
networks:
- clickhouse-development
- common-infra-nginx-development
volumes:
- /sprint-data/clickhouse:/var/lib/clickhouse
environment:
CLICKHOUSE_PASSWORD: $CLICKHOUSE_PASSWORD_DEV
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == development]
update_config:
parallelism: 1
postgres: postgres:
image: postgres:14-alpine3.19 image: postgres:14-alpine3.19
networks:
- postgres-development
volumes: volumes:
- /sprint-data/postgres-data:/var/lib/postgresql/data - /sprint-data/postgres-data:/var/lib/postgresql/data
environment: environment:
@@ -55,6 +77,8 @@ services:
mongo: mongo:
image: mongo:6.0.2 image: mongo:6.0.2
networks:
- mongo-development
volumes: volumes:
- /sprint-data/mongo:/data/db - /sprint-data/mongo:/data/db
environment: environment:
@@ -74,29 +98,6 @@ services:
parallelism: 1 parallelism: 1
order: start-first order: start-first
rabbitmq:
image: rabbitmq:3.10.7-management
volumes:
- /sprint-data/rabbitmq:/var/lib/rabbitmq
ports:
- published: 5672
target: 5672
mode: host
- published: 15672
target: 15672
mode: host
environment:
RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD_DEV
deploy:
mode: replicated
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == development]
update_config:
parallelism: 1
order: start-first
redis: redis:
image: redis:alpine3.16 image: redis:alpine3.16
volumes: volumes:
@@ -118,6 +119,8 @@ services:
minio: minio:
image: bitnami/minio:2022.10.8 image: bitnami/minio:2022.10.8
networks:
- minio-development
volumes: volumes:
- minio_data:/data - minio_data:/data
environment: environment:
@@ -146,7 +149,7 @@ services:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- /sprint-data:/sprint-data - /sprint-data:/sprint-data
environment: environment:
GITEA_INSTANCE_URL: https://gitea.sprinthub.ru/ GITEA_INSTANCE_URL: https://gitea.chocomarsh.com/
GITEA_RUNNER_REGISTRATION_TOKEN: $REGISTRATION_TOKEN GITEA_RUNNER_REGISTRATION_TOKEN: $REGISTRATION_TOKEN
GITEA_RUNNER_NAME: dev GITEA_RUNNER_NAME: dev
GITEA_RUNNER_LABELS: dev GITEA_RUNNER_LABELS: dev
@@ -169,3 +172,11 @@ networks:
external: true external: true
configurator: configurator:
external: true external: true
clickhouse-development:
external: true
postgres-development:
external: true
mongo-development:
external: true
minio-development:
external: true

119
.deploy-infra/deploy-prod.yaml Normal file → Executable file
View File

@@ -7,6 +7,7 @@ services:
networks: networks:
- common-infra-nginx - common-infra-nginx
- configurator - configurator
- minio
environment: environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_PROD MINIO_SECRET_KEY: $MINIO_SECRET_KEY_PROD
ports: ports:
@@ -27,8 +28,58 @@ services:
parallelism: 1 parallelism: 1
# order: start-first # order: start-first
grafana:
image: grafana/grafana
networks:
- common-infra-nginx
- clickhouse
volumes:
- /sprint-data/grafana:/var/lib/grafana
environment:
GF_SERVER_ROOT_URL: https://grafana.chocomarsh.com
GF_CORS_ENABLED: "false"
GF_AUTH_DISABLE_LOGIN_FORM: "false"
GF_CORS_ALLOW_ORIGINS: "*"
GF_SECURITY_CONTENT_SECURITY_POLICY: "false"
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
clickhouse:
image: clickhouse
networks:
- clickhouse
volumes:
- /sprint-data/clickhouse:/var/lib/clickhouse
environment:
CLICKHOUSE_PASSWORD: $CLICKHOUSE_PASSWORD_PROD
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
resources:
limits:
memory: 2048M
cpus: '2.0'
reservations:
memory: 1024M
cpus: '1.0'
postgres: postgres:
image: postgres:14-alpine3.19 image: postgres:14-alpine3.19
networks:
- postgres
volumes: volumes:
- /sprint-data/postgres-data:/var/lib/postgresql/data - /sprint-data/postgres-data:/var/lib/postgresql/data
environment: environment:
@@ -60,6 +111,8 @@ services:
mongo: mongo:
image: mongo:6.0.2 image: mongo:6.0.2
networks:
- mongo
volumes: volumes:
- /sprint-data/mongo:/data/db - /sprint-data/mongo:/data/db
environment: environment:
@@ -79,29 +132,6 @@ services:
parallelism: 1 parallelism: 1
order: start-first order: start-first
rabbitmq:
image: rabbitmq:3.10.7-management
volumes:
- /sprint-data/rabbitmq:/var/lib/rabbitmq
ports:
- published: 5672
target: 5672
mode: host
- published: 15672
target: 15672
mode: host
environment:
RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD_PROD
deploy:
mode: replicated
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
order: start-first
redis: redis:
image: redis:alpine3.16 image: redis:alpine3.16
volumes: volumes:
@@ -123,6 +153,8 @@ services:
minio: minio:
image: bitnami/minio:2022.10.8 image: bitnami/minio:2022.10.8
networks:
- minio
volumes: volumes:
- minio_data:/data - minio_data:/data
environment: environment:
@@ -158,7 +190,7 @@ services:
USER_UID: 1000 USER_UID: 1000
USER_GID: 1000 USER_GID: 1000
GITEA__database__DB_TYPE: postgres GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: pg.sprinthub.ru:5432 GITEA__database__HOST: pg.chocomarsh.com:5432
GITEA__database__NAME: gitea GITEA__database__NAME: gitea
GITEA__database__USER: postgres GITEA__database__USER: postgres
GITEA__database__PASSWD: $DB_PASSWORD_PROD GITEA__database__PASSWD: $DB_PASSWORD_PROD
@@ -178,7 +210,7 @@ services:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- /sprint-data:/sprint-data - /sprint-data:/sprint-data
environment: environment:
GITEA_INSTANCE_URL: https://gitea.sprinthub.ru/ GITEA_INSTANCE_URL: https://gitea.chocomarsh.com/
GITEA_RUNNER_REGISTRATION_TOKEN: $REGISTRATION_TOKEN GITEA_RUNNER_REGISTRATION_TOKEN: $REGISTRATION_TOKEN
GITEA_RUNNER_NAME: prod GITEA_RUNNER_NAME: prod
GITEA_RUNNER_LABELS: prod GITEA_RUNNER_LABELS: prod
@@ -192,35 +224,6 @@ services:
parallelism: 1 parallelism: 1
order: start-first order: start-first
keycloak:
image: quay.io/keycloak/keycloak
ports:
- "8443:3000"
environment:
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://0.0.0.0:5432/keycloak
KC_DB_USERNAME: postgres
KC_DB_PASSWORD: $DB_PASSWORD_PROD
KC_HOSTNAME: keycloak.sprinthub.ru
JAVA_OPTS_KC_HEAP: "-XX:MaxHeapFreeRatio=50 -XX:MaxRAMPercentage=65"
command: start
deploy:
mode: replicated
placement:
constraints: [node.labels.stage == production]
restart_policy:
condition: any
update_config:
parallelism: 1
order: start-first
resources:
limits:
cpus: '1.0'
memory: 250M
reservations:
cpus: '0.50'
memory: 125M
volumes: volumes:
minio_data: minio_data:
driver: local driver: local
@@ -234,3 +237,11 @@ networks:
external: true external: true
configurator: configurator:
external: true external: true
clickhouse:
external: true
postgres:
external: true
mongo:
external: true
minio:
external: true

View File

@@ -6,6 +6,9 @@ services:
image: mathwave/sprint-repo:sprint-infra-nginx-dev image: mathwave/sprint-repo:sprint-infra-nginx-dev
networks: networks:
- common-infra-nginx-development - common-infra-nginx-development
- configurator
environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_DEV
ports: ports:
- published: 80 - published: 80
target: 80 target: 80
@@ -27,3 +30,5 @@ services:
networks: networks:
common-infra-nginx-development: common-infra-nginx-development:
external: true external: true
configurator:
external: true

View File

@@ -6,6 +6,9 @@ services:
image: mathwave/sprint-repo:sprint-infra-nginx-prod image: mathwave/sprint-repo:sprint-infra-nginx-prod
networks: networks:
- common-infra-nginx - common-infra-nginx
- configurator
environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_PROD
ports: ports:
- published: 80 - published: 80
target: 80 target: 80
@@ -27,3 +30,5 @@ services:
networks: networks:
common-infra-nginx: common-infra-nginx:
external: true external: true
configurator:
external: true

View File

@@ -19,8 +19,6 @@ jobs:
ref: dev ref: dev
- name: build nginx dev - name: build nginx dev
run: docker build -t mathwave/sprint-repo:sprint-infra-nginx-dev nginx/nginx-dev run: docker build -t mathwave/sprint-repo:sprint-infra-nginx-dev nginx/nginx-dev
- name: build gitea runner
run: docker build -t mathwave/sprint-repo:gitea-runner gitea-runner
push: push:
name: Push name: Push
runs-on: [ prod ] runs-on: [ prod ]
@@ -58,6 +56,7 @@ jobs:
env: env:
MONGO_PASSWORD_DEV: ${{ secrets.MONGO_PASSWORD_DEV }} MONGO_PASSWORD_DEV: ${{ secrets.MONGO_PASSWORD_DEV }}
DB_PASSWORD_DEV: ${{ secrets.POSTGRES_PASSWORD_DEV }} DB_PASSWORD_DEV: ${{ secrets.POSTGRES_PASSWORD_DEV }}
CLICKHOUSE_PASSWORD_DEV: ${{ secrets.CLICKHOUSE_PASSWORD_DEV }}
MINIO_PASSWORD_DEV: ${{ secrets.MINIO_PASSWORD_DEV }} MINIO_PASSWORD_DEV: ${{ secrets.MINIO_PASSWORD_DEV }}
MINIO_SECRET_KEY_DEV: ${{ secrets.MINIO_SECRET_KEY_DEV }} MINIO_SECRET_KEY_DEV: ${{ secrets.MINIO_SECRET_KEY_DEV }}
REDIS_PASSWORD_DEV: ${{ secrets.REDIS_PASSWORD_DEV }} REDIS_PASSWORD_DEV: ${{ secrets.REDIS_PASSWORD_DEV }}

View File

@@ -16,7 +16,7 @@ jobs:
- name: checkout - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
ref: dev ref: prod
- name: build nginx prod - name: build nginx prod
run: docker build -t mathwave/sprint-repo:sprint-infra-nginx-prod nginx/nginx-prod run: docker build -t mathwave/sprint-repo:sprint-infra-nginx-prod nginx/nginx-prod
- name: build gitea runner - name: build gitea runner
@@ -40,7 +40,7 @@ jobs:
- name: checkout - name: checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
ref: dev ref: prod
- name: prepare - name: prepare
run: chmod 777 ./prepare/run-production.sh && ./prepare/run-production.sh run: chmod 777 ./prepare/run-production.sh && ./prepare/run-production.sh
deploy-prod: deploy-prod:
@@ -54,17 +54,19 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
ref: prod ref: prod
- name: deploy swarmpit
run: docker stack deploy --with-registry-auth -c ./.deploy-swarmpit/deploy-prod.yaml swarmpit
- name: deploy portainer - name: deploy portainer
run: docker stack deploy --with-registry-auth -c ./.deploy-portainer/deploy-prod.yaml portainer run: docker stack deploy --with-registry-auth -c ./.deploy-portainer/deploy-prod.yaml portainer
- name: deploy infra - name: deploy infra
env: env:
MONGO_PASSWORD_PROD: ${{ secrets.MONGO_PASSWORD_PROD }} MONGO_PASSWORD_PROD: ${{ secrets.MONGO_PASSWORD_PROD }}
DB_PASSWORD_PROD: ${{ secrets.POSTGRES_PASSWORD_PROD }} DB_PASSWORD_PROD: ${{ secrets.POSTGRES_PASSWORD_PROD }}
CLICKHOUSE_PASSWORD_PROD: ${{ secrets.CLICKHOUSE_PASSWORD_PROD }}
MINIO_PASSWORD_PROD: ${{ secrets.MINIO_PASSWORD_PROD }} MINIO_PASSWORD_PROD: ${{ secrets.MINIO_PASSWORD_PROD }}
MINIO_SECRET_KEY_PROD: ${{ secrets.MINIO_SECRET_KEY_PROD }} MINIO_SECRET_KEY_PROD: ${{ secrets.MINIO_SECRET_KEY_PROD }}
REDIS_PASSWORD_PROD: ${{ secrets.REDIS_PASSWORD_PROD }} REDIS_PASSWORD_PROD: ${{ secrets.REDIS_PASSWORD_PROD }}
RABBITMQ_PASSWORD_PROD: ${{ secrets.RABBITMQ_PASSWORD_PROD }} RABBITMQ_PASSWORD_PROD: ${{ secrets.RABBITMQ_PASSWORD_PROD }}
REGISTRATION_TOKEN: ${{ secrets.REGISTRATION_TOKEN }} REGISTRATION_TOKEN: ${{ secrets.REGISTRATION_TOKEN }}
AUTHTHELIA_JWT_SECRET: ${{ secrets.AUTHTHELIA_JWT_SECRET }}
AUTHTHELIA_SESSION_SECRET: ${{ secrets.AUTHTHELIA_SESSION_SECRET }}
AUTHELIA_STORAGE_ENCRYPTION_KEY: ${{ secrets.AUTHELIA_STORAGE_ENCRYPTION_KEY }}
run: docker stack deploy --with-registry-auth -c ./.deploy-infra/deploy-prod.yaml infra run: docker stack deploy --with-registry-auth -c ./.deploy-infra/deploy-prod.yaml infra

View File

@@ -2,12 +2,12 @@ FROM nginx
RUN apt-get update RUN apt-get update
RUN apt-get install certbot --yes RUN apt-get install certbot --yes
RUN apt-get install python3-certbot-nginx python3-pip --yes RUN apt-get install python3-certbot-nginx python3-pip --yes
RUN pip3 install --break-system-packages requests minio RUN pip3 install --break-system-packages minio
COPY ./config /etc/nginx COPY ./config /etc/nginx
COPY ./fullchain.pem /etc/nginx/fullchain.pem
COPY ./privkey.pem /etc/nginx/privkey.pem
COPY prepare.py prepare.py COPY prepare.py prepare.py
COPY run.sh run.sh COPY run.sh run.sh
COPY refre.sh refre.sh
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
RUN chmod 777 run.sh RUN chmod 777 run.sh
RUN chmod 777 refre.sh
ENTRYPOINT ["./run.sh"] ENTRYPOINT ["./run.sh"]

View File

@@ -8,6 +8,17 @@ http {
'' close; '' close;
} }
server {
listen 80;
server_name *.develop.sprinthub.ru;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name *.dev.chocomarsh.com;
return 301 https://$host$request_uri;
}
include ./hosts.conf; include ./hosts.conf;
include ./sprinthub.conf;
} }

View File

@@ -1,118 +0,0 @@
server {
listen 80;
server_name *.develop.sprinthub.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name swarmpit.develop.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://develop.sprinthub.ru:888/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name portainer.develop.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://develop.sprinthub.ru:8888/;
}
location /api/websocket/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_pass http://develop.sprinthub.ru:8888/api/websocket/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name rabbitmq.develop.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://develop.sprinthub.ru:15672/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name minio.develop.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://develop.sprinthub.ru:9001/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name grafana.develop.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
proxy_set_header Host $http_host;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://develop.sprinthub.ru:3000/;
}
location /api/live/ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_pass http://develop.sprinthub.ru:3000/api/live/ws;
}
}

View File

@@ -1,48 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDmTCCAx+gAwIBAgISBmM6pAg0qa3+cxLar5nvn27GMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NTAeFw0yNTA1MzAyMTEzMjZaFw0yNTA4MjgyMTEzMjVaMCExHzAdBgNVBAMMFiou
ZGV2ZWxvcC5zcHJpbnRodWIucnUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATy
YXxx4cfN6ga0duaq7STjZxNwtFQ7c0ZAO+D7ulmdf/jpK8Xfkj5d0KMX0jhTmTEg
DUwvBMsH/fpyuuEdHNPWo4ICJDCCAiAwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT1
FLWsp0ksteuVXXd3pZokXOhj2DAfBgNVHSMEGDAWgBSfK1/PPCFPnQS37SssxMZw
i9LXDTAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly9lNS5pLmxl
bmNyLm9yZy8wIQYDVR0RBBowGIIWKi5kZXZlbG9wLnNwcmludGh1Yi5ydTATBgNV
HSAEDDAKMAgGBmeBDAECATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vZTUuYy5s
ZW5jci5vcmcvNzEuY3JsMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAEvFONL1T
ckyEBhnDjz96E/jntWKHiJxtMAWE6+WGJjoAAAGXI0B2OwAABAMARzBFAiBcMmQQ
PiKhuqhi3fs4yL6lfnQdZ1VlJTBifu8T6t4H3QIhAL/BdDUOafC+9nrlP7USrlCT
Oo1TA5JG/Yvxk5a/Oe1yAHYA7TxL1ugGwqSiAFfbyyTiOAHfUS/txIbFcA8g3bc+
P+AAAAGXI0CF1gAABAMARzBFAiAHI0Z170KObyMHOQM6w/GhsazTzUpBilyQnv/b
Wr+kdwIhALS4DQNUNfiJoea0wszwoTxcnowGI7Whx8qH4Ut6st88MAoGCCqGSM49
BAMDA2gAMGUCMGdO7CfUNB8wcMaHtED7/dy2ojOtofMze0kN0rzt2I/On55Ce84K
ZJ0Uj+Bcv/66qwIxAJ9YJTSJ1+owoICDbJekE+ejgzA+GgU2Z+RviZUTNXIdbWbX
etMXbXfP7WJPjxZ+ng==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
VQD9F6Na/+zmXCc=
-----END CERTIFICATE-----

View File

@@ -1,22 +1,36 @@
from requests import get
import os import os
import sys
from minio import Minio from minio import Minio
from urllib.request import urlopen
from json import loads
minio_client = Minio( minio_client = Minio(
"minio.develop.sprinthub.ru:9000", "minio:9000",
access_key="serviceminioadmin", access_key="serviceminioadmin",
secret_key=os.getenv("MINIO_SECRET_KEY", "minioadmin"), secret_key=os.getenv("MINIO_SECRET_KEY", "minioadmin"),
secure=False secure=False,
) )
hosts = get('http://configurator/api/v1/fetch?project=certupdater&stage=development').json()['configs']['hosts'] def get(url):
hosts = {**hosts, 'platform.develop.sprinthub.ru': {'host': 'platform-nginx', 'port': 1238}} with urlopen(url) as response:
data = response.read().decode("utf-8")
return loads(data)
config = ''
try:
response = get(
"http://configurator/api/v1/fetch?project=certupdater&stage=development"
)
hosts = response["configs"]["hosts"]
except Exception as e:
print(f"Error fetching config: {e}", file=sys.stderr)
sys.exit(1)
config = ""
for host, params in hosts.items(): for host, params in hosts.items():
config += ''' config += """
server {{ server {{
listen 443 ssl http2; listen 443 ssl http2;
listen [::]:443 ssl http2; listen [::]:443 ssl http2;
@@ -29,21 +43,43 @@ for host, params in hosts.items():
add_header X-XSS-Protection "1; mode=block" always; add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always; add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always; add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always; 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 $scheme;
location / {{ location / {{
resolver 127.0.0.11; resolver 127.0.0.11;
proxy_pass http://{target_host}:{port}$request_uri; proxy_pass http://{target_host}:{port}$request_uri;
}} }}
}}\n\n }}\n\n
'''.format(host=host, target_host=params['host'], port=params['port']) """.format(
fullchain = minio_client.get_object("certupdater", f'certificates/{host}/fullchain.pem') host=host, target_host=params["host"], port=params["port"]
privkey = minio_client.get_object("certupdater", f'certificates/{host}/privkey.pem') )
os.mkdir(f'/etc/nginx/{host}') try:
with open(f"/etc/nginx/{host}/fullchain.pem", 'wb') as fp: fullchain = minio_client.get_object(
fp.write(fullchain.data) "certupdater", f"certificates/{host}/fullchain.pem"
with open(f"/etc/nginx/{host}/privkey.pem", 'wb') as fp: )
fp.write(privkey.data) privkey = minio_client.get_object(
"certupdater", f"certificates/{host}/privkey.pem"
)
try:
os.makedirs(f"/etc/nginx/{host}", exist_ok=True)
except OSError as e:
print(f"Error creating directory: {e}", file=sys.stderr)
continue
with open('/etc/nginx/hosts.conf', 'w') as fp: with open(f"/etc/nginx/{host}/fullchain.pem", "wb") as fp:
fp.write(fullchain.data)
with open(f"/etc/nginx/{host}/privkey.pem", "wb") as fp:
fp.write(privkey.data)
except Exception as e:
print(f"Error processing host {host}: {e}", file=sys.stderr)
continue
try:
with open("/etc/nginx/hosts.conf", "w") as fp:
fp.write(config) fp.write(config)
except Exception as e:
print(f"Error writing config file: {e}", file=sys.stderr)
sys.exit(1)

View File

@@ -1,5 +0,0 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIPtfut2MheT8iyX6/EXDHHDR9yvtYLxMUg34mLeCpngpoAoGCCqGSM49
AwEHoUQDQgAE8mF8ceHHzeoGtHbmqu0k42cTcLRUO3NGQDvg+7pZnX/46SvF35I+
XdCjF9I4U5kxIA1MLwTLB/36crrhHRzT1g==
-----END EC PRIVATE KEY-----

11
nginx/nginx-dev/refre.sh Normal file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
if ! python3 prepare.py; then
echo "Error running prepare.py" >&2
exit 1
fi
if ! nginx -s reload; then
echo "Error reloading nginx" >&2
exit 1
fi

View File

@@ -2,12 +2,12 @@ FROM nginx
RUN apt-get update RUN apt-get update
RUN apt-get install certbot --yes RUN apt-get install certbot --yes
RUN apt-get install python3-certbot-nginx python3-pip --yes RUN apt-get install python3-certbot-nginx python3-pip --yes
RUN pip3 install --break-system-packages requests minio RUN pip3 install --break-system-packages minio
COPY ./config /etc/nginx COPY ./config /etc/nginx
COPY ./fullchain.pem /etc/nginx/fullchain.pem
COPY ./privkey.pem /etc/nginx/privkey.pem
COPY prepare.py prepare.py COPY prepare.py prepare.py
COPY run.sh run.sh COPY run.sh run.sh
COPY refre.sh refre.sh
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
RUN chmod 777 run.sh RUN chmod 777 run.sh
RUN chmod 777 refre.sh
ENTRYPOINT ["./run.sh"] ENTRYPOINT ["./run.sh"]

View File

@@ -8,6 +8,17 @@ http {
'' close; '' close;
} }
server {
listen 80;
server_name *.sprinthub.ru;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name *.chocomarsh.com;
return 301 https://$host$request_uri;
}
include ./hosts.conf; include ./hosts.conf;
include ./sprinthub.conf;
} }

View File

@@ -1,90 +0,0 @@
server {
listen 80;
server_name *.sprinthub.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name swarmpit.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://dev.sprinthub.ru:888/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name portainer.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://dev.sprinthub.ru:8888/;
}
location /api/websocket/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_pass http://dev.sprinthub.ru:8888/api/websocket/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name minio.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://dev.sprinthub.ru:9001/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name gitea.sprinthub.ru;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
proxy_pass http://dev.sprinthub.ru:3000/;
}
}

View File

@@ -1,47 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDhzCCAw6gAwIBAgISBXELtGOqEI5IsXNFUC7cue03MAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NTAeFw0yNTA1MzAyMTQ3MzZaFw0yNTA4MjgyMTQ3MzVaMBkxFzAVBgNVBAMMDiou
c3ByaW50aHViLnJ1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoS3M+thgeup/
F6JS7kVNJCWee8xzLkoIUcZNgNqmoovVSP02K9azdDRAp+c2OlzJqJQC+ZefswCB
2xvjNSoL2aOCAhswggIXMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEF
BQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUu+3qfzUyaCAb
POu7GPUO6ZI2WfswHwYDVR0jBBgwFoAUnytfzzwhT50Et+0rLMTGcIvS1w0wMgYI
KwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRwOi8vZTUuaS5sZW5jci5vcmcv
MBkGA1UdEQQSMBCCDiouc3ByaW50aHViLnJ1MBMGA1UdIAQMMAowCAYGZ4EMAQIB
MC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9lNS5jLmxlbmNyLm9yZy81Ni5jcmww
ggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdgDd3Mo0ldfhFgXnlTL6x5/4PRxQ39sA
OhQSdgosrLvIKgAAAZcjX78RAAAEAwBHMEUCIDNC6e7jNcTXW1bti1nkseruXw84
b8dsVzBt96FtE4+aAiEAr7ugvtozhmp6JdkIEfdHKecym9TxcL1h43j6rbKU3d8A
dQAaBP9J0FQdQK/2oMO/8djEZy9O7O4jQGiYaxdALtyJfQAAAZcjX8BoAAAEAwBG
MEQCIDezeAIFZ25OWXVV9hmtzEE5ujP0IyFaLxebyXAflYZMAiAy09hFLQXapebE
5YDtvqfmefapEsr4OaWyfusWjmeaiDAKBggqhkjOPQQDAwNnADBkAjAobO18Vk18
BG7lBbXEQ0O8RYy+CEV/ef1ni2CBQp+MtmG/ZCWAbfEXFaj2WKng5Q0CMFRR9icx
p6/tLUixnJfAusGudEtD5Leh2foPDT2jzgazaROaVFVTrCJMGcdgVukuPQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
VQD9F6Na/+zmXCc=
-----END CERTIFICATE-----

View File

@@ -1,22 +1,36 @@
from requests import get
import os import os
import sys
from minio import Minio from minio import Minio
from urllib.request import urlopen
from json import loads
minio_client = Minio( minio_client = Minio(
"minio.sprinthub.ru:9000", "minio:9000",
access_key="serviceminioadmin", access_key="serviceminioadmin",
secret_key=os.getenv("MINIO_SECRET_KEY", "minioadmin"), secret_key=os.getenv("MINIO_SECRET_KEY", "minioadmin"),
secure=False secure=False,
) )
hosts = get('http://configurator/api/v1/fetch?project=certupdater&stage=production').json()['configs']['hosts'] def get(url):
hosts = list(set(hosts + ['platform.sprinthub.ru'])) with urlopen(url) as response:
data = response.read().decode("utf-8")
return loads(data)
config = ''
for host in hosts: try:
config += ''' response = get(
"http://configurator/api/v1/fetch?project=certupdater&stage=production"
)
hosts = response["configs"]["hosts"]
except Exception as e:
print(f"Error fetching config: {e}", file=sys.stderr)
sys.exit(1)
config = ""
for host, params in hosts.items():
config += """
server {{ server {{
listen 443 ssl http2; listen 443 ssl http2;
listen [::]:443 ssl http2; listen [::]:443 ssl http2;
@@ -29,21 +43,43 @@ for host in hosts:
add_header X-XSS-Protection "1; mode=block" always; add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always; add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-refferer-when-downgrade" always; add_header Referrer-Policy "no-refferer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always; 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 $scheme;
location / {{ location / {{
resolver 127.0.0.11; resolver 127.0.0.11;
proxy_pass http://{pre_domain}-nginx:1238$request_uri; proxy_pass http://{target_host}:{port}$request_uri;
}} }}
}}\n\n }}\n\n
'''.format(host=host, pre_domain=host.split('.')[0]) """.format(
fullchain = minio_client.get_object("certupdater", f'certificates/{host}/fullchain.pem') host=host, target_host=params["host"], port=params["port"]
privkey = minio_client.get_object("certupdater", f'certificates/{host}/privkey.pem') )
os.mkdir(f'/etc/nginx/{host}') try:
with open(f"/etc/nginx/{host}/fullchain.pem", 'wb') as fp: fullchain = minio_client.get_object(
fp.write(fullchain.data) "certupdater", f"certificates/{host}/fullchain.pem"
with open(f"/etc/nginx/{host}/privkey.pem", 'wb') as fp: )
fp.write(privkey.data) privkey = minio_client.get_object(
"certupdater", f"certificates/{host}/privkey.pem"
)
try:
os.makedirs(f"/etc/nginx/{host}", exist_ok=True)
except OSError as e:
print(f"Error creating directory: {e}", file=sys.stderr)
continue
with open('/etc/nginx/hosts.conf', 'w') as fp: with open(f"/etc/nginx/{host}/fullchain.pem", "wb") as fp:
fp.write(fullchain.data)
with open(f"/etc/nginx/{host}/privkey.pem", "wb") as fp:
fp.write(privkey.data)
except Exception as e:
print(f"Error processing host {host}: {e}", file=sys.stderr)
continue
try:
with open("/etc/nginx/hosts.conf", "w") as fp:
fp.write(config) fp.write(config)
except Exception as e:
print(f"Error writing config file: {e}", file=sys.stderr)
sys.exit(1)

View File

@@ -1,5 +0,0 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIL0TAduonJLmbcDpRxDjSfa8bMIqLOh1KQcGQvAeQTIQoAoGCCqGSM49
AwEHoUQDQgAEoS3M+thgeup/F6JS7kVNJCWee8xzLkoIUcZNgNqmoovVSP02K9az
dDRAp+c2OlzJqJQC+ZefswCB2xvjNSoL2Q==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,4 @@
#!/bin/bash
python3 prepare.py
nginx -s reload

View File

@@ -4,6 +4,8 @@ mkdir /sprint-data/redis || true
mkdir /sprint-data/rabbitmq || true mkdir /sprint-data/rabbitmq || true
mkdir /sprint-data/certs || true mkdir /sprint-data/certs || true
mkdir /sprint-data/gitea || true mkdir /sprint-data/gitea || true
mkdir /sprint-data/clickhouse || true
chmod 777 /sprint-data/redis chmod 777 /sprint-data/redis
chmod 777 /sprint-data/rabbitmq chmod 777 /sprint-data/rabbitmq
chmod 777 /sprint-data/gitea chmod 777 /sprint-data/gitea
chmod 777 /sprint-data/clickhouse

View File

@@ -5,12 +5,30 @@ docker network create -d overlay --attachable common-infra-nginx-development ||
docker network create -d overlay --attachable queues || true docker network create -d overlay --attachable queues || true
docker network create -d overlay --attachable queues-development || true docker network create -d overlay --attachable queues-development || true
docker network create -d overlay --attachable configurator || true docker network create -d overlay --attachable configurator || true
docker network create -d overlay --attachable monitoring || true
docker network create -d overlay --attachable configurator-development || true docker network create -d overlay --attachable configurator-development || true
docker network create -d overlay --attachable clickhouse || true
docker network create -d overlay --attachable postgres || true
docker network create -d overlay --attachable postgres-development || true
docker network create -d overlay --attachable mongo || true
docker network create -d overlay --attachable mongo-development || true
docker network create -d overlay --attachable minio || true
docker network create -d overlay --attachable minio-development || true
mkdir /sprint-data/mongo || true mkdir /sprint-data/mongo || true
mkdir /sprint-data/redis || true mkdir /sprint-data/redis || true
mkdir /sprint-data/rabbitmq || true
mkdir /sprint-data/certs || true mkdir /sprint-data/certs || true
mkdir /sprint-data/gitea || true mkdir /sprint-data/gitea || true
mkdir /sprint-data/clickhouse || true
mkdir /sprint-data/grafana || true
mkdir /sprint-data/authelia || true
mkdir /sprint-data/authelia/config || true
mkdir /sprint-data/authelia/data || true
chmod 777 /sprint-data/authelia
chmod 777 /sprint-data/authelia/config
chmod 777 /sprint-data/authelia/data
chmod 777 /sprint-data/redis chmod 777 /sprint-data/redis
chmod 777 /sprint-data/rabbitmq chmod 777 /sprint-data/rabbitmq
chmod 777 /sprint-data/gitea chmod 777 /sprint-data/gitea
chmod 777 /sprint-data/clickhouse
chmod 777 /sprint-data/grafana