Compare commits

164 Commits

Author SHA1 Message Date
eeeec03ab8 Merge pull request 'fix' (#151) from master into prod
Reviewed-on: #151
2025-09-29 00:14:28 +03:00
Egor Matveev
7795898546 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 19s
Deploy Prod / Push (pull_request) Successful in 11s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 23s
2025-09-29 00:14:06 +03:00
ff5ae0220d Merge pull request 'fix' (#150) from master into prod
Reviewed-on: #150
2025-09-28 14:13:35 +03:00
Egor Matveev
d8c68a2307 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 30s
Deploy Prod / Push (pull_request) Successful in 16s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 27s
2025-09-28 14:13:03 +03:00
6ea0e23869 Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#149) from master into prod
Reviewed-on: #149
2025-09-20 17:08:57 +03:00
e706e91a2a Update .deploy-infra/deploy-prod.yaml
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 12s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 22s
2025-09-20 17:08:44 +03:00
5fe5b5ed6f Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#147) from master into prod
Reviewed-on: #147
2025-09-20 13:07:24 +03:00
b0b3dbdbd6 Update .deploy-infra/deploy-prod.yaml
All checks were successful
Deploy Prod / Build (pull_request) Successful in 7s
Deploy Prod / Push (pull_request) Successful in 12s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 25s
2025-09-20 13:07:11 +03:00
5d2c174fce Merge pull request 'master' (#146) from master into prod
Reviewed-on: #146
2025-09-15 10:10:37 +03:00
Egor Matveev
1347bcc321 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 20s
Deploy Prod / Push (pull_request) Successful in 17s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 25s
2025-09-15 10:10:00 +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
624eddee2a Merge pull request 'fix' (#144) from master into prod
Reviewed-on: #144
2025-09-15 01:12:17 +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
ba43261482 Merge pull request 'fix' (#142) from master into prod
Reviewed-on: #142
2025-09-15 00:06:57 +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
59287f8240 Merge pull request 'master' (#141) from master into prod
Reviewed-on: #141
2025-09-14 23:57:24 +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
8f823afc21 Merge pull request 'fix' (#139) from master into prod
Reviewed-on: #139
2025-07-12 10:28:33 +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
489b5d00cc Merge pull request 'fix' (#138) from master into prod
Reviewed-on: #138
2025-07-12 10:22:15 +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
073ee88a84 Merge pull request 'fix' (#137) from master into prod
Reviewed-on: #137
2025-07-12 10:17:55 +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
054186bfcd Merge pull request 'fix' (#136) from master into prod
Reviewed-on: #136
2025-07-12 10:12:23 +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
2d66d20e41 Merge pull request 'fix' (#135) from master into prod
Reviewed-on: #135
2025-07-12 10:09:55 +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
49e99f2721 Merge pull request 'fix' (#134) from master into prod
Reviewed-on: #134
2025-07-11 22:46:40 +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
a6273a24dc Merge pull request 'fix' (#133) from master into prod
Reviewed-on: #133
2025-07-11 22:29: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
5da9bc072b Merge pull request 'fix' (#132) from master into prod
Reviewed-on: #132
2025-07-11 22:23:22 +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
767ea96b31 Merge pull request 'fix' (#131) from master into prod
Reviewed-on: #131
2025-07-11 22:19:01 +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
9c8df2d4d4 Merge pull request 'fix' (#130) from master into prod
Reviewed-on: #130
2025-07-11 22:07:25 +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
e076d505f1 Merge pull request 'fix' (#129) from master into prod
Reviewed-on: #129
2025-07-11 21:50:17 +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
5a8e6cfa76 Merge pull request 'fix' (#128) from master into prod
Reviewed-on: #128
2025-07-11 21:28:33 +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
6647b0df21 Merge pull request 'fix' (#127) from master into prod
Reviewed-on: #127
2025-07-11 21:20:37 +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
0e0b2e57da Merge pull request 'fix' (#126) from master into prod
Reviewed-on: #126
2025-07-11 21:05:40 +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
cac1e5c4e0 Merge pull request 'fix' (#125) from master into prod
Reviewed-on: #125
2025-07-11 20:36:23 +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
45201de406 Merge pull request 'fix' (#124) from master into prod
Reviewed-on: #124
2025-07-11 20:24:33 +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
74a45eb95c Merge pull request 'fix' (#123) from master into prod
Reviewed-on: #123
2025-07-11 19:57:57 +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
26159bd068 Merge pull request 'fix' (#122) from master into prod
Reviewed-on: #122
2025-07-11 19:52:26 +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
f963a7e196 Merge pull request 'fix' (#121) from master into prod
Reviewed-on: #121
2025-07-10 18:43:34 +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
60d65bfd10 Merge pull request 'fix' (#120) from master into prod
Reviewed-on: #120
2025-07-10 18:19:12 +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
7c16255c61 Merge pull request 'fix' (#119) from master into prod
Reviewed-on: #119
2025-07-10 18:12:17 +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
ee6e9b7d12 Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#118) from master into prod
Reviewed-on: #118
2025-06-20 17:29:59 +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
1851bc0652 Merge pull request 'master' (#117) from master into prod
Reviewed-on: #117
2025-06-20 17:19:38 +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
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
0ba08e4a6d Merge pull request 'fix' (#115) from master into prod
Reviewed-on: #115
2025-06-14 23:01:18 +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
3e12bf6fe0 Merge pull request 'fix' (#114) from master into prod
Reviewed-on: #114
2025-06-14 22:55:18 +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
7fc4e7f086 Merge pull request 'master' (#113) from master into prod
Reviewed-on: #113
2025-06-14 22:45:41 +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
becb5c3aac Merge pull request 'fix' (#112) from master into prod
Reviewed-on: #112
2025-06-14 22:40:51 +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
a54f4a6eee Merge pull request 'fix' (#111) from master into prod
Reviewed-on: #111
2025-06-14 22:35:16 +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
fb4fcf5b27 Merge pull request 'fix' (#110) from master into prod
Reviewed-on: #110
2025-06-14 22:30:25 +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
45a035897d Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#109) from master into prod
Reviewed-on: #109
2025-06-14 20:21:54 +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
4da8e8e6e5 Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#108) from master into prod
Reviewed-on: #108
2025-06-14 20:12:41 +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
2a09bb0f48 Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#107) from master into prod
Reviewed-on: #107
2025-06-14 20:10:36 +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
d456e2d083 Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#106) from master into prod
Reviewed-on: #106
2025-06-14 20:07:01 +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
3f07d0ad84 Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#105) from master into prod
Reviewed-on: #105
2025-06-14 19:55:57 +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
f8488d72e7 Merge pull request 'Update .deploy-infra/deploy-prod.yaml' (#104) from master into prod
Reviewed-on: #104
2025-06-14 19:53:17 +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
7b0a5ca568 Merge pull request 'fix' (#103) from master into prod
Reviewed-on: #103
2025-06-14 13:02:27 +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
cab9ef5d08 Merge pull request 'fix' (#102) from master into prod
Reviewed-on: #102
2025-06-14 12:42:45 +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
e4f6078e63 Merge pull request 'fix' (#101) from master into prod
Reviewed-on: #101
2025-06-14 04:44:16 +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
8ebf434fb2 Merge pull request 'master' (#100) from master into prod
Reviewed-on: #100
2025-06-14 03:37:48 +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
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
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
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
2b0fc2dee3 Merge pull request 'master' (#96) from master into prod
Reviewed-on: #96
2025-06-13 02:48:50 +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
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
f72974a593 Merge pull request 'fix' (#92) from master into prod
Reviewed-on: #92
2025-06-12 22:14:37 +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
13518e77d6 Merge pull request 'fix' (#90) from master into prod
Reviewed-on: #90
2025-06-12 13:52:39 +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
a424d7950e Merge pull request 'master' (#88) from master into prod
Reviewed-on: #88
2025-06-12 13:27:18 +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
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
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
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
fe415f0bd8 Merge pull request 'master' (#84) from master into prod
Reviewed-on: #84
2025-06-12 01:13:26 +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
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
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
Egor Matveev
90aaf361bb fix 2025-06-10 01:11:20 +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
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
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
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
07008122a8 Merge pull request 'master' (#73) from master into prod
Reviewed-on: #73
2025-06-04 21:20: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
Egor Matveev
3806ba9446 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 8s
Deploy Dev / Push (pull_request) Successful in 14s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 20s
2025-06-04 20:59:19 +03:00
031960c451 Merge pull request 'master' (#71) from master into prod
Reviewed-on: #71
2025-06-04 03:43:12 +03:00
Egor Matveev
87d6c3460a fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 7s
Deploy Dev / Push (pull_request) Successful in 15s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
Deploy Prod / Build (pull_request) Successful in 6s
Deploy Prod / Push (pull_request) Successful in 16s
Deploy Prod / prepare (pull_request) Successful in 4s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
2025-06-04 03:37:46 +03:00
Egor Matveev
84c36855e3 fix 2025-06-04 03:37:27 +03:00
a1fcd98eba Merge pull request 'master' (#69) from master into prod
Reviewed-on: #69
2025-06-04 02:47:18 +03:00
Egor Matveev
78550c3e6c fix
Some checks are pending
Deploy Prod / Deploy prod (pull_request) Blocked by required conditions
Deploy Prod / Build (pull_request) Successful in 9s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 5s
2025-06-04 02:46:56 +03:00
Egor Matveev
8db60c72d0 fix 2025-06-04 02:45:28 +03:00
Egor Matveev
394cc64722 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 10s
Deploy Dev / Push (pull_request) Successful in 14s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 20s
2025-06-03 22:08:28 +03:00
Egor Matveev
d2fa346a86 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 9s
Deploy Dev / Push (pull_request) Successful in 14s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 22s
2025-06-03 21:59:42 +03:00
Egor Matveev
8f350225a4 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 7s
Deploy Dev / Push (pull_request) Successful in 14s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 20s
2025-06-03 21:54:25 +03:00
Egor Matveev
01f490f10f fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 6s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 15s
2025-06-02 03:23:19 +03:00
Egor Matveev
d16e897dd9 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 12s
Deploy Dev / Push (pull_request) Successful in 13s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 17s
2025-06-02 03:19:08 +03:00
Egor Matveev
32f4530d32 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 12s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 17s
2025-06-02 03:14:14 +03:00
Egor Matveev
97e70d55ce fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 10s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 6s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
2025-06-02 03:10:50 +03:00
Egor Matveev
125e7cbcb1 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 11s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
2025-06-02 03:08:57 +03:00
Egor Matveev
5c2bbb6751 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 11s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 17s
2025-06-02 03:06:26 +03:00
Egor Matveev
b9252cf38d fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 11s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
2025-06-02 03:04:32 +03:00
Egor Matveev
81afaa3f16 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 12s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 16s
2025-06-02 03:01:52 +03:00
Egor Matveev
b3e1195975 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 12s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
2025-06-02 02:54:38 +03:00
Egor Matveev
c54c8897ac fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 6s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 17s
2025-06-02 02:50:22 +03:00
Egor Matveev
f54f0bf32e fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 6s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 15s
2025-06-02 02:44:31 +03:00
Egor Matveev
fb0ea5b13d fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 6s
Deploy Dev / Push (pull_request) Successful in 11s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 15s
2025-06-02 02:42:33 +03:00
Egor Matveev
a496de9c7e fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 4s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 16s
2025-06-02 02:41:10 +03:00
Egor Matveev
1bd251e4d8 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 5s
Deploy Dev / Push (pull_request) Successful in 10s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 15s
2025-06-02 02:39:18 +03:00
Egor Matveev
7d530881d7 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 4s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 15s
2025-06-02 02:37:08 +03:00
Egor Matveev
a42dad8c64 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 5s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 16s
2025-06-02 02:31:55 +03:00
Egor Matveev
168b5fcbe5 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 6s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
2025-06-02 01:43:46 +03:00
Egor Matveev
6a470e13d7 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 22s
Deploy Dev / Push (pull_request) Successful in 44s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 19s
2025-06-02 01:40:03 +03:00
Egor Matveev
1633a2f8d7 fix
Some checks failed
Deploy Dev / Build (pull_request) Failing after 59s
Deploy Dev / Push (pull_request) Has been skipped
Deploy Dev / prepare (pull_request) Has been skipped
Deploy Dev / Deploy dev (pull_request) Has been skipped
2025-06-02 01:37:25 +03:00
Egor Matveev
a4b4bfbaeb fix
Some checks failed
Deploy Dev / Build (pull_request) Failing after 9s
Deploy Dev / Push (pull_request) Has been skipped
Deploy Dev / prepare (pull_request) Has been skipped
Deploy Dev / Deploy dev (pull_request) Has been skipped
2025-06-02 01:35:47 +03:00
Egor Matveev
3f2af3e0a4 fix 2025-06-02 01:23:47 +03:00
Egor Matveev
2970f41b5e fix 2025-06-02 01:10:38 +03:00
Egor Matveev
d5cc340e32 fix
All checks were successful
Deploy Dev / Build (pull_request) Successful in 1m15s
Deploy Dev / Push (pull_request) Successful in 51s
Deploy Dev / prepare (pull_request) Successful in 3s
Deploy Dev / Deploy dev (pull_request) Successful in 18s
2025-06-01 19:38:57 +03:00
Egor Matveev
31cb8ad545 fix 2025-05-31 12:54:54 +03:00
Egor Matveev
3a528cc7de fix 2025-05-31 12:19:35 +03:00
29 changed files with 468 additions and 865 deletions

View File

@@ -6,6 +6,10 @@ services:
image: mathwave/sprint-repo:sprint-infra-nginx-dev
networks:
- common-infra-nginx-development
- configurator
- minio-development
environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_DEV
ports:
- published: 80
target: 80
@@ -24,8 +28,29 @@ services:
parallelism: 1
# 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:
image: postgres:14-alpine3.19
networks:
- postgres-development
volumes:
- /sprint-data/postgres-data:/var/lib/postgresql/data
environment:
@@ -52,6 +77,8 @@ services:
mongo:
image: mongo:6.0.2
networks:
- mongo-development
volumes:
- /sprint-data/mongo:/data/db
environment:
@@ -71,29 +98,6 @@ services:
parallelism: 1
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:
image: redis:alpine3.16
volumes:
@@ -115,6 +119,8 @@ services:
minio:
image: bitnami/minio:2022.10.8
networks:
- minio-development
volumes:
- minio_data:/data
environment:
@@ -143,7 +149,7 @@ services:
- /var/run/docker.sock:/var/run/docker.sock
- /sprint-data:/sprint-data
environment:
GITEA_INSTANCE_URL: https://gitea.sprinthub.ru/
GITEA_INSTANCE_URL: https://gitea.chocomarsh.com/
GITEA_RUNNER_REGISTRATION_TOKEN: $REGISTRATION_TOKEN
GITEA_RUNNER_NAME: dev
GITEA_RUNNER_LABELS: dev
@@ -164,3 +170,13 @@ volumes:
networks:
common-infra-nginx-development:
external: true
configurator:
external: true
clickhouse-development:
external: true
postgres-development:
external: true
mongo-development:
external: true
minio-development:
external: true

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

@@ -6,6 +6,10 @@ services:
image: mathwave/sprint-repo:sprint-infra-nginx-prod
networks:
- common-infra-nginx
- configurator
- minio
environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_PROD
ports:
- published: 80
target: 80
@@ -24,8 +28,58 @@ services:
parallelism: 1
# 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:
image: postgres:14-alpine3.19
networks:
- postgres
volumes:
- /sprint-data/postgres-data:/var/lib/postgresql/data
environment:
@@ -57,6 +111,8 @@ services:
mongo:
image: mongo:6.0.2
networks:
- mongo
volumes:
- /sprint-data/mongo:/data/db
environment:
@@ -76,29 +132,6 @@ services:
parallelism: 1
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:
image: redis:alpine3.16
volumes:
@@ -120,6 +153,8 @@ services:
minio:
image: bitnami/minio:2022.10.8
networks:
- minio
volumes:
- minio_data:/data
environment:
@@ -143,7 +178,9 @@ services:
order: start-first
gitea:
image: gitea/gitea:1.22.3
image: gitea/gitea:1.24.6
networks:
- postgres
volumes:
- /sprint-data/gitea:/data
- /etc/timezone:/etc/timezone
@@ -155,7 +192,7 @@ services:
USER_UID: 1000
USER_GID: 1000
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: pg.sprinthub.ru:5432
GITEA__database__HOST: postgres:5432
GITEA__database__NAME: gitea
GITEA__database__USER: postgres
GITEA__database__PASSWD: $DB_PASSWORD_PROD
@@ -174,8 +211,9 @@ services:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /sprint-data:/sprint-data
- /root/.cache/act:/root/.cache/act
environment:
GITEA_INSTANCE_URL: https://gitea.sprinthub.ru/
GITEA_INSTANCE_URL: https://gitea.chocomarsh.com/
GITEA_RUNNER_REGISTRATION_TOKEN: $REGISTRATION_TOKEN
GITEA_RUNNER_NAME: prod
GITEA_RUNNER_LABELS: prod
@@ -189,35 +227,6 @@ services:
parallelism: 1
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:
minio_data:
driver: local
@@ -229,3 +238,13 @@ networks:
driver: overlay
common-infra-nginx:
external: true
configurator:
external: true
clickhouse:
external: true
postgres:
external: true
mongo:
external: true
minio:
external: true

View File

@@ -0,0 +1,34 @@
version: "3.6"
services:
nginx:
image: mathwave/sprint-repo:sprint-infra-nginx-dev
networks:
- common-infra-nginx-development
- configurator
environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_DEV
ports:
- published: 80
target: 80
mode: host
- published: 443
target: 443
mode: host
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == development]
update_config:
parallelism: 1
# order: stop-first
networks:
common-infra-nginx-development:
external: true
configurator:
external: true

View File

@@ -0,0 +1,34 @@
version: "3.6"
services:
nginx:
image: mathwave/sprint-repo:sprint-infra-nginx-prod
networks:
- common-infra-nginx
- configurator
environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_PROD
ports:
- published: 80
target: 80
mode: host
- published: 443
target: 443
mode: host
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
# order: start-first
networks:
common-infra-nginx:
external: true
configurator:
external: true

View File

@@ -2,7 +2,7 @@ version: '3.2'
services:
agent:
image: portainer/agent:2.11.1
image: portainer/agent:2.33.1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
@@ -14,7 +14,7 @@ services:
constraints: [node.platform.os == linux]
portainer:
image: portainer/portainer-ce:2.11.1
image: portainer/portainer-ce:2.33.1
command: -H tcp://tasks.agent:9001 --tlsskipverify
ports:
- "9443:9443"

View File

@@ -19,8 +19,6 @@ jobs:
ref: dev
- name: build 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:
name: Push
runs-on: [ prod ]
@@ -58,7 +56,9 @@ jobs:
env:
MONGO_PASSWORD_DEV: ${{ secrets.MONGO_PASSWORD_DEV }}
DB_PASSWORD_DEV: ${{ secrets.POSTGRES_PASSWORD_DEV }}
CLICKHOUSE_PASSWORD_DEV: ${{ secrets.CLICKHOUSE_PASSWORD_DEV }}
MINIO_PASSWORD_DEV: ${{ secrets.MINIO_PASSWORD_DEV }}
MINIO_SECRET_KEY_DEV: ${{ secrets.MINIO_SECRET_KEY_DEV }}
REDIS_PASSWORD_DEV: ${{ secrets.REDIS_PASSWORD_DEV }}
RABBITMQ_PASSWORD_DEV: ${{ secrets.RABBITMQ_PASSWORD_DEV }}
REGISTRATION_TOKEN: ${{ secrets.REGISTRATION_TOKEN }}

View File

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

View File

@@ -3,3 +3,4 @@ FROM gitea/act_runner:nightly
RUN apk add docker
RUN apk add git
RUN apk add --no-cache nodejs
RUN apk add --no-cache make

View File

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

View File

@@ -1,162 +0,0 @@
# server {
# listen 80;
# server_name *.develop.guavo.tech;
# return 301 https://$host$request_uri;
# }
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name swarmpit.develop.guavo.tech;
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.guavo.tech:888/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name portainer.develop.guavo.tech;
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.guavo.tech: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.guavo.tech:8888/api/websocket/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name rabbitmq.develop.guavo.tech;
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.guavo.tech:15672/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name minio.develop.guavo.tech;
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.guavo.tech:9001/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name grafana.develop.guavo.tech;
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.guavo.tech: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.guavo.tech:3000/api/live/ws;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ~^(?<domain>.*)\.develop\.guavo\.tech$;
resolver 127.0.0.11 ipv6=off;
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;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://$domain-nginx:1238$request_uri;
}
}
server {
listen 80;
server_name ~^(?<domain>.*)\.develop\.guavo\.tech$;
resolver 127.0.0.11 ipv6=off;
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;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://$domain-nginx:1238$request_uri;
}
}

View File

@@ -8,6 +8,17 @@ http {
'' close;
}
# include ./guavo.conf;
include ./sprinthub.conf;
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;
}

View File

@@ -1,143 +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;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ~^(?<domain>.*)\.develop\.sprinthub\.ru$;
resolver 127.0.0.11 ipv6=off;
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;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://$domain-nginx:1238$request_uri;
}
}

View File

@@ -1,48 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDjTCCAxOgAwIBAgISBFOrEAaTGvrTDKdeolnTvP2tMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NTAeFw0yNTAyMTMyMDMxMTNaFw0yNTA1MTQyMDMxMTJaMCExHzAdBgNVBAMMFiou
ZGV2ZWxvcC5zcHJpbnRodWIucnUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQW
CTHej6yeHgUhHJlGrI3/8cFlPdoVWeb4J+5DOaEKhpdeL90JWNMVIrbz4yaa9LTi
Yezrr5pXocvdS9fBT/zHo4ICGDCCAhQwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRY
7KU/E/kLjq27+Bsr5myR/sry4TAfBgNVHSMEGDAWgBSfK1/PPCFPnQS37SssxMZw
i9LXDTBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNS5vLmxl
bmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL2U1LmkubGVuY3Iub3JnLzAhBgNV
HREEGjAYghYqLmRldmVsb3Auc3ByaW50aHViLnJ1MBMGA1UdIAQMMAowCAYGZ4EM
AQIBMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAzPsPaoVxCWX+lZtTzumyfCLp
hVwNl422qX5UwP5MDbAAAAGVATe42wAABAMARzBFAiAvPfNaVjzr1bjZLfQuZku5
1raR2QS3oPhfFcYfsKzPAgIhAJ6E1t/yKiuc3JScuUl26S4+s2noeAGhmIxB/uk+
9KCMAHYATnWjJ1yaEMM4W2zU3z9S6x3w4I4bjWnAsfpksWKaOd8AAAGVATe4xwAA
BAMARzBFAiASyvhckbFMsgtb7FGbF2nl0KAboDqiJK9ekpHLu41YSQIhANJjOl3+
HHBPrLR2oMi3vE1jkJxhFYNeoQzxGGeKVstpMAoGCCqGSM49BAMDA2gAMGUCMQC2
4UIBvoCAl54QjeXlpadTbL5hE2bsh1bEF3XNtaIsVVlBFQZwly2fp2Qil9m34BcC
MEF4eFmSQmAjc++mRA9m4qo4P5KeeakU1ccrWEypfIHnLn/UtQlG8K2+ceAQc/9K
pg==
-----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

@@ -0,0 +1,85 @@
import os
import sys
from minio import Minio
from urllib.request import urlopen
from json import loads
minio_client = Minio(
"minio:9000",
access_key="serviceminioadmin",
secret_key=os.getenv("MINIO_SECRET_KEY", "minioadmin"),
secure=False,
)
def get(url):
with urlopen(url) as response:
data = response.read().decode("utf-8")
return loads(data)
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():
config += """
server {{
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name {host};
ssl_certificate /etc/nginx/{host}/fullchain.pem;
ssl_certificate_key /etc/nginx/{host}/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;
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 / {{
resolver 127.0.0.11;
proxy_pass http://{target_host}:{port}$request_uri;
}}
}}\n\n
""".format(
host=host, target_host=params["host"], port=params["port"]
)
try:
fullchain = minio_client.get_object(
"certupdater", f"certificates/{host}/fullchain.pem"
)
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(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)
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-----
MHcCAQEEIPXF013iLs5Jvxsj7K8xdzqyUBQxFILJ3dEyTriIJQaDoAoGCCqGSM49
AwEHoUQDQgAEFgkx3o+snh4FIRyZRqyN//HBZT3aFVnm+CfuQzmhCoaXXi/dCVjT
FSK28+MmmvS04mHs66+aV6HL3UvXwU/8xw==
-----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

4
nginx/nginx-dev/run.sh Normal file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
python3 prepare.py
/docker-entrypoint.sh nginx -g 'daemon off;'

View File

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

View File

@@ -1,90 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIE5TCCA82gAwIBAgISBLLA45sg/IhDBwA/vxe7YIKrMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDAyMDMyMTI1NDdaFw0yNDA1MDMyMTI1NDZaMBcxFTATBgNVBAMT
DHlvdXJnb2xzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFC
SqAyzSV1BHFSqKxH3GuLEVRgxUABAhveeLWOTJt3xrKTNhdgaP4fD8CZF5vmgFqx
M/Zk4mizZ9FEQeKnrmlhAL643OaGRTVwN1FfBEfvr/fT3AQD0HQB55OSsUReSFUn
yT9vR2cv+r/f6EU78Uw/svvTD7M0vY/uRfOc2qWv+I6dGsoS32iDQmsYlOK4HKWX
mfBTuGSCJKcec1nviehXXrGFP4YJa3gs6RzWTtGXxGgI0lG9O366RszkKZKVJICh
BH+YWV9KJ1hzgmRWlRJgs4t14MO2Dxw5Mu1G08WbaEQGvE7RgcBCNY8sV1K1Bx/P
NUPRsSPT6rIsX3MhQ4sCAwEAAaOCAg4wggIKMA4GA1UdDwEB/wQEAwIFoDAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E
FgQUcY+9gyWVjqP8S2owFnPbtwbiZ1QwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA
5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMu
by5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8w
FwYDVR0RBBAwDoIMeW91cmdvbHMuY29tMBMGA1UdIAQMMAowCAYGZ4EMAQIBMIIB
BAYKKwYBBAHWeQIEAgSB9QSB8gDwAHUAO1N3dT4tuYBOizBbBv5AO2fYT8P0x70A
DS1yb+H61BcAAAGNcRPt8gAABAMARjBEAiAMpD5lfh43xD1tAvsSa20OQ4LsQ8Kt
YBvl5svUTuGrHAIgPveMh3yZ6z+QLW1k8Lv7z1kyXsxSvCUQrX16k7m1V8kAdwCi
4r/WHt4vLweg1k5tN6fcZUOwxrUuotq3iviabfUX2AAAAY1xE+3xAAAEAwBIMEYC
IQD+hmWzWe0y9M8xYKvuhySnHN6AWKQpvJgTqBsCFiiy5QIhANM0ce+SEC4BlY8m
QAIGNXbAjlKU28q66EcTuSjji227MA0GCSqGSIb3DQEBCwUAA4IBAQAAfH8lbwUk
JD6voPBGCTt7XSZPl9dq4LdmOLV3bsfjtqWOeGNCznBYKfRZO/UJ/srekCjapzKy
DAmv0dl/tvBGfqhU/emOtKsq9AE0J7RqzF9SQPrVzq/VxWXGCCmtxUHEAlNk/lrg
PqxpTUZdLpeBEbNvtloSaUEpe8mkFcFhw7TZVtdkpn+pHRlltqXry/8BekFPQR5Y
qgI8akm2rXOV616MnF81DhIUVY4n6t4SVsDjSk69iDnKG97PJJK5yqsEfdZFiDRK
PlhHTYwOsypaP/JMuanK8eGjnNR9pA40DEjAJO0kvE3IE7dHD3R1iGkXjr7wIkKw
5NjP9yOv01mH
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
-----END CERTIFICATE-----

View File

@@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDRQkqgMs0ldQRx
UqisR9xrixFUYMVAAQIb3ni1jkybd8aykzYXYGj+Hw/AmReb5oBasTP2ZOJos2fR
REHip65pYQC+uNzmhkU1cDdRXwRH76/309wEA9B0AeeTkrFEXkhVJ8k/b0dnL/q/
3+hFO/FMP7L70w+zNL2P7kXznNqlr/iOnRrKEt9og0JrGJTiuByll5nwU7hkgiSn
HnNZ74noV16xhT+GCWt4LOkc1k7Rl8RoCNJRvTt+ukbM5CmSlSSAoQR/mFlfSidY
c4JkVpUSYLOLdeDDtg8cOTLtRtPFm2hEBrxO0YHAQjWPLFdStQcfzzVD0bEj0+qy
LF9zIUOLAgMBAAECggEANWFhxAfxiRKWtYnOeVRDiDOLkii1aKRZM17HEBlitW4S
g89FxyTS47BsxkbHXP+p0njNtpb5opfRbfKpk/YOaddS51QlFbE+ymj704gXgXpF
O0USJPwMGuu5dU3AZp5eeUqS7dmnL01v+65UhATMgxTkxZSLtr1HdgXkVka3B/ir
Q/iqR4ftt+qT0a9mzXQOxgdN7qnNwVNO1uJi87C6fQBRB6F724U5SJyOTMl9R6ZS
+JZ9Oz5xxoGLA/Nftn078uMjf2ymWfOqicHYeXxfPYllXNuRsIf7NA00F0orwF15
TWBZLB5GbkOIP7k7vzabZMCbGmf42XYtt1oFYIssIQKBgQD7aB8cUDVdE47VOX4p
+Bf2ilMJA2d+KsCA3uYw5VQjjxBbfN+nChOx6e6eSmy2MMtH2ECG2IgW04FDbHtZ
y2tbmRY3XIl+4dos+6ybbiYeYKRcHOQiXbjFK9ml1NpDcuLMHE3a6v0gFB8N0iB4
J3u6h9+kHe3LGPzIVDGbITWi4wKBgQDVFQleHfRWM9/hebU8/tshY4sRJ9nA9haI
F/NDMHhE+IyX9JHxGXtVE0ihOh0+0PLKLwtOepc4vqZaquKVnzZ82+sc+C4Iqg8K
S+1NoRFOZG1AlM53UI51ZXLvXZp8gAdDBXzwBZpWZNdhJHJSnuwVI+UoDkrAQkmn
/n4jzV01OQKBgQCH8pr4JYtlxIC1XryRl13l7JDQS+339MhaJ66UfD5OaDtxLYqH
elSCHbzyDc7RinsyY4cpJAgbR84blprxSKXKR3MTBtA3M4xWTNXeyuaEAMCAKwNW
bhXPUVIFcZ+BX6uysg+LtQyh/x93ysvSDY/Do1vVFHYVIHL5JUYZ3BBz/wKBgQDT
oCYCnJtr9e9Xn6oZ30BBg/y9WCfTllVAaxEGXSBF19jCnntHyjgMga9zuSUMmzdX
CKwhEG4aRHcxu2B4m3zhOwXiarZFkqiHYGtZ2ys2AVXkeyYnqBEklVI2W2+wUPNl
ZBD2zYnAXjzu1OTaG857HIBebPtewTcoKwCajD8TOQKBgQDr07j3sx5nQsg4kHmR
kBvHHjq7kQ1pEItrD/CfLsZ7Ntip4L82UzdZm/hhdM/12fB+wLu8HcZzvY5H1J+3
IlkKYhAAe8lgzE7hYupVD9QtdFBuNsAnQfT+VV4JnZNDVZHXfnhz19KJ+iIvqton
8WCEnmpiIKyt+Lq+Ol3n7PDMIw==
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,24 @@
events {}
http {
client_max_body_size 50m;
map $http_upgrade $connection_upgrade {
default upgrade;
'' 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;
}

View File

@@ -1,47 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDfDCCAwKgAwIBAgISA7RNvbxsQFQcAVy4rIt/qik2MAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NTAeFw0yNTAyMTMyMTAzMzdaFw0yNTA1MTQyMTAzMzZaMBkxFzAVBgNVBAMMDiou
c3ByaW50aHViLnJ1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnOOljp3cFclh
repAoo/OTovyU5RVDTKNc7p01odoygI5z4ZsIiiZL0lQ8Qfvj1fVlVtah9LPuz5c
hLMNK2KoLaOCAg8wggILMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEF
BQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUEvxI9gbpB3pH
nRkSwmBUDxbqiZMwHwYDVR0jBBgwFoAUnytfzzwhT50Et+0rLMTGcIvS1w0wVQYI
KwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vZTUuby5sZW5jci5vcmcw
IgYIKwYBBQUHMAKGFmh0dHA6Ly9lNS5pLmxlbmNyLm9yZy8wGQYDVR0RBBIwEIIO
Ki5zcHJpbnRodWIucnUwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEDBgorBgEEAdZ5
AgQCBIH0BIHxAO8AdQDehYHXUCR8a83Lr1Y3xeeBxkzkbtYXY5+PNKcmyeK9NwAA
AZUBVWFvAAAEAwBGMEQCIG/0w/LD2GbEa6OPYUzrQyQFbHvlCQHI8fZ9poUQ/79o
AiAQnczLXxcowqIYF+K5ppeDdVJjs9YfAX0l+7MlNiExOAB2ABNK3xq1mEIJeAxv
70x6kaQWtyNJzlhXat+u2qfCq+AiAAABlQFVYjEAAAQDAEcwRQIgSlaJ8jTrR4cb
E65bZZcqufKCDTsUIrasTjgB5wPR/CUCIQDKoTiZvY2J+CUOazRAMCLuKknvnlWb
15C9fsy1e5ZhXTAKBggqhkjOPQQDAwNoADBlAjEAh8H95ADLd8IXWPk2OG94VQ35
ukNHsIreck5DHo/0HxKBuD+mjp8SG/vEJ0UB/65iAjBywTkv3JeaLV1SX+QUUUiF
5aNTztnM6d3vHalb+pJJ0LtO32c1iY7pQ47wqXk8fbs=
-----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,236 +0,0 @@
events {}
http {
client_max_body_size 150m;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name gitlab.sprinthub.ru;
location / {
proxy_pass http://dev.sprinthub.ru:1234/;
}
}
server {
listen 80;
server_name *.sprinthub.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name gitlab.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:1234/;
}
}
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 rabbitmq.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:15672/;
}
}
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:15672/;
}
}
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/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name keycloak.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:8443/;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ~^(?<domain>.*)\.sprinthub\.ru$;
resolver 127.0.0.11 ipv6=off;
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;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://$domain-nginx:1238$request_uri;
}
}
server {
listen 80;
server_name yourgols.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name yourgols.com;
resolver 127.0.0.11 ipv6=off;
ssl_certificate /etc/allinvest/fullchain.pem;
ssl_certificate_key /etc/allinvest/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;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://yourgols-nginx:1238$request_uri;
}
}
}

View File

@@ -0,0 +1,85 @@
import os
import sys
from minio import Minio
from urllib.request import urlopen
from json import loads
minio_client = Minio(
"minio:9000",
access_key="serviceminioadmin",
secret_key=os.getenv("MINIO_SECRET_KEY", "minioadmin"),
secure=False,
)
def get(url):
with urlopen(url) as response:
data = response.read().decode("utf-8")
return loads(data)
try:
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 {{
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name {host};
ssl_certificate /etc/nginx/{host}/fullchain.pem;
ssl_certificate_key /etc/nginx/{host}/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;
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 / {{
resolver 127.0.0.11;
proxy_pass http://{target_host}:{port}$request_uri;
}}
}}\n\n
""".format(
host=host, target_host=params["host"], port=params["port"]
)
try:
fullchain = minio_client.get_object(
"certupdater", f"certificates/{host}/fullchain.pem"
)
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(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)
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-----
MHcCAQEEINNyhRc5/bs0M7kOOl2bh1BkcFyHG6m0+VSVNuMEN+E1oAoGCCqGSM49
AwEHoUQDQgAEnOOljp3cFclhrepAoo/OTovyU5RVDTKNc7p01odoygI5z4ZsIiiZ
L0lQ8Qfvj1fVlVtah9LPuz5chLMNK2KoLQ==
-----END EC PRIVATE KEY-----

View File

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

4
nginx/nginx-prod/run.sh Normal file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
python3 prepare.py
/docker-entrypoint.sh nginx -g 'daemon off;'

View File

@@ -4,6 +4,8 @@ mkdir /sprint-data/redis || true
mkdir /sprint-data/rabbitmq || true
mkdir /sprint-data/certs || true
mkdir /sprint-data/gitea || true
mkdir /sprint-data/clickhouse || true
chmod 777 /sprint-data/redis
chmod 777 /sprint-data/rabbitmq
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-development || 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 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/redis || true
mkdir /sprint-data/rabbitmq || true
mkdir /sprint-data/certs || 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/rabbitmq
chmod 777 /sprint-data/gitea
chmod 777 /sprint-data/clickhouse
chmod 777 /sprint-data/grafana