SONUB 홈 KO English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

알림을 켜는 방법

이 브라우저 또는 주소에서는 알림을 사용할 수 없습니다. 지원되는 브라우저로 보안 연결된 SONUB 사이트에 접속해 주세요.

알림이 차단되어 있으면 브라우저 설정에서 허용해 주세요.

  1. 주소 표시줄 옆의 사이트 설정 또는 브라우저의 사이트 설정을 열고, 이 사이트의 알림을 허용으로 바꾸세요.
  2. 기기 설정에서 브라우저 알림을 허용하고 방해 금지 또는 집중 모드를 확인하세요.
  3. SONUB으로 돌아와 페이지를 새로고침한 뒤 벨을 눌러 알림을 켜세요.

iPhone 또는 iPad에서는 SONUB을 홈 화면에 추가하고 거기에서 연 뒤 알림을 허용하세요.

바이브코딩 전체 보기
바이브코딩

웹서버

가 말을 걸어 주는 스크립트 20줄.

웹서버는 을 기다렸다가 을 보내는 일 뿐입니다. 그것을 증명하기 위해 bash 와 , 만으로 를 만듭니다 — 한 줄도 빠짐없이 읽을 수 있습니다. 그다음 실제 사이트를 까지 붙여 돌리는 Caddy 로 넘어갑니다.

Caddy — 읽을 수 있는 채로 남은 진짜 웹서버

Caddy 는 실행 파일 하나로 된 현대적인 웹서버입니다. 쉘 예제 바로 다음에 배울 값어치가 있는 이유는, 읽을 수 있는 몇 줄이면 돌아간다는 느낌을 그대로 유지하면서 쉘 판이 못 하던 것을 전부 해결하기 때문입니다.

가장 내세우는 기능은 자동 HTTPS 입니다. 진짜 도메인 이름만 주면 를 받아 오고, 설치하고, 만료 전에 갱신하고, http 손님을 https 로 넘겨 줍니다. 다른 서버에서는 몇 달마다 되풀이하는 잡일입니다.

설치하기

install
# macOS
brew install caddy

# Ubuntu / Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
sudo apt update && sudo apt install caddy

# Docker alone is enough
docker run -p 8080:80 -v "$PWD":/usr/share/caddy caddy

명령 한 줄로 폴더 내놓기

설정 파일이 필요 없습니다. index.html 이 있는 폴더로 가서 한 줄만 치면 됩니다 — 같은 네트워크의 누군가에게 페이지를 보여 주는 가장 빠른 방법입니다.

terminal
# serve this folder's index.html on port 8080
caddy file-server --listen :8080

# add a directory listing for folders without an index.html
caddy file-server --listen :8080 --browse

Caddyfile

오래 둘 것이라면 Caddyfile 을 씁니다. 그냥 글자 파일이고, 사이트 하나가 네 줄로 끝납니다.

Caddyfile
example.com {
	root * /var/www/html
	file_server
	encode gzip zstd
}
  1. example.com {사이트 주소입니다. 여기에 진짜 도메인을 적으면 Caddy 가 HTTPS 인증서를 알아서 마련하고, localhost 를 적으면 로컬 작업용으로 평범한 http 를 내놓습니다.
  2. root * /var/www/html파일이 디스크의 어디에 있는지입니다. 별표는 이 사이트의 모든 경로에 적용한다는 뜻입니다.
  3. file_server그 파일들을 실제로 내놓으라는 줄입니다. 이 줄이 없으면 Caddy 는 요청에 아무것도 주지 않습니다.
  4. encode gzip zstd보내기 전에 응답을 압축합니다. 한 낱말인데, 느린 회선에서 페이지가 눈에 띄게 빨리 도착합니다.
그 인증서에 대하여

Caddy 는 Let's Encrypt 에 무료 인증서를 요청합니다. 그러려면 도메인의 가 내 기계를 가리켜야 하고 80 · 443 포트에 바깥에서 닿을 수 있어야 합니다. 앞에 있는 다른 프록시가 그 포트를 대신 받고 있으면 확인이 실패해 인증서가 끝내 오지 않습니다 — 처음 Caddy 를 세울 때 자물쇠가 초록색이 되지 않는 가장 흔한 이유입니다.

리버스 프록시 — 요청을 넘겨주기

대부분의 사이트는 디스크의 파일이 아니라 어느 로컬 포트에서 귀를 기울이는 응용 프로그램입니다. 는 바깥의 요청을 받아 그 프로그램에 건네고 답을 되돌려 주는 서버입니다. 한 줄이면 됩니다.

Caddyfile
sonub.com {
	reverse_proxy sonub-web:3000
}

dl.sonub.com {
	root * /srv/files
	file_server browse
}

기계 한 대가 여러 사이트를 품는 방법도 이것입니다. 443 포트는 한 프로그램만 가질 수 있으므로 Caddy 가 그것을 쥐고, 손님이 어느 도메인을 찾았는지 읽어 각각 다른 프로그램으로 넘깁니다.

알아야 할 명령들

명령하는 일
caddy run앞에서 실행하며 기록을 터미널에 뿌립니다. 설정을 아직 맞춰 가는 동안 원하는 것이 이쪽입니다.
caddy start뒤로 보내고 프롬프트를 돌려줍니다. 잠깐 보여 줄 때는 괜찮지만, 제대로 된 서버는 시스템 서비스로 띄웁니다.
caddy reload연결을 하나도 끊지 않고 바뀐 설정을 다시 읽습니다. Caddyfile 을 고쳤다고 재시작할 필요가 없습니다.
caddy fmt --overwrite파일 서식을 제자리에서 바로잡습니다. 들여쓰기가 보기보다 중요하고, 이 명령이 그 다툼을 끝냅니다.
caddy validate아무것도 띄우지 않고 설정에 잘못이 있는지 검사합니다. 돌고 있는 서버를 reload 하기 전에 먼저 돌립니다.
이 사이트가 정확히 그렇게 돕니다

SONUB 서버에서는 Caddy 하나가 80 · 443 포트를 쥐고 도메인 이름으로 길을 가릅니다. 본 사이트는 응용 프로그램 로, 내려받기 서브도메인은 디스크에서 곧바로 내놓습니다. 새 사이트를 더하는 일은 위와 같은 파일 하나를 두고 reload 하는 것이 전부입니다 — 재시작도 없고, 포트를 두고 다투는 두 번째 프로그램도 없습니다.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 단계를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.