Compare commits

...

24 Commits

Author SHA1 Message Date
05571ceb34 Merge pull request 'master' (#43) from master into dev
Reviewed-on: #43
2025-06-01 19:39:33 +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
Egor Matveev
f4408a4f74 fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 11s
Deploy Prod / Push (pull_request) Successful in 8s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 33s
2025-03-28 21:49:19 +03:00
Egor Matveev
bd11e6aa27 keycloak
All checks were successful
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) Successful in 32s
2025-03-28 21:45:13 +03:00
Egor Matveev
d746ec6a50 keycloak
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 37s
2025-03-28 21:42:39 +03:00
Egor Matveev
b8016d8b32 keycloak
All checks were successful
Deploy Prod / Build (pull_request) Successful in 13s
Deploy Prod / Push (pull_request) Successful in 9s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 34s
2025-03-28 21:34:38 +03:00
Egor Matveev
05c8990e52 keycloak
Some checks failed
Deploy Prod / Build (pull_request) Successful in 1m48s
Deploy Prod / Push (pull_request) Successful in 52s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Failing after 46s
2025-03-28 21:27:56 +03:00
Egor Matveev
f7a993c8a4 keycloak
Some checks failed
Deploy Prod / Push (pull_request) Has been cancelled
Deploy Prod / prepare (pull_request) Has been cancelled
Deploy Prod / Deploy prod (pull_request) Has been cancelled
Deploy Prod / Build (pull_request) Has been cancelled
2025-03-28 21:26:52 +03:00
fefbfb9b24 Merge branch 'prod' into master
All checks were successful
Deploy Prod / Build (pull_request) Successful in 57s
Deploy Prod / Push (pull_request) Successful in 23s
Deploy Prod / prepare (pull_request) Successful in 6s
Deploy Prod / Deploy prod (pull_request) Successful in 32s
2025-02-14 01:10:45 +03:00
010964c0eb Merge pull request 'fix' (#32) from master into prod
Reviewed-on: #32
2024-11-24 11:03:30 +03:00
052d3d3024 Merge pull request 'master' (#31) from master into prod
Reviewed-on: #31
2024-11-23 22:21:45 +03:00
c334ea47ef Merge pull request 'join' (#28) from join into prod
Reviewed-on: #28
2024-11-23 22:08:47 +03:00
e5bf36ed88 Merge pull request 'nginx' (#25) from join into prod
Reviewed-on: #25
2024-11-23 21:13:24 +03:00
de23e8feef Merge pull request 'fix' (#24) from join into prod
Reviewed-on: #24
2024-11-23 21:08:15 +03:00
06dae5154f Merge pull request 'join' (#23) from join into prod
Reviewed-on: #23
2024-11-23 21:06:16 +03:00
17e7fa18b6 Merge pull request 'join' (#19) from join into prod
Reviewed-on: #19
2024-11-23 11:10:50 +03:00
3ae8d2c1a5 Merge pull request 'placement' (#18) from master into prod
Reviewed-on: #18
2024-11-23 10:38:08 +03:00
338c206337 Merge pull request 'add network' (#17) from master into prod
Reviewed-on: #17
2024-11-22 21:46:18 +03:00
9cdbfa177d Merge pull request 'master' (#15) from master into prod
Reviewed-on: #15
2024-11-22 01:22:09 +03:00
0fc131043a Merge pull request 'up' (#10) from master into prod
Reviewed-on: #10
2024-11-16 15:30:27 +03:00
45dfbcd901 Merge pull request 'master' (#8) from master into prod
Reviewed-on: #8
2024-10-12 22:36:15 +03:00
f83729cc82 Merge pull request 'gitea-migration' (#5) from gitea-migration into prod
Reviewed-on: #5
2024-10-12 15:49:10 +03:00
9 changed files with 156 additions and 47 deletions

View File

@ -189,6 +189,35 @@ 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

View File

@ -0,0 +1,29 @@
version: "3.6"
services:
nginx:
image: mathwave/sprint-repo:sprint-infra-nginx-dev
networks:
- common-infra-nginx-development
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

View File

@ -0,0 +1,29 @@
version: "3.6"
services:
nginx:
image: mathwave/sprint-repo:sprint-infra-nginx-prod
networks:
- common-infra-nginx
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

View File

@ -1,4 +1,7 @@
FROM nginx FROM nginx
RUN apt-get update
RUN apt-get install certbot --yes
RUN apt-get install python3-certbot-nginx --yes
COPY ./config /etc/nginx COPY ./config /etc/nginx
COPY ./privkey.pem /etc/nginx/privkey.pem COPY ./privkey.pem /etc/nginx/privkey.pem
COPY ./fullchain.pem /etc/nginx/fullchain.pem COPY ./fullchain.pem /etc/nginx/fullchain.pem

View File

@ -1,24 +1,24 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
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
pg== etMXbXfP7WJPjxZ+ng==
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
@ -45,4 +45,4 @@ K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
VQD9F6Na/+zmXCc= VQD9F6Na/+zmXCc=
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

@ -1,5 +1,5 @@
-----BEGIN EC PRIVATE KEY----- -----BEGIN EC PRIVATE KEY-----
MHcCAQEEIPXF013iLs5Jvxsj7K8xdzqyUBQxFILJ3dEyTriIJQaDoAoGCCqGSM49 MHcCAQEEIPtfut2MheT8iyX6/EXDHHDR9yvtYLxMUg34mLeCpngpoAoGCCqGSM49
AwEHoUQDQgAEFgkx3o+snh4FIRyZRqyN//HBZT3aFVnm+CfuQzmhCoaXXi/dCVjT AwEHoUQDQgAE8mF8ceHHzeoGtHbmqu0k42cTcLRUO3NGQDvg+7pZnX/46SvF35I+
FSK28+MmmvS04mHs66+aV6HL3UvXwU/8xw== XdCjF9I4U5kxIA1MLwTLB/36crrhHRzT1g==
-----END EC PRIVATE KEY----- -----END EC PRIVATE KEY-----

View File

@ -1,23 +1,23 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
@ -44,4 +44,4 @@ K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
VQD9F6Na/+zmXCc= VQD9F6Na/+zmXCc=
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

@ -164,6 +164,25 @@ http {
} }
} }
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 { server {
listen 443 ssl http2; listen 443 ssl http2;
listen [::]:443 ssl http2; listen [::]:443 ssl http2;

View File

@ -1,5 +1,5 @@
-----BEGIN EC PRIVATE KEY----- -----BEGIN EC PRIVATE KEY-----
MHcCAQEEINNyhRc5/bs0M7kOOl2bh1BkcFyHG6m0+VSVNuMEN+E1oAoGCCqGSM49 MHcCAQEEIL0TAduonJLmbcDpRxDjSfa8bMIqLOh1KQcGQvAeQTIQoAoGCCqGSM49
AwEHoUQDQgAEnOOljp3cFclhrepAoo/OTovyU5RVDTKNc7p01odoygI5z4ZsIiiZ AwEHoUQDQgAEoS3M+thgeup/F6JS7kVNJCWee8xzLkoIUcZNgNqmoovVSP02K9az
L0lQ8Qfvj1fVlVtah9LPuz5chLMNK2KoLQ== dDRAp+c2OlzJqJQC+ZefswCB2xvjNSoL2Q==
-----END EC PRIVATE KEY----- -----END EC PRIVATE KEY-----