
bunkerweb testing
๐ก๏ธ ์คํ์์ค ๋ฐ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฉํ๋ฒฝ (WAF)
๐ ์น์ฌ์ดํธ
|
๐ค ํจ๋
|
๐ ๋ฌธ์
|
๐จโ๐ป ๋ฐ๋ชจ
|
๐ฑ ๋ฐ๋ชจ UI
|
๐งฉ ํ
ํ๋ฆฟ
|
๐ก๏ธ ์์
๐ฌ ์ฑํ
|
๐ ํฌ๋ผ
|
๐ ์ปค๋ฎค๋ํฐ
|
๐บ๏ธ ์ํ ์ง๋
|
๐ ์ํ
|
๐ ํผ๋๋ฐฑ
๐ก๏ธ ๊ธฐ๋ณธ ๋ณด์์ ๋ค์ ์๋ํ๊ฒ!
BunkerWeb
BunkerWeb์ ์ฐจ์ธ๋ ์คํ์์ค ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฉํ๋ฒฝ(WAF)์ ๋๋ค.
๋ด๋ถ์ ์ผ๋ก NGINX ๊ธฐ๋ฐ์ ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์น ์๋ฒ๋ก์, ์น ์๋น์ค๋ฅผ ๋ณดํธํ์ฌ "๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํ(secure by default)" ์ํ๋ก ๋ง๋ค์ด ์ค๋๋ค. BunkerWeb์ Linux, Docker, Swarm, Kubernetes ๋ฑ ๊ธฐ์กด ํ๊ฒฝ์ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ๋งค๋๋ฝ๊ฒ ํตํฉ๋๋ฉฐ, ์ฌ์ฉ์์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ์์ ํ ๊ตฌ์ฑํ ์ ์์ต๋๋ค(CLI๊ฐ ๋ง์์ ๋ค์ง ์๋๋ค๋ฉด ๋ฉ์ง ์น UI๋ ์์ผ๋ ๋นํฉํ์ง ๋ง์ธ์). ์ฆ, ์ฌ์ด๋ฒ ๋ณด์์ ๋ ์ด์ ๋ฒ๊ฑฐ๋ก์ด ์ผ์ด ์๋๋๋ค.
BunkerWeb์ ํต์ฌ ๊ธฐ๋ฅ์ผ๋ก ์ฃผ์ ๋ณด์ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ํ๋ฌ๊ทธ์ธ ์์คํ ์ ํตํด ์ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
์ BunkerWeb์ธ๊ฐ?
https://github.com/user-attachments/assets/c3fed740-28d8-4335-ab05-113a9e815b4f
- ๊ธฐ์กด ํ๊ฒฝ์ ์ฌ์ด ํตํฉ: BunkerWeb์ Linux, Docker, Swarm, Kubernetes ๋ฑ ๋ค์ํ ํ๊ฒฝ์ ๋งค๋๋ฝ๊ฒ ํตํฉํ์ธ์. ์ํํ ์ ํ๊ณผ ๋ฒ๊ฑฐ๋ก์ ์๋ ๊ตฌ์ถ์ ๊ฒฝํํ ์ ์์ต๋๋ค.
- ๋์ ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅ์ฑ: BunkerWeb์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์ฝ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ฅ์ ์์ํ๊ฒ ํ์ฑํ, ๋นํ์ฑํ, ๊ตฌ์ฑํ์ฌ ๊ณ ์ ํ ์ฌ์ฉ ์ฌ๋ก์ ๋ฐ๋ผ ๋ณด์ ์ค์ ์ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ ๋ณด์(secure by default): BunkerWeb์ ์น ์๋น์ค์ ๋ํด ๋ณ๋์ ์ค์ ์์ด ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ํ์ ๋ณด์์ ์ ๊ณตํฉ๋๋ค. ์ฒ์๋ถํฐ ์์ฌํ๊ณ ๊ฐํ๋ ๋ณดํธ๋ฅผ ๊ฒฝํํ ์ ์์ต๋๋ค.
- ๋ฉ์ง ์น UI: ๋ฐ์ด๋ ์น ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ก BunkerWeb์ ๋ ํจ์จ์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์นํ์ ์ธ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ค์ ๊ณผ ๊ตฌ์ฑ์ ์ฝ๊ฒ ํ์ํ ์ ์์ด ๋ช ๋ น์ค ์ธํฐํ์ด์ค(CLI)๊ฐ ํ์ํ์ง ์์ต๋๋ค.
- ํ๋ฌ๊ทธ์ธ ์์คํ : BunkerWeb์ ๊ธฐ๋ฅ์ ํ์ฅํ์ฌ ์์ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง์ถ ์ ์์ต๋๋ค. ์ถ๊ฐ ๋ณด์ ์กฐ์น๋ฅผ ๋งค๋๋ฝ๊ฒ ํตํฉํ๊ณ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ BunkerWeb์ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
- '์์ '์ ์๋ฏธ์์ ๋ฌด๋ฃ: BunkerWeb์ ์์ AGPLv3 ๋ผ์ด์ ์ค๋ก ๋ฐฐํฌ๋๋ฉฐ ์์ ์ ๊ฐ๋ฐฉ์ ์์น์ ๋ฐ๋ฆ ๋๋ค. ์ง์ ์ปค๋ฎค๋ํฐ์ ๋ท๋ฐ์นจ ์์์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉ, ์์ , ๋ฐฐํฌํ ์์ ๋ฅผ ๋๋ฆฌ์ธ์.
- ์ ๋ฌธ ์๋น์ค: BunkerWeb ์ ์ง๊ด๋ฆฌ์๋ก๋ถํฐ ๊ธฐ์ ์ง์, ๋ง์ถคํ ์ปจ์คํ , ๋ง์ถค ๊ฐ๋ฐ์ ์ง์ ๋ฐ์ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Bunker ํจ๋์ ๋ฐฉ๋ฌธํ์ธ์.
๋ณด์ ๊ธฐ๋ฅ
๋ค์์ ๋ณด์ ๊ธฐ๋ฅ ์ค ์ผ๋ถ์ ๋๋ค(์ ์ฒด ๋ชฉ๋ก์ด ์๋):
- HTTPS ์ง์ ๋ฐ ํฌ๋ช ํ Let's Encrypt ์๋ํ
- ์ต์ ์น ๋ณด์: HTTP ๋ณด์ ํค๋, ์ ๋ณด ์ ์ถ ๋ฐฉ์ง, TLS ๊ฐํ ๋ฑ
- OWASP Core Rule Set์ด ํตํฉ๋ ModSecurity WAF
- HTTP ์ํ ์ฝ๋ ๊ธฐ๋ฐ ๋น์ ์ ํ๋ ์๋ ์ฐจ๋จ
- ํด๋ผ์ด์ธํธ์ ๋ํ ์ฐ๊ฒฐ ๋ฐ ์์ฒญ ์ ํ ์ ์ฉ
- ์ฑ๋ฆฐ์ง(์: ์ฟ ํค, JavaScript, captcha, hCaptcha, reCAPTCHA)๋ฅผ ํด๊ฒฐํ๋๋ก ์๊ตฌํ์ฌ ๋ด ์ฐจ๋จ
- ์ธ๋ถ ๋ธ๋๋ฆฌ์คํธ์ DNSBL์ ์ฌ์ฉํ ์๋ ค์ง ์ ์ฑ IP ์ฐจ๋จ
- ๊ทธ ์ธ์๋ ๋ค์ํฉ๋๋ค...
ํต์ฌ ๋ณด์ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฌธ์์ ๋ณด์ ํ๋ ์น์ ์์ ํ์ธํ์ธ์.
๋ฐ๋ชจ
https://github.com/user-attachments/assets/6fc0e3c1-d353-4a84-bad0-15bf9b6623a5
BunkerWeb์ผ๋ก ๋ณดํธ๋๋ ๋ฐ๋ชจ ์น์ฌ์ดํธ๋ demo.bunkerweb.io์์ ์ด์ฉํ ์ ์์ต๋๋ค. ์์ ๋กญ๊ฒ ๋ฐฉ๋ฌธํ์ฌ ๋ณด์ ํ ์คํธ๋ฅผ ์ํํด ๋ณด์ธ์.
์น UI
https://github.com/user-attachments/assets/a3ed56f8-c124-4ca9-b8b3-4be0913b3078
BunkerWeb์ ์ธ์คํด์ค์ ํด๋น ๊ตฌ์ฑ์ ๊ด๋ฆฌํ ์ ์๋ ์ ํ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์จ๋ผ์ธ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ๋ชจ๋ demo-ui.bunkerweb.io์์ ์ด์ฉํ ์ ์์ต๋๋ค. ์ง์ ํ ์คํธํด ๋ณด์ธ์.
BunkerWeb Cloud
BunkerWeb ์ธ์คํด์ค๋ฅผ ์์ฒด ํธ์คํ ํ๊ณ ๊ด๋ฆฌํ๊ณ ์ถ์ง ์์ผ์ ๊ฐ์? ๊ทธ๋ ๋ค๋ฉด BunkerWeb์ ์์ ๊ด๋ฆฌํ SaaS ์ ๊ณต ์๋น์ค์ธ BunkerWeb Cloud์ ๊ด์ฌ์ด ์์ ๊ฒ์ ๋๋ค.
BunkerWeb Cloud ์ธ์คํด์ค๋ฅผ ์ฃผ๋ฌธํ๊ณ ๋ค์ ๊ธฐ๋ฅ์ ์ก์ธ์คํ์ธ์:
- ํด๋ผ์ฐ๋์์ ํธ์คํ ๋๋ ์์ ๊ด๋ฆฌํ BunkerWeb ์ธ์คํด์ค
- PRO ๊ธฐ๋ฅ์ ํฌํจํ ๋ชจ๋ BunkerWeb ๊ธฐ๋ฅ
- ๋์๋ณด๋์ ์๋ฆผ์ ๊ฐ์ถ ๋ชจ๋ํฐ๋ง ํ๋ซํผ
- ๊ตฌ์ฑ ์ง์์ ์ํ ๊ธฐ์ ์ง์
BunkerWeb Cloud ์ ๊ณต์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ ๋ฌธ์ํ๊ธฐ๋ฅผ ํตํด ์๊ตฌ ์ฌํญ์ ๋ ผ์ํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
PRO ๋ฒ์
BunkerWeb PRO๋ฅผ ํ ๋ฌ ๋์ ๋น ๋ฅด๊ฒ ํ
์คํธํ๊ณ ์ถ์ผ์ ๊ฐ์? BunkerWeb ํจ๋์์ ์ฃผ๋ฌธํ ๋ freetrial ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ํ๋ก๋ชจ์
์ฝ๋๋ฅผ ๋ฐ๋ก ์ ์ฉํ์ธ์(๊ฒฐ์ ์ ์ ์ฉ๋ฉ๋๋ค).
BunkerWeb์ ์ฌ์ฉํ ๋ ์ํ๋ ๋ฒ์ (์คํ์์ค ๋๋ PRO)์ ์ ํํ ์ ์์ต๋๋ค.
๊ฐํ๋ ๋ณด์, ํ๋ถํ ์ฌ์ฉ์ ๊ฒฝํ, ๊ธฐ์ ๋ชจ๋ํฐ๋ง ๋ฑ ๋ฌด์์ด๋ BunkerWeb PRO ๋ฒ์ ์ ํตํด BunkerWeb์ ๋ชจ๋ ์ด์ ์ ๋๋ฆฌ๊ณ ์ ๋ฌธ์ ์ธ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ์ ์์ต๋๋ค.
๋ฌธ์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ PRO ๊ธฐ๋ฅ์ ์คํ์์ค ๋ฒ์ ์ ํตํฉ๋ ๊ธฐ๋ฅ๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์๊ด ์์ด์ฝ์ผ๋ก ํ์๋ฉ๋๋ค.
์คํ์์ค ๋ฒ์ ์์ PRO ๋ฒ์ ์ผ๋ก ์ธ์ ๋ ์ฝ๊ฒ ์ ๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค. ์ ์ฐจ๋ ๊ฐ๋จํฉ๋๋ค:
- ๊ฒฐ์ ์
freetrialํ๋ก๋ชจ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ BunkerWeb ํจ๋์์ ๋ฌด๋ฃ ํ๊ฐํ์ ์ ์ฒญํ์ธ์. - ๊ณ ๊ฐ ์์ญ์ ๋ก๊ทธ์ธํ ํ PRO ๋ผ์ด์ ์ค ํค๋ฅผ ๋ณต์ฌํ์ธ์.
- ์น UI ๋๋ ํน์ ์ค์ ์ ์ฌ์ฉํ์ฌ ๋ผ์ด์ ์ค ํค๋ฅผ BunkerWeb์ ๋ถ์ฌ๋ฃ์ผ์ธ์.
PRO ๋ฒ์ ์ ๊ดํ ๋ฌธ์ ์ฌํญ์ด ์์ผ๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ BunkerWeb ํจ๋์ ๋ฐฉ๋ฌธํ๊ฑฐ๋ ๋ฌธ์ํ๊ธฐ๋ฅผ ์ด์ฉํ์ธ์.
์ ๋ฌธ ์๋น์ค
ํ๋ก์ ํธ ์ ์ง๊ด๋ฆฌ์๋ก๋ถํฐ ์ง์ ์ ๋ฌธ ์๋น์ค๋ฅผ ๋ฐ์ BunkerWeb์ ์ต๋ํ ํ์ฉํ์ธ์. ๊ธฐ์ ์ง์๋ถํฐ ๋ง์ถคํ ์ปจ์คํ ๋ฐ ๊ฐ๋ฐ๊น์ง, ์น ์๋น์ค์ ๋ณด์์ ์ํด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ ๋ฌธ ์๋น์ค๋ฅผ ์ํ ์ ์ฉ ํ๋ซํผ์ธ BunkerWeb ํจ๋์ ๋ฐฉ๋ฌธํ๋ฉด ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ฌธ์ ์ฌํญ์ด ์์ผ๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ ๋ฌธ์ํ๊ธฐ๋ฅผ ์ด์ฉํ์ธ์. ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ํ๊ณ, ์ปค๋ฎค๋ํฐ ๋ฐ ๋ฆฌ์์ค
BunkerWeb์ ๊ดํ ๊ณต์ ์น์ฌ์ดํธ, ๋๊ตฌ ๋ฐ ๋ฆฌ์์ค:
- ์น์ฌ์ดํธ: BunkerWeb์ ๋ํ ์์ธํ ์ ๋ณด, ๋ด์ค ๋ฐ ๊ธฐ์ฌ ํ์ธ
- ํจ๋: BunkerWeb ๊ด๋ จ ์ ๋ฌธ ์๋น์ค(์: ๊ธฐ์ ์ง์)๋ฅผ ์ฃผ๋ฌธํ๊ณ ๊ด๋ฆฌํ๋ ์ ์ฉ ํ๋ซํผ
- ๋ฌธ์: BunkerWeb ์๋ฃจ์ ์ ๊ธฐ์ ๋ฌธ์
- ๋ฐ๋ชจ: BunkerWeb ๋ฐ๋ชจ ์น์ฌ์ดํธ, ์๋ฃจ์ ์ ๊ฒฌ๊ณ ์ฑ์ ํ ์คํธํ๊ธฐ ์ํด ๊ณต๊ฒฉ์ ์๋ํด ๋ณด์ธ์.
- ์น UI: BunkerWeb ์น UI์ ์จ๋ผ์ธ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ๋ชจ
- ์ํ ์ง๋: ์ ์ธ๊ณ BunkerWeb ์ธ์คํด์ค๊ฐ ์ฐจ๋จํ ์ค์๊ฐ ์ฌ์ด๋ฒ ๊ณต๊ฒฉ
์ปค๋ฎค๋ํฐ ๋ฐ ์์ ๋คํธ์ํฌ:
๊ฐ๋
BunkerWeb์ ํต์ฌ ๊ฐ๋ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฌธ์์์ ํ์ธํ ์ ์์ต๋๋ค.
ํตํฉ
์ฒซ ๋ฒ์งธ ๊ฐ๋ ์ BunkerWeb์ ๋์ ํ๊ฒฝ์ ํตํฉํ๋ ๊ฒ์ ๋๋ค. BunkerWeb์ ๋ชฉํ ์ค ํ๋๋ ๊ธฐ์กด ํ๊ฒฝ์ ๋งค๋๋ฝ๊ฒ ํตํฉ๋๋ ๊ฒ์ด๋ฏ๋ก "์ค์น"๋ณด๋ค๋ "ํตํฉ"์ด๋ผ๋ ๋จ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์ ํตํฉ์ด ๊ณต์์ ์ผ๋ก ์ง์๋ฉ๋๋ค:
์ค์
BunkerWeb์ด ํ๊ฒฝ์ ํตํฉ๋๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๊ณ ๋ณดํธํ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
BunkerWeb์ ๊ตฌ์ฑ์ '์ค์ (settings)' ๋๋ '๋ณ์(variables)'๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฐ์ ์ฌ์ฉํ์ฌ ์ํํฉ๋๋ค. ๊ฐ ์ค์ ์ AUTO_LETS_ENCRYPT๋ USE_ANTIBOT์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์๋ณ๋ฉ๋๋ค. ์ค์ ์ ๊ฐ์ ํ ๋นํ์ฌ BunkerWeb์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ค์์ BunkerWeb ๊ตฌ์ฑ์ ์์์ ๋๋ค:```conf SERVER_NAME=www.example.com AUTO_LETS_ENCRYPT=yes USE_ANTIBOT=captcha REFERRER_POLICY=no-referrer USE_MODSECURITY=no USE_GZIP=yes USE_BROTLI=no
## ๋ฉํฐ์ฌ์ดํธ ๋ชจ๋
๋ฉํฐ์ฌ์ดํธ ๋ชจ๋๋ BunkerWeb์ ์ฌ์ฉํ ๋ ๋ฐ๋์ ์ดํดํด์ผ ํ๋ ํต์ฌ ๊ฐ๋
์
๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํธํ๋ ๊ฒ์ด ๋ชฉํ์ด๊ธฐ ๋๋ฌธ์, ๋จ์ผ(๋๋ ํด๋ฌ์คํฐ) ์ธ์คํด์ค์์ ์ฌ๋ฌ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์๋น์คํ ์ ์๊ฒ ํด์ฃผ๋ "๊ฐ์ ํธ์คํธ"(virtual host) ๋๋ "vhost" ๊ฐ๋
์ ๋ณธ์ง์ ์ผ๋ก ์์๋ฐ์ต๋๋ค(์์ธํ ์ ๋ณด๋ [์ฌ๊ธฐ](https://en.wikipedia.org/wiki/Virtual_hosting) ์ฐธ์กฐ).
๊ธฐ๋ณธ์ ์ผ๋ก BunkerWeb์ ๋ฉํฐ์ฌ์ดํธ ๋ชจ๋๋ ๋นํ์ฑํ๋์ด ์์ผ๋ฉฐ, ์ด๋ ํ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์
๋ง ์๋น์ค๋๊ณ ๋ชจ๋ ์ค์ ์ด ํด๋น ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ฉ๋๋ค๋ ์๋ฏธ์
๋๋ค. ์ ํ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ณดํธํ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ ๊ฒฝ์ฐ์
๋๋ค. ๋ฉํฐ์ฌ์ดํธ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ผ๋ฉฐ ๊ธฐ๋ณธ ๋์์ด ์ ํฉํ ๊ฒ์
๋๋ค.
๋ฉํฐ์ฌ์ดํธ ๋ชจ๋๊ฐ ํ์ฑํ๋๋ฉด BunkerWeb์ ์ฌ๋ฌ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์๋น์คํ๊ณ ๋ณดํธํฉ๋๋ค. ๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ์ ํ ์๋ฒ ์ด๋ฆ์ผ๋ก ์๋ณ๋๋ฉฐ ์์ฒด ์ค์ ์ธํธ๋ฅผ ๋ณด์ ํฉ๋๋ค. ์ ํ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ณดํธํ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๊ณ ๋จ์ผ(๋๋ ํตํฉ ๋ฐฉ์์ ๋ฐ๋ผ ํด๋ฌ์คํฐ) BunkerWeb ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์
๋๋ค.
## ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ
์ค์ ๋ง์ผ๋ก ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถฉ์กฑํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์([์ธ๋ถ ํ๋ฌ๊ทธ์ธ](https://docs.bunkerweb.io/1.6.14/plugins/?utm_campaign=self&utm_source=github)์ ์ฌ์ฉํ๋๋ผ๋), ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ด๋ถ์ ์ผ๋ก BunkerWeb์ ์ ๋ช
ํ NGINX ์น ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ NGINX์ ๊ตฌ์ฑ ์์คํ
์ ํ์ฉํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ NGINX ๊ตฌ์ฑ์ HTTP ๋๋ server์ ๊ฐ์ ๋ค์ํ [์ปจํ
์คํธ](https://docs.nginx.com/nginx/admin-guide/basic-functionality/managing-configuration-files/#contexts)(๋ชจ๋ ์๋ฒ ๋ฐ/๋๋ ํน์ ์๋ฒ ๋ธ๋ก)์ ํฌํจ๋ ์ ์์ต๋๋ค.
BunkerWeb์ ๋ ๋ค๋ฅธ ํต์ฌ ๊ตฌ์ฑ ์์๋ ModSecurity ์น ์ ํ๋ฆฌ์ผ์ด์
๋ฐฉํ๋ฒฝ(WAF)์
๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ถ ์คํ(false positives)์ ์์ ํ๊ฑฐ๋ ์ฌ์ฉ์ ์ ์ ๊ท์น์ ์ถ๊ฐํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
## ๋ฐ์ดํฐ๋ฒ ์ด์ค
<p align="center">
<img alt="Database model" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/bunkerweb_db.svg" />
</p>
BunkerWeb์ ํ์ฌ ๊ตฌ์ฑ ์ํ๋ ๋ค์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋ฐฑ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค:
- ๋ชจ๋ ์๋น์ค์ ๋ํด ์ ์๋ ์ค์
- ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ
- BunkerWeb ์ธ์คํด์ค
- ์์
์คํ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ
- ์บ์๋ ํ์ผ
์ง์๋๋ ๋ฐฑ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ SQLite, MariaDB, MySQL ๋ฐ PostgreSQL์
๋๋ค.
## ์ค์ผ์ค๋ฌ
๋ชจ๋ ๊ฒ์ด ์๋์ผ๋ก ํจ๊ป ์๋ํ๋๋ก ํ๊ธฐ ์ํด ์ค์ผ์ค๋ฌ๋ผ๋ ์ ์ฉ ์๋น์ค๊ฐ ๋ค์์ ๋ด๋นํฉ๋๋ค:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค์ ๋ฐ ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ ์ ์ฅ
- ๋ค์ํ ์์
(์ก(job)์ด๋ผ๊ณ ํจ) ์คํ
- BunkerWeb์ด ์ดํดํ ์ ์๋ ๊ตฌ์ฑ ์์ฑ
- ๋ค๋ฅธ ์๋น์ค(์: ์น UI ๋๋ autoconf)์ ์ค๊ฐ์ ์ญํ
์ฆ, ์ค์ผ์ค๋ฌ๋ BunkerWeb์ ๋๋์
๋๋ค.
# ์ค์น
<!--## BunkerWeb Cloud
<p align="center">
<img alt="Docker banner" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/bunkerweb-cloud.webp" />
</p>
BunkerWeb Cloud is the easiest way to get started with BunkerWeb. It offers you a fully managed BunkerWeb service with no hassle. Think of it like a BunkerWeb-as-a-Service!
You will find more information about BunkerWeb Cloud beta [here](https://www.bunkerweb.io/cloud?utm_campaign=self&utm_source=docs) and you can apply for free [in the BunkerWeb panel](https://panel.bunkerweb.io/store/bunkerweb-cloud?utm_campaign=self&utm_source=docs).
-->
## Linux
<p align="center">
<img alt="Linux banner" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/integration-linux.svg" />
</p>
์ง์๋๋ Linux ๋ฐฐํฌํ ๋ชฉ๋ก:
- Debian 12 "Bookworm"
- Debian 13 "Trixie"
- Ubuntu 22.04 "Jammy"
- Ubuntu 24.04 "Noble"
- Ubuntu 26.04 "Resolute Raccoon"
- Fedora 43
- Fedora 44
- RHEL, CentOS, Rocky Linux ๋ฐ AlmaLinux 8, 9 ๋ฐ 10
๋ฌธ์์ [Linux ์น์
](https://docs.bunkerweb.io/1.5.10/integrations/?utm_campaign=self&utm_source=github#linux)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
## Docker
<p align="center">
<img alt="Docker banner" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/integration-docker.svg" />
</p>
x64, x86, armv7 ๋ฐ arm64 ํ๋ซํผ์ฉ์ผ๋ก ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์ฌ์ ๋น๋ ์ด๋ฏธ์ง๋ฅผ [Docker Hub](https://hub.docker.com/u/bunkerity)์์ ์ ๊ณตํฉ๋๋ค.
Docker ํตํฉ์ ํต์ฌ ๊ฐ๋
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- BunkerWeb์ ๊ตฌ์ฑํ๊ธฐ ์ํ **ํ๊ฒฝ ๋ณ์**
- ๊ตฌ์ฑ์ ์ ์ฅํ๊ณ ์์
์ ์คํํ๋ **์ค์ผ์ค๋ฌ** ์ปจํ
์ด๋
- ํด๋ผ์ด์ธํธ์๊ฒ ํฌํธ๋ฅผ ๋
ธ์ถํ๊ณ ์
์คํธ๋ฆผ ์น ์๋น์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํ **๋คํธ์ํฌ**
๋ฌธ์์ [Docker ํตํฉ ์น์
](https://docs.bunkerweb.io/1.6.14/integrations/?utm_campaign=self&utm_source=github#docker)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
## Docker autoconf
<p align="center">
<img alt="Docker autoconf banner" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/integration-autoconf.svg" />
</p>
ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ์ ๋จ์ ์ ์
๋ฐ์ดํธ๊ฐ ์์ ๋๋ง๋ค ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ฑํด์ผ ํ๋ฏ๋ก ๊ทธ๋ฆฌ ํธ๋ฆฌํ์ง ์๋ค๋ ์ ์
๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด **autoconf**๋ผ๋ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. autoconf๋ Docker ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ณ ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ฑํ์ง ์๊ณ ๋ BunkerWeb์ ์ค์๊ฐ์ผ๋ก ์๋ ์ฌ๊ตฌ์ฑํฉ๋๋ค.
BunkerWeb ์ปจํ
์ด๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ํ๋ ๋์ , ์น ์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์ด๋์ **๋ผ๋ฒจ**์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด **autoconf**๊ฐ ๋๋จธ์ง๋ฅผ "์๋์ผ๋ก" ์ฒ๋ฆฌํฉ๋๋ค.
๋ฌธ์์ [Docker autoconf ์น์
](https://docs.bunkerweb.io/1.6.14/integrations/?utm_campaign=self&utm_source=github#docker-autoconf)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
## Kubernetes
<p align="center">
<img alt="Kubernetes banner" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/integration-kubernetes.svg" />
</p>
autoconf๋ [Ingress ์ปจํธ๋กค๋ฌ](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) ์ญํ ์ ํ๋ฉฐ [Ingress ๋ฆฌ์์ค](https://kubernetes.io/docs/concepts/services-networking/ingress/)์ ๋ฐ๋ผ BunkerWeb ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๋ํ ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ์ ์ํด [ConfigMap](https://kubernetes.io/docs/concepts/configuration/configmap/)๊ณผ ๊ฐ์ ๋ค๋ฅธ Kubernetes ๊ฐ์ฒด๋ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
BunkerWeb์ ๊ณต์ [Helm ์ฐจํธ](https://helm.sh/)๋ [bunkerity/bunkerweb-helm ์ ์ฅ์](https://github.com/bunkerity/bunkerweb-helm)์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฌธ์์ [Kubernetes ์น์
](https://docs.bunkerweb.io/1.6.14/integrations/?utm_campaign=self&utm_source=github#kubernetes)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
## Microsoft Azure
<p align="center">
<img alt="Azure banner" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/integration-azure.webp" />
</p>
BunkerWeb์ [Azure Marketplace](https://azuremarketplace.microsoft.com/fr-fr/marketplace/apps/bunkerity.bunkerweb?tab=Overview)์ ๋ฑ์ฌ๋์ด ์์ผ๋ฉฐ, ARM ํ
ํ๋ฆฟ์ [misc ํด๋](https://github.com/bunkerity/bunkerweb/raw/v1.6.14/misc/integrations/azure-arm-template.json)์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฌธ์์ [Microsoft Azure ์น์
](https://docs.bunkerweb.io/1.6.14/integrations/?utm_campaign=self&utm_source=github#microsoft-azure)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
## Swarm
<p align="center">
<img alt="Swarm banner" src="https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.6.14/docs/assets/img/integration-swarm.svg" />
</p>
BunkerWeb ์ธ์คํด์ค๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑํ๊ธฐ ์ํด **autoconf**๋ผ๋ ํน์ ์๋น์ค๊ฐ ์๋น์ค ์์ฑ ๋๋ ์ญ์ ์ ๊ฐ์ Docker Swarm ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ณ ๋ค์ดํ์ ์์ด **BunkerWeb ์ธ์คํด์ค**๋ฅผ ์ค์๊ฐ์ผ๋ก ์๋ ๊ตฌ์ฑํฉ๋๋ค.
[Docker autoconf ํตํฉ](https://docs.bunkerweb.io/1.6.14/integrations/?utm_campaign=self&utm_source=github#docker-autoconf)๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ์น ์๋น์ค ๊ตฌ์ฑ์ ํน์ **bunkerweb.** ์ ๋์ฌ๋ก ์์ํ๋ ๋ผ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ ์๋ฉ๋๋ค.
๋ฌธ์์ [Swarm ์น์
](https://docs.bunkerweb.io/1.6.14/integrations/?utm_campaign=self&utm_source=github#swarm)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ๋น ๋ฅธ ์์ ๊ฐ์ด๋
์ํ๋ ํตํฉ ๋ฐฉ์์ผ๋ก BunkerWeb์ ์ค์ ํ ํ์๋ [๋น ๋ฅธ ์์ ๊ฐ์ด๋](https://docs.bunkerweb.io/1.6.14/quickstart-guide/?utm_campaign=self&utm_source=github)๋ฅผ ๋ฐ๋ผ ์น ์๋น์ค๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ์ค์น ๋ฐ ์ด๊ธฐ ๊ตฌ์ฑ์ ์งํํ ์ ์์ต๋๋ค.
# ๋ณด์ ํ๋
BunkerWeb์ [๊ธฐ๋ฅ](https://docs.bunkerweb.io/1.6.14/features/?utm_campaign=self&utm_source=github)์ ํตํด ๊ตฌ์ฑํ ์ ์๋ ๋ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ค์ ์ ๊ธฐ๋ณธ๊ฐ์ด ์ต์ํ์ "๊ธฐ๋ณธ ๋ณด์"(security by default)์ ๋ณด์ฅํ๋๋ผ๋, ์ด๋ฅผ ํ๋ํ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ํ๋ ๋ณด์ ์์ค์ ๋ณด์ฅํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์คํ(false positives)๋ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ฌธ์์ [๋ณด์ ํ๋ ์น์
](https://docs.bunkerweb.io/1.6.14/advanced/?utm_campaign=self&utm_source=github#security-tuning)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ์ค์
์ผ๋ฐ์ ์ผ๋ก ๋ฉํฐ์ฌ์ดํธ ๋ชจ๋๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ, ๋ฉํฐ์ฌ์ดํธ ์ปจํ
์คํธ์ ์ค์ ์ ํน์ ์๋ฒ์ ์ ์ฉํ๋ ค๋ฉด ๊ธฐ๋ณธ(์ฒซ ๋ฒ์งธ) ์๋ฒ ์ด๋ฆ์ ์ ๋์ฌ๋ก ์ถ๊ฐํด์ผ ํฉ๋๋ค(์: `www.example.com_USE_ANTIBOT=captcha` ๋๋ `myapp.example.com_USE_GZIP=yes`).
์ค์ ์ด "multiple"(๋ค์ค)๋ก ๊ฐ์ฃผ๋๋ ๊ฒฝ์ฐ, ๋์ผํ ๊ธฐ๋ฅ์ ๋ํด ์ซ์๋ฅผ ์ ๋ฏธ์ฌ๋ก ์ถ๊ฐํ์ฌ ์ฌ๋ฌ ์ค์ ๊ทธ๋ฃน์ ๊ฐ์ง ์ ์์์ ์๋ฏธํฉ๋๋ค(์: `REVERSE_PROXY_URL_1=/subdir`, `REVERSE_PROXY_HOST_1=http://myhost1`, `REVERSE_PROXY_URL_2=/anotherdir`, `REVERSE_PROXY_HOST_2=http://myhost2`, ...).
์ ์ฒด ๋ชฉ๋ก์ ๋ฌธ์์ [๊ธฐ๋ฅ ์น์
](https://docs.bunkerweb.io/1.6.14/features/?utm_campaign=self&utm_source=github)์ ํ์ธํ์ธ์.
# Web UI
https://github.com/user-attachments/assets/a3ed56f8-c124-4ca9-b8b3-4be0913b3078
"Web UI"๋ ๋ช
๋ น์ค ์ธํฐํ์ด์ค ๋์ ์ฌ์ฉ์ ์นํ์ ์ธ ์ธํฐํ์ด์ค๋ก BunkerWeb ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์
๋๋ค.
web UI๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฐจ๋จ๋ ๊ณต๊ฒฉ์ ๋ํ ์ข
ํฉ์ ์ธ ์กฐํ
- BunkerWeb ์ธ์คํด์ค ์์, ์ค์ง, ์ฌ์์ ๋ฐ ๋ฆฌ๋ก๋
- ์น ์ ํ๋ฆฌ์ผ์ด์
์ค์ ์ถ๊ฐ, ํธ์ง ๋ฐ ์ญ์
- NGINX ๋ฐ ModSecurity ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ ์ถ๊ฐ, ํธ์ง ๋ฐ ์ญ์
- ์ธ๋ถ ํ๋ฌ๊ทธ์ธ ์ค์น ๋ฐ ์ ๊ฑฐ
- ์บ์๋ ํ์ผ ํ์
- ์์
์คํ ๋ชจ๋ํฐ๋ง ๋ฐ ํ์ ์ ์ฌ์์
- ๋ก๊ทธ ๋ณด๊ธฐ ๋ฐ ํจํด ๊ฒ์
๋ฌธ์์ [Web UI ์น์
](https://docs.bunkerweb.io/1.6.14/web-ui/?utm_campaign=self&utm_source=github)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ํ๋ฌ๊ทธ์ธ
BunkerWeb์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ ํ๋ฌ๊ทธ์ธ ์์คํ
์ ์ ๊ณตํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋๋ฉด ํ๋ฌ๊ทธ์ธ์์ ์ ์ํ ์ถ๊ฐ ์ค์ ์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ค์์ ๋น์ฌ๊ฐ ์ ์ง ๊ด๋ฆฌํ๋ "๊ณต์" ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก์
๋๋ค(์์ธํ ๋ด์ฉ์ [bunkerweb-plugins](https://github.com/bunkerity/bunkerweb-plugins/?utm_campaign=self&utm_source=github) ์ ์ฅ์ ์ฐธ์กฐ):
| ์ด๋ฆ | ๋ฒ์ | ์ค๋ช
| ๋งํฌ |
| :------------: | :-----: | :------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------: |
| **ClamAV** | 1.9 | ์
๋ก๋๋ ํ์ผ์ ClamAV ์ํฐ๋ฐ์ด๋ฌ์ค ์์ง์ผ๋ก ์๋ ๊ฒ์ฌํ๊ณ ์
์ฑ ํ์ผ์ด ๊ฐ์ง๋๋ฉด ์์ฒญ์ ๊ฑฐ๋ถํฉ๋๋ค. | [bunkerweb-plugins/clamav](https://github.com/bunkerity/bunkerweb-plugins/tree/main/clamav) |
| **Coraza** | 1.9 | Coraza WAF(ModSecurity์ ๋์)๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ๊ฒ์ฌํฉ๋๋ค. | [bunkerweb-plugins/coraza](https://github.com/bunkerity/bunkerweb-plugins/tree/main/coraza) |
| **Discord** | 1.9 | Webhook์ ์ฌ์ฉํ์ฌ Discord ์ฑ๋๋ก ๋ณด์ ์๋ฆผ์ ๋ณด๋
๋๋ค. | [bunkerweb-plugins/discord](https://github.com/bunkerity/bunkerweb-plugins/tree/main/discord) |
| **Slack** | 1.9 | Webhook์ ์ฌ์ฉํ์ฌ Slack ์ฑ๋๋ก ๋ณด์ ์๋ฆผ์ ๋ณด๋
๋๋ค. | [bunkerweb-plugins/slack](https://github.com/bunkerity/bunkerweb-plugins/tree/main/slack) |
| **VirusTotal** | 1.9 | ์
๋ก๋๋ ํ์ผ์ VirusTotal API๋ก ์๋ ๊ฒ์ฌํ๊ณ ์
์ฑ ํ์ผ์ด ๊ฐ์ง๋๋ฉด ์์ฒญ์ ๊ฑฐ๋ถํฉ๋๋ค. | [bunkerweb-plugins/virustotal](https://github.com/bunkerity/bunkerweb-plugins/tree/main/virustotal) |
| **WebHook** | 1.9 | Webhook์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ HTTP ์๋ํฌ์ธํธ๋ก ๋ณด์ ์๋ฆผ์ ๋ณด๋
๋๋ค. | [bunkerweb-plugins/webhook](https://github.com/bunkerity/bunkerweb-plugins/tree/main/webhook) |
๋ฌธ์์ [ํ๋ฌ๊ทธ์ธ ์น์
](https://docs.bunkerweb.io/1.6.14/plugins/?utm_campaign=self&utm_source=github)์์ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ์ธ์ด ์ง์ ๋ฐ ํ์งํ
BunkerWeb UI๋ ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. ๋ฒ์ญ์ `src/ui/app/static/locales` ๋๋ ํฐ๋ฆฌ์์ ๊ด๋ฆฌ๋ฉ๋๋ค. ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์๋์ด (ar)
- ๋ฒต๊ณจ์ด (bn)
- ๋ธ๋ผ์ง ํฌ๋ฅดํฌ๊ฐ์ด (br)
- ๋
์ผ์ด (de)
- ์์ด (en)
- ์คํ์ธ์ด (es)
- ํ๋์ค์ด (fr)
- ํ๋์ด (hi)
- ์ดํ๋ฆฌ์์ด (it)
- ํ๊ตญ์ด (ko)
- ํด๋๋์ด (pl)
- ํฌ๋ฅดํฌ๊ฐ์ด (pt)
- ๋ฌ์์์ด (ru)
- ํฐํค์ด (tr)
- ๋ฒ์ฒด ์ค๊ตญ์ด (tw)
- ์ฐ๋ฅด๋์ด (ur)
- ๊ฐ์ฒด ์ค๊ตญ์ด (zh)
๋ฒ์ญ ์ถ์ฒ ๋ฐ ๊ฒํ ์ํ์ ๋ํ ์์ธํ ๋ด์ฉ์ [locales/README.md](https://github.com/bunkerity/bunkerweb/raw/v1.6.14/src/ui/app/static/locales/README.md)๋ฅผ ์ฐธ์กฐํ์ธ์.
## ๋ฒ์ญ ๊ธฐ์ฌํ๊ธฐ
์ ๋ก์ผ์ผ ํ์ผ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ฐ์ ํ๊ธฐ ์ํ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค!
**๋ฒ์ญ์ ๊ธฐ์ฌํ๋ ๋ฐฉ๋ฒ:**
1. `src/ui/app/lang_config.py` ํ์ผ์ ํธ์งํ์ฌ ์ธ์ด(์ฝ๋, ์ด๋ฆ, ํ๋๊ทธ, english_name)๋ฅผ ์ถ๊ฐํฉ๋๋ค.
2. `src/ui/app/static/locales/`์์ `en.json`์ ํ
ํ๋ฆฟ์ผ๋ก ๋ณต์ฌํ๊ณ ์ธ์ด ์ฝ๋๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํฉ๋๋ค(์: ๋
์ผ์ด์ ๊ฒฝ์ฐ `de.json`).
3. ์ ํ์ผ์ ๊ฐ์ ๋ฒ์ญํฉ๋๋ค.
4. `locales/README.md`์ ํ๋ฅผ ์
๋ฐ์ดํธํ์ฌ ์ธ์ด๋ฅผ ์ถ๊ฐํ๊ณ ์์ฑ์/๊ฒํ ์๋ฅผ ํ์ํฉ๋๋ค.
5. ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํฉ๋๋ค.
์
๋ฐ์ดํธ์ ๊ฒฝ์ฐ ๊ด๋ จ ํ์ผ์ ํธ์งํ๊ณ ํ์์ ๋ฐ๋ผ ์ถ์ฒ ํ๋ฅผ ์
๋ฐ์ดํธํ์ธ์.
์ ์ฒด ์ง์นจ์ [locales/README.md](https://github.com/bunkerity/bunkerweb/raw/v1.6.14/src/ui/app/static/locales/README.md)๋ฅผ ์ฐธ์กฐํ์ธ์.
# ์ง์
## ์ ๋ฌธ ์ง์
BunkerWeb ์ ์ง๊ด๋ฆฌ์์๊ฒ ์ง์ ๊ธฐ์ ์ง์์ ๋ฐ์ผ์ธ์. ์ ๋ฌธ ์๋น์ค ์ ์ฉ ํ๋ซํผ์ธ [BunkerWeb ํจ๋](https://panel.bunkerweb.io/?utm_campaign=self&utm_source=github)์ ๋ฐฉ๋ฌธํ๋ฉด ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ง๋ฌธ์ด ์์ผ์๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ [๋ฌธ์](https://panel.bunkerweb.io/contact.php?utm_campaign=self&utm_source=github)ํด ์ฃผ์ธ์. ๊ธฐ๊บผ์ด ๋์์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
## ์ปค๋ฎค๋ํฐ
๋ฌด๋ฃ ์ปค๋ฎค๋ํฐ ์ง์์ ๋ฐ์ผ๋ ค๋ฉด ๋ค์ ์ฑ๋์ ์ด์ฉํ ์ ์์ต๋๋ค:
- [Discord ์๋ฒ](https://discord.com/invite/fTf46FmtyD)์ ์๋ BunkerWeb์ #help ์ฑ๋
- [GitHub discussions](https://github.com/bunkerity/bunkerweb/discussions)์ help ์นดํ
๊ณ ๋ฆฌ
- [/r/BunkerWeb](https://www.reddit.com/r/BunkerWeb) ์๋ธ๋ ๋ง
- [Server Fault](https://serverfault.com/) ๋ฐ [Super User](https://superuser.com/) ํฌ๋ผ
๋์์ ์์ฒญํ ๋๋ [GitHub issues](https://github.com/bunkerity/bunkerweb/issues)๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์. GitHub issues๋ ๋ฒ๊ทธ ์ ๊ณ ์ ๊ธฐ๋ฅ ์์ฒญ์๋ง ์ฌ์ฉํด ์ฃผ์ธ์.
# ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ [GNU Affero General Public License(AGPL) ๋ฒ์ 3](https://github.com/bunkerity/bunkerweb/raw/v1.6.14/LICENSE.md)์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
# ๊ธฐ์ฌ
ํ๋ฌ๊ทธ์ธ์ ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด [๊ธฐ์ฌ ์ง์นจ](https://github.com/bunkerity/bunkerweb/raw/v1.6.14/CONTRIBUTING.md)์ ์ฝ๊ณ ์์ํ ์ ์์ต๋๋ค.
# ๋ณด์ ์ ์ฑ
์ฐ๋ฆฌ๋ ๋ณด์ ๋ฒ๊ทธ๋ฅผ ์ฌ๊ฐํ ๋ฌธ์ ๋ก ๊ฐ์ฃผํ๋ฉฐ ์ฑ
์ ์๋ ๊ณต๊ฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ [๋ณด์ ์ ์ฑ
](https://github.com/bunkerity/bunkerweb/raw/v1.6.14/SECURITY.md)์ ์ฐธ์กฐํ์ธ์.
<!-- Star History chart hidden: GitHub restricted the stargazers API, so the chart renders an error
notice instead of data. Uncomment once upstream serves real charts again.
# Star History
<a href="https://star-history.com/#bunkerity/bunkerweb&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=bunkerity/bunkerweb&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=bunkerity/bunkerweb&type=Date" />
Star History Chart
</picture>
</a>
-->