fix: exclure .env et fichiers temporaires du versioning
This commit is contained in:
parent
d4e1bf2e15
commit
d29992be79
4 changed files with 3 additions and 338 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -7,3 +7,6 @@ apps/api/node_modules/
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.pyc
|
*.pyc
|
||||||
*.pyo
|
*.pyo
|
||||||
|
infra/.env
|
||||||
|
infra/temp
|
||||||
|
infra/docker-compose.yml.backup
|
||||||
|
|
|
||||||
16
infra/.env
16
infra/.env
|
|
@ -1,16 +0,0 @@
|
||||||
BM_DB_PASSWORD=Astatke2510!db
|
|
||||||
BM_DOMAIN=bm.nicolasfryder.ovh
|
|
||||||
NOMINATIM_EMAIL=tonmail@tondomaine.tld
|
|
||||||
NOMINATIM_USER_AGENT=bm-map/0.1 (contact: tonmail@tondomaine.tld)
|
|
||||||
DATABASE_URL=postgresql://bm:Astatke2510!db@db:5432/bm
|
|
||||||
|
|
||||||
# Recommandé (code-server sous-domaine dédié)
|
|
||||||
BM_CODE_DOMAIN=code.bm.nicolasfryder.ovh
|
|
||||||
CODESERVER_PASSWORD=Astatke2510!cod
|
|
||||||
|
|
||||||
TZ=Europe/Paris
|
|
||||||
PUID=1001
|
|
||||||
PGID=1001
|
|
||||||
BM_IMPORT_TOKEN=c4b99106fcd09badce25810e974ec450af127a4725cb774f03b72217a04eb338
|
|
||||||
PGADMIN_EMAIL=nicolasfryder@gmail.com
|
|
||||||
PGADMIN_PASSWORD=Astatke2510!
|
|
||||||
|
Before Width: | Height: | Size: 534 B |
|
|
@ -1,158 +0,0 @@
|
||||||
services:
|
|
||||||
db:
|
|
||||||
image: postgis/postgis:16-3.4
|
|
||||||
environment:
|
|
||||||
POSTGRES_DB: bm
|
|
||||||
POSTGRES_USER: bm
|
|
||||||
POSTGRES_PASSWORD: ${BM_DB_PASSWORD}
|
|
||||||
volumes:
|
|
||||||
- bm_pg_data:/var/lib/postgresql/data
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "pg_isready -U bm -d bm"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:7-alpine
|
|
||||||
command: ["redis-server", "--appendonly", "yes"]
|
|
||||||
volumes:
|
|
||||||
- bm_redis_data:/data
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
geocoder-enqueue:
|
|
||||||
image: python:3.12-slim
|
|
||||||
working_dir: /app
|
|
||||||
volumes:
|
|
||||||
- ../apps/geocoder:/app:ro
|
|
||||||
environment:
|
|
||||||
DATABASE_URL: ${DATABASE_URL}
|
|
||||||
GEOCODE_ENQUEUE_BATCH: "90000"
|
|
||||||
command: ["sh", "-lc", "pip install -r requirements.txt && python src/enqueue.py"]
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
restart: "no"
|
|
||||||
|
|
||||||
geocoder-worker:
|
|
||||||
image: python:3.12-slim
|
|
||||||
working_dir: /app
|
|
||||||
volumes:
|
|
||||||
- ../apps/geocoder:/app:ro
|
|
||||||
environment:
|
|
||||||
DATABASE_URL: ${DATABASE_URL}
|
|
||||||
NOMINATIM_BASE: "https://nominatim.openstreetmap.org"
|
|
||||||
NOMINATIM_EMAIL: ${NOMINATIM_EMAIL}
|
|
||||||
NOMINATIM_USER_AGENT: ${NOMINATIM_USER_AGENT}
|
|
||||||
NOMINATIM_MIN_DELAY: "1.05"
|
|
||||||
NOMINATIM_JITTER: "0.35"
|
|
||||||
GEOCODE_MAX_PER_RUN: "5000"
|
|
||||||
command: ["sh", "-lc", "pip install -r requirements.txt && python src/worker.py"]
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
restart: unless-stopped
|
|
||||||
pgadmin:
|
|
||||||
image: dpage/pgadmin4:8
|
|
||||||
environment:
|
|
||||||
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
|
|
||||||
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
|
|
||||||
PGADMIN_CONFIG_SERVER_MODE: "True"
|
|
||||||
volumes:
|
|
||||||
- pgadmin_data:/var/lib/pgadmin
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
- traefik_net
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.docker.network=stack-vps_admin
|
|
||||||
- traefik.http.routers.pgadmin.rule=Host(`pgadmin.bm.nicolasfryder.ovh`)
|
|
||||||
- traefik.http.routers.pgadmin.entrypoints=websecure
|
|
||||||
- traefik.http.routers.pgadmin.tls=true
|
|
||||||
- traefik.http.routers.pgadmin.tls.certresolver=le
|
|
||||||
- traefik.http.routers.pgadmin.middlewares=auth@file
|
|
||||||
- traefik.http.services.pgadmin.loadbalancer.server.port=80
|
|
||||||
api:
|
|
||||||
build:
|
|
||||||
context: ../apps/api
|
|
||||||
environment:
|
|
||||||
PORT: "3000"
|
|
||||||
DATABASE_URL: postgresql://bm:${BM_DB_PASSWORD}@db:5432/bm
|
|
||||||
BM_IMPORT_TOKEN: ${BM_IMPORT_TOKEN}
|
|
||||||
depends_on:
|
|
||||||
db:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
|
||||||
- ./overrides/api/src/server.js:/app/src/server.js:ro
|
|
||||||
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
- traefik_net
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.http.routers.bm-api.rule=Host(`bm.nicolasfryder.ovh`)
|
|
||||||
- traefik.http.routers.bm-api.entrypoints=websecure
|
|
||||||
- traefik.http.routers.bm-api.tls=true
|
|
||||||
- traefik.http.routers.bm-api.tls.certresolver=le
|
|
||||||
|
|
||||||
# CORS middleware
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowOriginList=https://metalfrom.eu,https://www.metalfrom.eu
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowMethods=GET,POST,PUT,PATCH,DELETE,OPTIONS
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowHeaders=*
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowCredentials=true
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.addVaryHeader=true
|
|
||||||
|
|
||||||
- traefik.http.routers.bm-api.middlewares=bm-cors@docker
|
|
||||||
|
|
||||||
code:
|
|
||||||
image: lscr.io/linuxserver/code-server:latest
|
|
||||||
environment:
|
|
||||||
PUID: "1001"
|
|
||||||
PGID: "1001"
|
|
||||||
TZ: "Europe/Paris"
|
|
||||||
PASSWORD: ${CODESERVER_PASSWORD}
|
|
||||||
SUDO_PASSWORD: ${CODESERVER_PASSWORD}
|
|
||||||
DEFAULT_WORKSPACE: /workspace
|
|
||||||
volumes:
|
|
||||||
- bm_codeserver_config:/config
|
|
||||||
- /srv/stacks/bm:/workspace
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
- traefik_net
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.docker.network=stack-vps_admin
|
|
||||||
- traefik.http.routers.bm-code.rule=Host(`code.bm.nicolasfryder.ovh`)
|
|
||||||
- traefik.http.routers.bm-code.entrypoints=websecure
|
|
||||||
- traefik.http.routers.bm-code.tls=true
|
|
||||||
- traefik.http.services.bm-code.loadbalancer.server.port=8443
|
|
||||||
|
|
||||||
worker:
|
|
||||||
build:
|
|
||||||
context: ../apps/worker
|
|
||||||
environment:
|
|
||||||
DB_DSN: postgresql://bm:${BM_DB_PASSWORD}@db:5432/bm
|
|
||||||
MA_LIST_URL: https://www.metal-archives.com/lists/FR
|
|
||||||
MA_STATE_PATH: /app/ma_state.json
|
|
||||||
depends_on:
|
|
||||||
db:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
|
||||||
- /srv/stacks/bm/infra/ma_state.json:/app/ma_state.json:ro
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
restart: "no"
|
|
||||||
|
|
||||||
networks:
|
|
||||||
traefik_net:
|
|
||||||
external: true
|
|
||||||
name: stack-vps_admin
|
|
||||||
bm_internal:
|
|
||||||
driver: bridge
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
bm_pg_data:
|
|
||||||
bm_redis_data:
|
|
||||||
bm_codeserver_config:
|
|
||||||
pgadmin_data:
|
|
||||||
|
|
||||||
164
infra/temp
164
infra/temp
|
|
@ -1,164 +0,0 @@
|
||||||
services:
|
|
||||||
db:
|
|
||||||
image: postgis/postgis:16-3.4
|
|
||||||
environment:
|
|
||||||
POSTGRES_DB: bm
|
|
||||||
POSTGRES_USER: bm
|
|
||||||
POSTGRES_PASSWORD: ${BM_DB_PASSWORD}
|
|
||||||
volumes:
|
|
||||||
- bm_pg_data:/var/lib/postgresql/data
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "pg_isready -U bm -d bm"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:7-alpine
|
|
||||||
command: ["redis-server", "--appendonly", "yes"]
|
|
||||||
volumes:
|
|
||||||
- bm_redis_data:/data
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
|
|
||||||
# ✅ SÉCURISÉ : Pre-build avec Dockerfile
|
|
||||||
geocoder-enqueue:
|
|
||||||
build:
|
|
||||||
context: ../apps/geocoder
|
|
||||||
working_dir: /app
|
|
||||||
environment:
|
|
||||||
DATABASE_URL: ${DATABASE_URL}
|
|
||||||
GEOCODE_ENQUEUE_BATCH: "90000"
|
|
||||||
command: ["python", "src/enqueue.py"]
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
restart: "no"
|
|
||||||
|
|
||||||
# ✅ SÉCURISÉ : Pre-build avec Dockerfile
|
|
||||||
geocoder-worker:
|
|
||||||
build:
|
|
||||||
context: ../apps/geocoder
|
|
||||||
working_dir: /app
|
|
||||||
environment:
|
|
||||||
DATABASE_URL: ${DATABASE_URL}
|
|
||||||
NOMINATIM_BASE: "https://nominatim.openstreetmap.org"
|
|
||||||
NOMINATIM_EMAIL: ${NOMINATIM_EMAIL}
|
|
||||||
NOMINATIM_USER_AGENT: ${NOMINATIM_USER_AGENT}
|
|
||||||
NOMINATIM_MIN_DELAY: "1.05"
|
|
||||||
NOMINATIM_JITTER: "0.35"
|
|
||||||
GEOCODE_MAX_PER_RUN: "5000"
|
|
||||||
command: ["python", "src/worker.py"]
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
# ✅ SÉCURISÉ : Double auth + rate limiting
|
|
||||||
pgadmin:
|
|
||||||
image: dpage/pgadmin4:8
|
|
||||||
environment:
|
|
||||||
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
|
|
||||||
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
|
|
||||||
PGADMIN_CONFIG_SERVER_MODE: "True"
|
|
||||||
volumes:
|
|
||||||
- pgadmin_data:/var/lib/pgadmin
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
- traefik_net
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.docker.network=stack-vps_admin
|
|
||||||
- traefik.http.routers.pgadmin.rule=Host(`pgadmin.bm.nicolasfryder.ovh`)
|
|
||||||
- traefik.http.routers.pgadmin.entrypoints=websecure
|
|
||||||
- traefik.http.routers.pgadmin.tls=true
|
|
||||||
- traefik.http.routers.pgadmin.tls.certresolver=le
|
|
||||||
# ✅ CHANGÉ : Utilise le nouveau middleware avec rate limiting
|
|
||||||
- traefik.http.routers.pgadmin.middlewares=pgadmin-auth@file,pgadmin-ratelimit@file
|
|
||||||
- traefik.http.services.pgadmin.loadbalancer.server.port=80
|
|
||||||
|
|
||||||
api:
|
|
||||||
build:
|
|
||||||
context: ../apps/api
|
|
||||||
environment:
|
|
||||||
PORT: "3000"
|
|
||||||
DATABASE_URL: postgresql://bm:${BM_DB_PASSWORD}@db:5432/bm
|
|
||||||
BM_IMPORT_TOKEN: ${BM_IMPORT_TOKEN}
|
|
||||||
depends_on:
|
|
||||||
db:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
|
||||||
- ./overrides/api/src/server.js:/app/src/server.js:ro
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
- traefik_net
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.http.routers.bm-api.rule=Host(`bm.nicolasfryder.ovh`)
|
|
||||||
- traefik.http.routers.bm-api.entrypoints=websecure
|
|
||||||
- traefik.http.routers.bm-api.tls=true
|
|
||||||
- traefik.http.routers.bm-api.tls.certresolver=le
|
|
||||||
|
|
||||||
# CORS middleware
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowOriginList=https://metalfrom.eu,https://www.metalfrom.eu
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowMethods=GET,POST,PUT,PATCH,DELETE,OPTIONS
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowHeaders=*
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.accessControlAllowCredentials=true
|
|
||||||
- traefik.http.middlewares.bm-cors.headers.addVaryHeader=true
|
|
||||||
|
|
||||||
- traefik.http.routers.bm-api.middlewares=bm-cors@docker
|
|
||||||
|
|
||||||
# ✅ SÉCURISÉ : Double auth + rate limiting
|
|
||||||
code:
|
|
||||||
image: lscr.io/linuxserver/code-server:latest
|
|
||||||
environment:
|
|
||||||
PUID: "1001"
|
|
||||||
PGID: "1001"
|
|
||||||
TZ: "Europe/Paris"
|
|
||||||
PASSWORD: ${CODESERVER_PASSWORD}
|
|
||||||
SUDO_PASSWORD: ${CODESERVER_PASSWORD}
|
|
||||||
DEFAULT_WORKSPACE: /workspace
|
|
||||||
volumes:
|
|
||||||
- bm_codeserver_config:/config
|
|
||||||
- /srv/stacks/bm:/workspace
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
- traefik_net
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.docker.network=stack-vps_admin
|
|
||||||
- traefik.http.routers.bm-code.rule=Host(`code.bm.nicolasfryder.ovh`)
|
|
||||||
- traefik.http.routers.bm-code.entrypoints=websecure
|
|
||||||
- traefik.http.routers.bm-code.tls=true
|
|
||||||
# ✅ AJOUTÉ : Double auth + rate limiting
|
|
||||||
- traefik.http.routers.bm-code.middlewares=code-auth@file,code-ratelimit@file
|
|
||||||
- traefik.http.services.bm-code.loadbalancer.server.port=8443
|
|
||||||
|
|
||||||
worker:
|
|
||||||
build:
|
|
||||||
context: ../apps/worker
|
|
||||||
environment:
|
|
||||||
DB_DSN: postgresql://bm:${BM_DB_PASSWORD}@db:5432/bm
|
|
||||||
MA_LIST_URL: https://www.metal-archives.com/lists/FR
|
|
||||||
MA_STATE_PATH: /app/ma_state.json
|
|
||||||
depends_on:
|
|
||||||
db:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
|
||||||
- /srv/stacks/bm/infra/ma_state.json:/app/ma_state.json:ro
|
|
||||||
networks:
|
|
||||||
- bm_internal
|
|
||||||
restart: "no"
|
|
||||||
|
|
||||||
networks:
|
|
||||||
traefik_net:
|
|
||||||
external: true
|
|
||||||
name: stack-vps_admin
|
|
||||||
bm_internal:
|
|
||||||
driver: bridge
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
bm_pg_data:
|
|
||||||
bm_redis_data:
|
|
||||||
bm_codeserver_config:
|
|
||||||
pgadmin_data:
|
|
||||||
Loading…
Reference in a new issue