Compare commits
122 Commits
34217290c1
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| 090b437186 | |||
|
|
f6371f8813 | ||
| 62e301ec5b | |||
|
|
1af2cfa4e2 | ||
|
|
975ae0cedc | ||
| 9fad7dd21a | |||
|
|
0ba70d2e60 | ||
|
|
5a7d51e253 | ||
|
|
e4670693cd | ||
| 0877334a4b | |||
| d6669a1d11 | |||
|
|
90b875752b | ||
|
|
557aae3678 | ||
|
|
501769b234 | ||
|
|
f784e8b45b | ||
|
|
b0284f699b | ||
|
|
d394210099 | ||
|
|
af5414d0bb | ||
|
|
41a063fb51 | ||
|
|
e4a6d0e057 | ||
|
|
b1b239a208 | ||
|
|
dbbdece191 | ||
|
|
b12ffd4320 | ||
|
|
11462e658e | ||
|
|
0635632b13 | ||
|
|
a51eecd553 | ||
|
|
3a073fd7c9 | ||
|
|
4b5dd750dd | ||
|
|
dc9a4c78fb | ||
|
|
d339eb1d2a | ||
|
|
20fed38b6a | ||
|
|
08868f4388 | ||
|
|
cafd2be45a | ||
| e486a81e4f | |||
|
|
62813a17af | ||
| 1324c6f0a3 | |||
|
|
37337a68ab | ||
|
|
f35bbf3548 | ||
|
|
3b5541e98a | ||
|
|
76c072e36a | ||
|
|
c9ab3ab442 | ||
|
|
1da6bf7cb8 | ||
|
|
41be37ca66 | ||
|
|
c25c56b27b | ||
| 150337c17d | |||
| 5efa8a98da | |||
| 13b4fbbd69 | |||
| 3f32593755 | |||
| 8890a24d56 | |||
| fc6f0e7694 | |||
|
|
16b3adc2e3 | ||
|
|
3aeb01a6ca | ||
|
|
6ebd7f5930 | ||
|
|
506b71dc35 | ||
| 05523cd797 | |||
|
|
3e8e12a153 | ||
| f0a258a422 | |||
|
|
3e045ef3ca | ||
| 8bdb1f6a17 | |||
|
|
8696b5e003 | ||
| 02b3f3c740 | |||
|
|
6e8dc3126e | ||
| 04acdbf72b | |||
|
|
e8727274c3 | ||
| a24c79752d | |||
|
|
036f4bb2a9 | ||
| ce89f22545 | |||
|
|
861327a017 | ||
|
|
e174ff26c4 | ||
| e00d0b63e7 | |||
|
|
1f3bdc2bd3 | ||
| 223b6ac8a1 | |||
|
|
119d030552 | ||
| df0fdfe2e4 | |||
|
|
1b7979e37f | ||
| e968457afa | |||
|
|
f38bf04212 | ||
| 2c2920d7b5 | |||
|
|
7c65fb0d97 | ||
| 15b05eb4cf | |||
|
|
f43b90c2a5 | ||
|
|
f4dfcea203 | ||
| cd2e02bb82 | |||
|
|
90aaf361bb | ||
| 7e4b38e9da | |||
|
|
79b8240592 | ||
| 97ac924c22 | |||
|
|
f7a1e39c98 | ||
| f342e38fea | |||
|
|
3a8fde645f | ||
| b4bf02cb14 | |||
|
|
d1212d852b | ||
|
|
0994e3b25a | ||
| 0e3d0395d7 | |||
|
|
3806ba9446 | ||
| 2da700990b | |||
|
|
87d6c3460a | ||
|
|
84c36855e3 | ||
|
|
78550c3e6c | ||
|
|
8db60c72d0 | ||
| b3d731fb5e | |||
|
|
394cc64722 | ||
| c04cad9712 | |||
|
|
d2fa346a86 | ||
| fd030ea07e | |||
|
|
8f350225a4 | ||
| 3adc86e8eb | |||
|
|
01f490f10f | ||
| 47fc79299e | |||
|
|
d16e897dd9 | ||
| a8018d7e37 | |||
|
|
32f4530d32 | ||
| a721ab2f4f | |||
|
|
97e70d55ce | ||
| ce85345584 | |||
|
|
125e7cbcb1 | ||
| 2dea0a941c | |||
|
|
5c2bbb6751 | ||
| 6f5594ade5 | |||
|
|
b9252cf38d | ||
| 91007c85d8 | |||
|
|
81afaa3f16 |
@@ -7,6 +7,7 @@ services:
|
||||
networks:
|
||||
- common-infra-nginx-development
|
||||
- configurator
|
||||
- minio-development
|
||||
environment:
|
||||
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_DEV
|
||||
ports:
|
||||
@@ -26,9 +27,30 @@ services:
|
||||
update_config:
|
||||
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:
|
||||
@@ -55,6 +77,8 @@ services:
|
||||
|
||||
mongo:
|
||||
image: mongo:6.0.2
|
||||
networks:
|
||||
- mongo-development
|
||||
volumes:
|
||||
- /sprint-data/mongo:/data/db
|
||||
environment:
|
||||
@@ -74,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:
|
||||
@@ -118,6 +119,8 @@ services:
|
||||
|
||||
minio:
|
||||
image: bitnami/minio:2022.10.8
|
||||
networks:
|
||||
- minio-development
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
environment:
|
||||
@@ -146,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
|
||||
@@ -169,3 +172,11 @@ networks:
|
||||
external: true
|
||||
configurator:
|
||||
external: true
|
||||
clickhouse-development:
|
||||
external: true
|
||||
postgres-development:
|
||||
external: true
|
||||
mongo-development:
|
||||
external: true
|
||||
minio-development:
|
||||
external: true
|
||||
126
.deploy-infra/deploy-prod.yaml
Normal file → Executable file
126
.deploy-infra/deploy-prod.yaml
Normal file → Executable 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:
|
||||
@@ -155,7 +190,7 @@ services:
|
||||
USER_UID: 1000
|
||||
USER_GID: 1000
|
||||
GITEA__database__DB_TYPE: postgres
|
||||
GITEA__database__HOST: pg.sprinthub.ru:5432
|
||||
GITEA__database__HOST: pg.chocomarsh.com:5432
|
||||
GITEA__database__NAME: gitea
|
||||
GITEA__database__USER: postgres
|
||||
GITEA__database__PASSWD: $DB_PASSWORD_PROD
|
||||
@@ -175,7 +210,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: prod
|
||||
GITEA_RUNNER_LABELS: prod
|
||||
@@ -189,35 +224,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
|
||||
@@ -228,4 +234,14 @@ networks:
|
||||
net:
|
||||
driver: overlay
|
||||
common-infra-nginx:
|
||||
external: true
|
||||
external: true
|
||||
configurator:
|
||||
external: true
|
||||
clickhouse:
|
||||
external: true
|
||||
postgres:
|
||||
external: true
|
||||
mongo:
|
||||
external: true
|
||||
minio:
|
||||
external: true
|
||||
|
||||
@@ -6,6 +6,9 @@ services:
|
||||
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
|
||||
@@ -27,3 +30,5 @@ services:
|
||||
networks:
|
||||
common-infra-nginx-development:
|
||||
external: true
|
||||
configurator:
|
||||
external: true
|
||||
|
||||
@@ -6,6 +6,9 @@ services:
|
||||
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
|
||||
@@ -26,4 +29,6 @@ services:
|
||||
|
||||
networks:
|
||||
common-infra-nginx:
|
||||
external: true
|
||||
external: true
|
||||
configurator:
|
||||
external: true
|
||||
|
||||
@@ -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,6 +56,7 @@ 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 }}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -2,10 +2,12 @@ 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 requests minio
|
||||
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"]
|
||||
@@ -7,7 +7,18 @@ http {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name *.develop.sprinthub.ru;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name *.dev.chocomarsh.com;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
include ./hosts.conf;
|
||||
include ./sprinthub.conf;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDmTCCAx+gAwIBAgISBmM6pAg0qa3+cxLar5nvn27GMAoGCCqGSM49BAMDMDIx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||
NTAeFw0yNTA1MzAyMTEzMjZaFw0yNTA4MjgyMTEzMjVaMCExHzAdBgNVBAMMFiou
|
||||
ZGV2ZWxvcC5zcHJpbnRodWIucnUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATy
|
||||
YXxx4cfN6ga0duaq7STjZxNwtFQ7c0ZAO+D7ulmdf/jpK8Xfkj5d0KMX0jhTmTEg
|
||||
DUwvBMsH/fpyuuEdHNPWo4ICJDCCAiAwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQW
|
||||
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT1
|
||||
FLWsp0ksteuVXXd3pZokXOhj2DAfBgNVHSMEGDAWgBSfK1/PPCFPnQS37SssxMZw
|
||||
i9LXDTAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly9lNS5pLmxl
|
||||
bmNyLm9yZy8wIQYDVR0RBBowGIIWKi5kZXZlbG9wLnNwcmludGh1Yi5ydTATBgNV
|
||||
HSAEDDAKMAgGBmeBDAECATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vZTUuYy5s
|
||||
ZW5jci5vcmcvNzEuY3JsMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAEvFONL1T
|
||||
ckyEBhnDjz96E/jntWKHiJxtMAWE6+WGJjoAAAGXI0B2OwAABAMARzBFAiBcMmQQ
|
||||
PiKhuqhi3fs4yL6lfnQdZ1VlJTBifu8T6t4H3QIhAL/BdDUOafC+9nrlP7USrlCT
|
||||
Oo1TA5JG/Yvxk5a/Oe1yAHYA7TxL1ugGwqSiAFfbyyTiOAHfUS/txIbFcA8g3bc+
|
||||
P+AAAAGXI0CF1gAABAMARzBFAiAHI0Z170KObyMHOQM6w/GhsazTzUpBilyQnv/b
|
||||
Wr+kdwIhALS4DQNUNfiJoea0wszwoTxcnowGI7Whx8qH4Ut6st88MAoGCCqGSM49
|
||||
BAMDA2gAMGUCMGdO7CfUNB8wcMaHtED7/dy2ojOtofMze0kN0rzt2I/On55Ce84K
|
||||
ZJ0Uj+Bcv/66qwIxAJ9YJTSJ1+owoICDbJekE+ejgzA+GgU2Z+RviZUTNXIdbWbX
|
||||
etMXbXfP7WJPjxZ+ng==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
|
||||
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
|
||||
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
|
||||
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
|
||||
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
|
||||
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
|
||||
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
|
||||
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
|
||||
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
|
||||
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
|
||||
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
|
||||
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
|
||||
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
|
||||
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
|
||||
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
|
||||
VQD9F6Na/+zmXCc=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,23 +1,37 @@
|
||||
from requests import get
|
||||
import os
|
||||
import sys
|
||||
from minio import Minio
|
||||
from urllib.request import urlopen
|
||||
from json import loads
|
||||
|
||||
|
||||
minio_client = Minio(
|
||||
"minio.develop.sprinthub.ru:9000",
|
||||
"minio:9000",
|
||||
access_key="serviceminioadmin",
|
||||
secret_key=os.getenv("MINIO_SECRET_KEY", "minioadmin"),
|
||||
secure=False
|
||||
secure=False,
|
||||
)
|
||||
|
||||
|
||||
hosts = get('http://configurator/api/v1/fetch?project=certupdater&stage=development').json()['configs']['hosts']
|
||||
hosts = list(set(hosts + ['platform.develop.sprinthub.ru']))
|
||||
def get(url):
|
||||
with urlopen(url) as response:
|
||||
data = response.read().decode("utf-8")
|
||||
return loads(data)
|
||||
|
||||
config = ''
|
||||
for host in hosts:
|
||||
config += '''
|
||||
server \{
|
||||
|
||||
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};
|
||||
@@ -29,19 +43,43 @@ for host in hosts:
|
||||
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-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
location / \{
|
||||
proxy_pass http://{pre_domain}-nginx:1238$request_uri;
|
||||
\}
|
||||
\}\n\n
|
||||
'''.format(host=host, pre_domain=host.split('.')[0])
|
||||
fullchain = minio_client.get_object("certupdater", f'certificates/{host}/fullchain.pem')
|
||||
privkey = minio_client.get_object("certupdater", f'certificates/{host}/privkey.pem')
|
||||
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)
|
||||
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('/etc/nginx/hosts.conf', 'w') as fp:
|
||||
fp.write(config)
|
||||
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)
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIPtfut2MheT8iyX6/EXDHHDR9yvtYLxMUg34mLeCpngpoAoGCCqGSM49
|
||||
AwEHoUQDQgAE8mF8ceHHzeoGtHbmqu0k42cTcLRUO3NGQDvg+7pZnX/46SvF35I+
|
||||
XdCjF9I4U5kxIA1MLwTLB/36crrhHRzT1g==
|
||||
-----END EC PRIVATE KEY-----
|
||||
11
nginx/nginx-dev/refre.sh
Normal file
11
nginx/nginx-dev/refre.sh
Normal 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
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
python3 prepare.py
|
||||
/docker-entrypoint.sh nginx -g daemon;
|
||||
/docker-entrypoint.sh nginx -g 'daemon off;'
|
||||
@@ -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"]
|
||||
@@ -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-----
|
||||
@@ -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-----
|
||||
24
nginx/nginx-prod/config/nginx.conf
Normal file
24
nginx/nginx-prod/config/nginx.conf
Normal 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;
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDhzCCAw6gAwIBAgISBXELtGOqEI5IsXNFUC7cue03MAoGCCqGSM49BAMDMDIx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||
NTAeFw0yNTA1MzAyMTQ3MzZaFw0yNTA4MjgyMTQ3MzVaMBkxFzAVBgNVBAMMDiou
|
||||
c3ByaW50aHViLnJ1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoS3M+thgeup/
|
||||
F6JS7kVNJCWee8xzLkoIUcZNgNqmoovVSP02K9azdDRAp+c2OlzJqJQC+ZefswCB
|
||||
2xvjNSoL2aOCAhswggIXMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEF
|
||||
BQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUu+3qfzUyaCAb
|
||||
POu7GPUO6ZI2WfswHwYDVR0jBBgwFoAUnytfzzwhT50Et+0rLMTGcIvS1w0wMgYI
|
||||
KwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRwOi8vZTUuaS5sZW5jci5vcmcv
|
||||
MBkGA1UdEQQSMBCCDiouc3ByaW50aHViLnJ1MBMGA1UdIAQMMAowCAYGZ4EMAQIB
|
||||
MC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9lNS5jLmxlbmNyLm9yZy81Ni5jcmww
|
||||
ggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdgDd3Mo0ldfhFgXnlTL6x5/4PRxQ39sA
|
||||
OhQSdgosrLvIKgAAAZcjX78RAAAEAwBHMEUCIDNC6e7jNcTXW1bti1nkseruXw84
|
||||
b8dsVzBt96FtE4+aAiEAr7ugvtozhmp6JdkIEfdHKecym9TxcL1h43j6rbKU3d8A
|
||||
dQAaBP9J0FQdQK/2oMO/8djEZy9O7O4jQGiYaxdALtyJfQAAAZcjX8BoAAAEAwBG
|
||||
MEQCIDezeAIFZ25OWXVV9hmtzEE5ujP0IyFaLxebyXAflYZMAiAy09hFLQXapebE
|
||||
5YDtvqfmefapEsr4OaWyfusWjmeaiDAKBggqhkjOPQQDAwNnADBkAjAobO18Vk18
|
||||
BG7lBbXEQ0O8RYy+CEV/ef1ni2CBQp+MtmG/ZCWAbfEXFaj2WKng5Q0CMFRR9icx
|
||||
p6/tLUixnJfAusGudEtD5Leh2foPDT2jzgazaROaVFVTrCJMGcdgVukuPQ==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
|
||||
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
|
||||
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
|
||||
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
|
||||
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
|
||||
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
|
||||
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
|
||||
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
|
||||
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
|
||||
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
|
||||
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
|
||||
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
|
||||
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
|
||||
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
|
||||
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
|
||||
VQD9F6Na/+zmXCc=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
85
nginx/nginx-prod/prepare.py
Normal file
85
nginx/nginx-prod/prepare.py
Normal 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)
|
||||
@@ -1,5 +0,0 @@
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHcCAQEEIL0TAduonJLmbcDpRxDjSfa8bMIqLOh1KQcGQvAeQTIQoAoGCCqGSM49
|
||||
AwEHoUQDQgAEoS3M+thgeup/F6JS7kVNJCWee8xzLkoIUcZNgNqmoovVSP02K9az
|
||||
dDRAp+c2OlzJqJQC+ZefswCB2xvjNSoL2Q==
|
||||
-----END EC PRIVATE KEY-----
|
||||
4
nginx/nginx-prod/refre.sh
Normal file
4
nginx/nginx-prod/refre.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
python3 prepare.py
|
||||
nginx -s reload
|
||||
4
nginx/nginx-prod/run.sh
Normal file
4
nginx/nginx-prod/run.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
python3 prepare.py
|
||||
/docker-entrypoint.sh nginx -g 'daemon off;'
|
||||
@@ -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
|
||||
|
||||
@@ -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/gitea
|
||||
chmod 777 /sprint-data/clickhouse
|
||||
chmod 777 /sprint-data/grafana
|
||||
|
||||
Reference in New Issue
Block a user