diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..963c242 --- /dev/null +++ b/.env.example @@ -0,0 +1,37 @@ +COMPOSE_PROJECT_NAME=private_image_dev + +POSTGRES_HOST=postgres +POSTGRES_DB=private_image +POSTGRES_USER=postgres +POSTGRES_PASSWORD=postgres +POSTGRES_PORT=5432 + +PGADMIN_DEFAULT_EMAIL=admin@example.com +PGADMIN_DEFAULT_PASSWORD=admin +PGADMIN_PORT=5555 + +BACKEND_PORT=3000 +FRONTEND_PORT=5173 + +NODE_ENV=development + +CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173 + +MAX_IMAGES_PER_UPLOAD=10 +MULTER_MAX_FILE_BYTES=10485760 + +CAPTCHA_ENABLED=true + +ALTCHA_HMAC_KEY=change-me-use-long-random-secret +ALTCHA_MAX_NUMBER=50000 + +NEVER_MODE_INACTIVITY_DAYS=365 + +THROTTLE_UPLOAD_TTL_MS=60000 +THROTTLE_UPLOAD_LIMIT=20 +THROTTLE_HOTLINK_PER_IP_TTL_MS=60000 +THROTTLE_HOTLINK_PER_IP_LIMIT=1000 +THROTTLE_HOTLINK_PER_ID_TTL_MS=60000 +THROTTLE_HOTLINK_PER_ID_LIMIT=120 + +VITE_MAX_IMAGES_PER_UPLOAD=10 diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..fc949aa --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,35 @@ +services: + postgres: + image: postgres:16 + container_name: ${COMPOSE_PROJECT_NAME}_postgres + restart: unless-stopped + environment: + POSTGRES_DB: ${POSTGRES_DB} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - private_image_postgres_data:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}'] + interval: 5s + timeout: 5s + retries: 10 + + pgadmin: + image: dpage/pgadmin4:8 + container_name: ${COMPOSE_PROJECT_NAME}_pgadmin + restart: unless-stopped + environment: + PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL} + PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD} + ports: + - '${PGADMIN_PORT}:80' + volumes: + - private_image_pgadmin_data:/var/lib/pgadmin + depends_on: + postgres: + condition: service_healthy + +volumes: + private_image_postgres_data: + private_image_pgadmin_data: