APP_NAME=그누보드7 APP_ENV=production APP_KEY= APP_DEBUG=false APP_URL=http://localhost APP_VERSION=7.0.11 # 리버스 프록시(AWS ALB, CloudFront, Cloudflare, nginx, ngrok) 뒤에서 HTTPS 를 인식하려면 # 신뢰할 프록시를 지정합니다. 미설정 시 아무 프록시도 신뢰하지 않습니다(기존 동작). # * = 직전 호출 IP 만 신뢰 (동일 호스트 프록시·ALB. ** 도 동일하게 동작합니다) # IP,IP/CIDR = 지정 목록만 신뢰 (프록시가 여러 단이면 모든 단을 나열해야 합니다) # * 은 앱이 프록시 없이는 도달 불가한 구성에서만 사용하세요 — docs/backend/reverse-proxy.md # TRUSTED_PROXIES=* # HTTPS 사이트에서 세션 쿠키에 Secure 속성을 강제합니다(미설정 시 요청 스킴으로 자동 판정). # SESSION_SECURE_COOKIE=true APP_LOCALE=ko APP_FALLBACK_LOCALE=ko APP_FAKER_LOCALE=ko_KR APP_MAINTENANCE_DRIVER=file # APP_MAINTENANCE_STORE=database PHP_CLI_SERVER_WORKERS=4 PHP_BINARY=php COMPOSER_BINARY= BCRYPT_ROUNDS=12 LOG_CHANNEL=stack LOG_STACK=single LOG_DEPRECATIONS_CHANNEL=null # 설치 직후 기본값은 운영 기준(error). 관리자 환경설정 > 고급에서 조정하며, # 그 값이 이 항목보다 우선합니다. debug 로 두면 정상 동작 기록까지 매 요청 쌓입니다. LOG_LEVEL=error DB_CONNECTION=mysql # Write Database Connection (Primary) DB_WRITE_HOST=127.0.0.1 DB_WRITE_PORT=3306 DB_WRITE_DATABASE=g7 DB_WRITE_USERNAME=root DB_WRITE_PASSWORD= # Database Table Prefix (optional) DB_PREFIX=g7_ # Read Database Connection (Optional) # 비워두면 각 항목이 대응하는 DB_WRITE_* 값으로 대체됩니다 (config/database.php). # Read 전용 DB(리플리카)를 쓸 때만 값을 채우세요. DB_READ_HOST= DB_READ_PORT= DB_READ_DATABASE= DB_READ_USERNAME= DB_READ_PASSWORD= SESSION_DRIVER=database SESSION_LIFETIME=120 SESSION_ENCRYPT=false SESSION_PATH=/ SESSION_DOMAIN=null SESSION_COOKIE=g7-session BROADCAST_CONNECTION=reverb FILESYSTEM_DISK=local QUEUE_CONNECTION=database # Laravel Scout (검색엔진) SCOUT_DRIVER=mysql-fulltext # Laravel Reverb (WebSocket) REVERB_APP_ID= REVERB_APP_KEY= REVERB_APP_SECRET= REVERB_HOST="localhost" REVERB_PORT=8080 REVERB_SCHEME=https REVERB_VERIFY_SSL=true VITE_REVERB_APP_KEY="${REVERB_APP_KEY}" VITE_REVERB_HOST="${REVERB_HOST}" VITE_REVERB_PORT="${REVERB_PORT}" VITE_REVERB_SCHEME="${REVERB_SCHEME}" CACHE_STORE=database CACHE_PREFIX=g7-cache- MEMCACHED_HOST=127.0.0.1 REDIS_CLIENT=phpredis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PREFIX=g7-database- REDIS_PORT=6379 MAIL_MAILER=log MAIL_SCHEME=null MAIL_HOST=127.0.0.1 MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false # 아래 3키는 사용할 때만 주석을 해제하세요 — 값 없는 `KEY=` 는 "미설정" 이 아니라 # 빈 문자열로 적용됩니다 (S3 공개 URL / S3 호환 엔드포인트 / 첨부 디스크 강제 지정) # AWS_URL= # AWS_ENDPOINT= # ATTACHMENT_DISK= VITE_APP_NAME="${APP_NAME}" # ── .env 키 단위 우선 (선택) ──────────────────────────────────────────────── # 기본값은 관리자 환경설정(admin UI)이 운영 SSoT 이고, 저장된 값이 아래 항목들의 # .env 값을 덮습니다. 이 스위치를 켜면 .env 에 **값이 명시된 항목만** 그 덮어쓰기에서 # 빠져 .env 가 권위를 갖고, 관리자 화면의 해당 필드는 편집 불가로 표시됩니다. # 켜지 않으면 아무 것도 달라지지 않습니다(기존 설치 무영향). # 주의: 이 파일은 값을 채워 배포되므로, 켜는 즉시 APP_NAME·LOG_LEVEL· # G7_UPDATE_GITHUB_URL 같은 이미 채워진 항목이 함께 잠깁니다. # .env 만 편집한 뒤에는 php artisan config:cache 를 다시 실행해야 반영됩니다. # 대상 항목과 규약: docs/backend/admin-settings-access.md # G7_ENV_PRIORITY=true # 코어 업데이트 G7_UPDATE_GITHUB_URL=https://github.com/gnuboard/g7 G7_UPDATE_GITHUB_TOKEN= G7_UPDATE_PENDING_PATH= # spawn 자식 프로세스 실패 시 동작 모드 (기본: abort) # - abort : 즉시 abort + 운영자에게 수동 명령 안내 (안전 우선, stale 메모리 fatal 차단) # - fallback : in-process fallback 진행 (proc_open 미지원 공유 호스팅 호환, stale 메모리 위험 잔존) # G7_UPDATE_SPAWN_FAILURE_MODE=abort # 부트스트랩 리소스 정적 게시 (public/build/ext) — 끄면 전면 API 폴백(종전 동작). # 상태·수동 복구: php artisan ext-static:status / 관리자 > 환경설정 > 일반 「초기 화면 정적 파일」 # G7_STATIC_CACHE=true # SEO 봇 캐시 상한 (config/core.php seo_cache_limits). 봇 판정은 User-Agent 뿐이라 위장이 # 가능하고, 캐시 키에 쿼리가 들어가므로 값만 바꾼 반복 요청이 매번 렌더·저장을 유발한다. # 렌더 예산을 넘긴 요청은 오류가 아니라 일반 SPA 응답(X-SEO-Cache: BYPASS)을 받는다. # G7_SEO_CACHE_MAX_QUERY_PARAMS=10 # G7_SEO_CACHE_MAX_QUERY_LENGTH=512 # G7_SEO_CACHE_MAX_VARIANTS_PER_PATH=50 # G7_SEO_CACHE_MAX_ENTRIES=20000 # G7_SEO_RENDER_MISSES_PER_MINUTE=60 # G7_SEO_STATS_RECORDS_PER_MINUTE=300 # 코어 업데이트 경로 목록 (선택). 재정의 시 **전체 목록을 다시 적는다** — 부분값은 기본 항목을 # 통째로 대체한다 (예: excludes 에서 build/ext 가 빠지면 --prune 이 정적 게시본을 지운다). # 기본값은 config/app.php 의 update 절과 같다. # G7_UPDATE_EXCLUDES=node_modules,.git,bootstrap/cache,build/ext # G7_UPDATE_TARGETS=app,bootstrap,config,database,docs,lang,lang-packs/_bundled,resources,routes,public,tests,upgrades,scripts,artisan,composer.json,composer.json.default,composer.lock,package.json,package-lock.json,vite.config.js,vite.config.core.js,vite.config.editor.js,vite.config.devtools.js,vite.config.devdashboard.js,vitest.config.ts,playwright.config.ts,tsconfig.json,phpunit.xml,pint.json,.editorconfig,.gitattributes,.gitignore,README.md,README.ko.md,CHANGELOG.md,modules/_bundled,plugins/_bundled,templates/_bundled # G7_UPDATE_PROTECTED_PATHS= (기본 목록은 config/app.php 의 update.protected_paths — 재정의할 때 그 목록을 그대로 옮겨 적고 항목을 덧붙인다) # G7_UPDATE_RESTORE_OWNERSHIP=storage/logs,storage/framework,storage/app/core_pending,storage/app/extension_backups,storage/app/core_backups,bootstrap/cache,vendor,modules,modules/_pending,plugins,plugins/_pending,templates,templates/_pending,lang-packs,lang-packs/_pending,public/build/ext # G7_UPDATE_RESTORE_OWNERSHIP_GROUP_WRITABLE=storage/logs,storage/framework,storage/app/core_pending,storage/app/extension_backups,storage/app/core_backups,bootstrap/cache,vendor,modules,modules/_pending,plugins,plugins/_pending,templates,templates/_pending,lang-packs,lang-packs/_pending,public/build/ext