실습강의
포천교육지원청 · 전문적학습공동체 연수

다섯 걸음이면
내 홈페이지가 생깁니다

코드는 한 줄도 직접 쓰지 않습니다

일시 2026. 9. 7.(월) 10:00~12:00 장소 포천미래교육센터 강사 포천시청소년재단 인재육성실 유중원 실장
CONTENTS · 오늘의 순서

이 다섯 개만 하면 끝납니다

앞 걸음이 끝나야 다음 걸음으로 갑니다. 순서를 건너뛰지 마세요.

이렇게 진행합니다 강사가 먼저 해 보이고 → 여러분이 따라 하고 → 다 되었는지 확인한 뒤 다음으로 넘어갑니다. 막히면 그 자리에서 손을 드세요. 혼자 3분 넘게 붙잡고 있지 않습니다.
01

내 홈페이지 주소 만들기

내 컴퓨터에 있는 파일은 나만 볼 수 있습니다.
인터넷에 올려야 다른 사람도 볼 수 있습니다.
그 자리를 빌려주는 곳이 Cloudflare입니다.
cloudflare.com약 12분돈이 들지 않습니다
01 · 왜 필요한가요

가게를 열려면 자리가 있어야 합니다

지금 상태

  • 파일이 내 컴퓨터 안에만 있습니다
  • 다른 사람에게 보여주려면 파일을 보내야 합니다
  • 받은 사람이 파일을 열어야 내용을 압니다
  • 휴대폰에서는 잘 열리지 않습니다

Cloudflare에 올리면

  • 인터넷 주소가 하나 생깁니다
  • 문자로 주소만 보내면 됩니다
  • 누르면 바로 화면이 열립니다
  • 휴대폰에서도 잘 보입니다
쉽게 말하면 Cloudflare는 가게 자리를 빌려주고 간판까지 달아주는 곳입니다. 자릿세는 없습니다.
01 · 따라 하기

파일 하나 받아서 끌어다 놓으면 끝

  1. 1
    연습용 파일 내려받기안내 페이지의 자료실에서 「실습용 게임 파일」을 받습니다. index.html 이름으로 저장됩니다.
  2. 2
    폴더 하나에 담기바탕화면에 폴더를 만들고 그 안에 index.html을 넣습니다. 폴더 이름은 아무거나 괜찮습니다.
  3. 3
    cloudflare.com 로그인가입해 두신 계정으로 들어갑니다.
  4. 4
    왼쪽 메뉴에서 Workers & Pages화면 왼쪽에 세로로 붙어 있는 메뉴입니다.
  5. 5
    CreatePagesUpload assets옆에 있는 Connect to Git은 누르지 않습니다. 어려운 길입니다.
  6. 6
    이름을 적고 폴더를 끌어다 놓기여기 적는 이름이 그대로 주소가 됩니다. 영문 소문자와 붙임표(-)만 씁니다.
  7. 7
    Deploy 누르고 30초 기다리기주소가 나오면 완성입니다. 휴대폰으로도 열어 보세요.
01 · 이렇게 나오면 성공

주소가 생겼습니다

MY ADDRESS
https://내가-정한-이름.pages.dev
여기서 감동 포인트 이 주소를 문자나 메신저로 보내면 누구나 열 수 있습니다. 서버를 사지도, 도메인을 사지도, 결재를 올리지도 않았습니다. 휴대폰으로 열어 보세요 — 게임 일곱 개가 그대로 돌아갑니다.
고치고 싶어지면 AI에게 다시 고쳐 달라고 한 뒤, 같은 프로젝트에서 Create new deployment로 파일을 다시 올리면 됩니다. 주소는 그대로 유지됩니다.
01 · 안 될 때

여기서 가장 많이 막힙니다

  1. !
    화면이 하얗게만 나옵니다파일 이름이 index.html이 맞는지 보세요. 메모장이 index.html.txt로 저장했을 수 있습니다. 저장할 때 파일 형식을 모든 파일로 바꿔야 합니다.
  2. !
    파일이 아니라 폴더를 올려야 합니다파일 하나만 끌어다 놓으면 안 됩니다. 파일이 들어 있는 폴더를 통째로 끌어다 놓으세요.
  3. !
    이름을 못 쓴다고 나옵니다한글·대문자·띄어쓰기는 쓸 수 없습니다. pocheon-notice처럼 영문 소문자와 붙임표만 씁니다.
  4. !
    고쳤는데 화면이 그대로입니다브라우저가 옛 화면을 기억하고 있어서 그렇습니다. Ctrl + F5를 누르세요.
02

열쇠 2개 챙기고
관리자 2명 만들기

글과 사진을 어딘가에 보관해야 합니다. 그 창고가 Supabase입니다.
창고에는 주소열쇠가 필요합니다. 이 두 가지를 AI에게 알려주면, AI가 관리자 페이지를 대신 만들어 줍니다.
supabase.com약 20분오늘 가장 중요한 단원
02 · 따라 하기

먼저 창고를 하나 짓습니다

  1. 1
    supabase.com 로그인가입해 두신 계정으로 들어갑니다.
  2. 2
    New project 누르기창고를 새로 짓는 버튼입니다.
  3. 3
    이름과 비밀번호 적기비밀번호는 반드시 메모장에 적어 두세요. 나중에 다시 볼 수 없습니다.
  4. 4
    지역은 Northeast Asia (Seoul)가까운 곳을 골라야 빠릅니다.
  5. 5
    1~2분 기다리기Setting up project 글씨가 사라지면 다 지어진 것입니다.
  6. 6
    차 한 잔 하고 오세요이 시간에 옆자리 짝이 잘 따라오고 있는지 봐 주세요.
02 · 핵심

챙길 것은 딱 두 줄입니다

왼쪽 아래 Settings(톱니바퀴) → API 를 누르면 아래 두 가지가 있습니다. 메모장에 복사해 두세요.

① PROJECT URL — 창고 주소
https://abcdefgh.supabase.co
② ANON PUBLIC KEY — 창고 열쇠
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOi... (아주 깁니다)

anon public 키 — 괜찮습니다

  • 건물 현관 출입증 같은 것입니다
  • 웹페이지 코드 안에 들어가도 됩니다
  • 할 수 있는 일이 미리 정해져 있습니다

service_role 키 — 절대 금지

  • 모든 문을 다 여는 마스터키입니다
  • 웹페이지·메신저·메일·AI 채팅창 어디에도 넣지 마세요
  • 새어 나가면 개인정보 사고가 됩니다
02 · 따라 하기

명단을 볼 수 있는 사람을 정합니다

관리자 페이지는 아무나 열면 안 됩니다. 로그인한 담당자만 보이게 계정을 만듭니다.

  1. 1
    왼쪽 메뉴 AuthenticationUsers사람을 관리하는 곳입니다.
  2. 2
    Add user → 이메일·비밀번호 적기담당자 두 분의 계정을 각각 만듭니다. 두 개면 충분합니다.
  3. 3
    Sign In / ProvidersEmail같은 메뉴 안에 있습니다.
  4. 4
    Allow new users to sign up 끄기반드시 꺼야 합니다. 켜져 있으면 모르는 사람이 계정을 만들 수 있습니다.
왜 두 명일까요 한 명만 두면 그분이 자리를 비웠을 때 아무도 명단을 볼 수 없습니다. 담당자와 대리자, 두 명이 기본입니다. 담당자가 바뀌면 계정도 함께 정리해 주세요.
02 · 프롬프트

이제 AI에게 알려주면 됩니다

아래 글을 복사해서 Claude나 ChatGPT에 붙여넣으세요. 파란 부분만 아까 메모장에 적어 둔 내 것으로 바꿉니다.

프롬프트 ① — 관리자 페이지 만들기
너는 웹 개발을 가르치는 선생님이야.
게시판 글을 관리하는 관리자 페이지를
admin.html 파일 하나로 만들어줘.

-- 내 창고 정보 --
Project URL : https://abcdefgh.supabase.co
anon public key : eyJhbGciOiJIUzI1NiIs...
테이블 이름 : posts

-- 이렇게 만들어줘 --
1. HTML·CSS·JavaScript를 한 파일에 넣을 것
2. 처음에는 이메일·비밀번호 로그인 화면만 보이게
3. 로그인에 성공해야 글 목록이 보이게
4. 글 목록은 표로 보여주고, 최신 글이 위로
5. 글을 고치거나 지우는 버튼도 넣어줘
6. 엑셀(CSV)로 내려받는 버튼 하나 넣어줘
7. 글씨는 18px 이상, 휴대폰에서도 안 넘치게
8. 설명은 빼고 전체 코드만 줘
받은 코드는 메모장에 붙여넣고 admin.html로 저장한 뒤, 1단원에서 만든 폴더에 함께 넣어 다시 올리면 됩니다.
03

올린 글을
누구나 볼 수 있게

창고는 기본이 잠금입니다. 아무도 못 봅니다.
게시판은 보라고 만든 것이니, 읽기 문을 열어 주어야 합니다.
이 설정 하나로 글이 보이거나, 안 보이거나 합니다.
SQL Editor약 20분복사해서 붙여넣기만
03 · 따라 하기

먼저 글이 쌓일 표를 만듭니다

왼쪽 메뉴 SQL EditorNew query 에 아래를 전부 붙여넣고 Run.

게시판 표 만들기 — 전체를 복사하세요
-- 글 한 건이 표의 한 줄이 됩니다
create table if not exists posts (
  id         bigint generated always as identity primary key,
  title      text not null,   -- 제목
  body       text,            -- 내용
  writer     text,            -- 쓴 사람
  image_url  text,            -- 사진 주소 (4단원)
  video_url  text,            -- 영상 주소 (5단원)
  color      int default 0,   -- 포스트잇 색깔
  created_at timestamptz default now()
);

-- 잠금장치 켜기
alter table posts enable row level security;

-- ① 누구나 글을 쓸 수 있게
drop policy if exists "anyone can write" on posts;
create policy "anyone can write" on posts
  for insert to anon with check (true);

-- ② 누구나 글을 읽을 수 있게  ← 오늘의 핵심
drop policy if exists "anyone can read" on posts;
create policy "anyone can read" on posts
  for select to anon using (true);
03 · 꼭 이해할 것

왜 어떤 건 막고 어떤 건 열까요

신청서 — 읽기를 막습니다

  • 이름·연락처가 들어 있습니다
  • 남이 보면 개인정보 사고입니다
  • 넣기(insert)만 열어 둡니다
  • 담당자가 로그인해야 봅니다

게시판 — 읽기를 엽니다

  • 보라고 올리는 글입니다
  • 모두가 볼 수 있어야 합니다
  • 넣기와 읽기(select)를 모두 엽니다
  • 그래서 개인정보를 쓰면 안 됩니다
한 문장으로 읽기를 여는 순간, 주소를 아는 사람은 누구나 그 글을 볼 수 있습니다. 게시판에는 이름·전화번호·주민등록번호를 절대 쓰지 마세요.
03 · 프롬프트

게시판 화면도 AI가 만들어 줍니다

프롬프트 ② — 샘플 게시판 만들기
위에서 만든 posts 표를 쓰는 게시판을
board.html 파일 하나로 만들어줘.

Project URL : https://abcdefgh.supabase.co
anon public key : eyJhbGciOiJIUzI1NiIs...
테이블 이름 : posts
CDN 방식 @supabase/supabase-js@2 사용

-- 화면 구성 --
1. 위쪽에 글 목록, 최신 글이 맨 위로
2. 제목을 누르면 내용이 펼쳐지게
3. 아래에 글쓰기 칸 (제목·내용·쓴 사람)
4. 저장되면 초록 글씨로 안내,
   실패하면 빨간 글씨로 "다시 시도해 주세요"
5. 글씨는 18px 이상, 휴대폰에서 가로로 안 넘치게
6. 색은 차분한 남색 계열

설명은 빼고 전체 코드만 줘.
확인하는 법 내 화면에서 글을 하나 써 보고 → Supabase의 Table Editorposts에 그 줄이 보이면 성공입니다. 휴대폰으로도 열어서 그 글이 보이는지 확인해 보세요.
막히셨다면 안내 페이지 자료실의 「포스트잇 게시판 꾸러미」를 받으세요. 압축을 풀면 posts.sql(붙여넣고 Run)과 upload 폴더(그대로 Cloudflare에 끌어다 놓기)가 있습니다. 4·5단원은 이 파일로 이어서 진행하셔도 됩니다.
04

사진을 올려서
게시판에 띄우기

내 컴퓨터에 있는 사진은 남이 볼 수 없습니다.
인터넷 어딘가에 올려두고 "이 주소로 가면 그림이 있다"고 알려줘야 합니다.
그 사진첩이 PostImages입니다.
postimages.org약 15분가입 무료
04 · 따라 하기

올리고 주소만 복사하면 됩니다

  1. 1
    postimages.org 접속 후 로그인로그인해야 올린 사진이 사라지지 않습니다.
  2. 2
    Choose images 누르고 사진 고르기5MB 이하 JPG·PNG를 권합니다.
  3. 3
    올라가면 주소가 여러 개 나옵니다여기서 고르는 것이 중요합니다. 다음 장을 보세요.
  4. 4
    Direct link 를 복사메모장에 붙여 두었다가 게시판 글쓰기에 씁니다.
이런 주소가 나오면 맞습니다
https://i.postimg.cc/abc1234/photo.jpg
04 · 여기서 가장 많이 틀립니다

주소를 잘못 고르면 사진이 안 뜹니다

Direct link — 이것을 고르세요

  • 주소가 i.postimg.cc 로 시작합니다
  • 끝이 .jpg.png 로 끝납니다
  • 그림 파일 자체를 가리킵니다

Thumbnail · Hotlink — 안 됩니다

  • Thumbnail은 아주 작은 미리보기입니다
  • Hotlink는 그림이 아니라 웹페이지 주소입니다
  • 붙여넣으면 사진이 안 나오거나 깨집니다
올리기 전에 한 번 더 주소를 아는 사람은 누구나 그 사진을 볼 수 있습니다. 아직 공개 전인 자료, 학생 얼굴이 나온 사진, 개인정보가 적힌 화면 캡처는 올리지 마세요.
04 · 프롬프트

게시판에 사진 칸을 붙입니다

프롬프트 ③ — 사진 불러오기
방금 만든 게시판을 아래처럼 고쳐줘.

1. 글쓰기 칸에 "사진 주소" 입력란을 하나 추가하고,
   그 값을 posts 표의 image_url 칸에 저장해줘
2. 글 목록에서 image_url 이 있으면
   그 사진을 글 내용 위에 보여줘
3. 사진 가로 크기는 화면에 맞춰 줄어들게 해줘
   (가로로 넘치면 안 됨)
4. 사진 주소가 비어 있으면 아무것도 안 보이게 해줘
5. 주소가 잘못돼서 사진이 안 열리면
   "사진을 불러올 수 없습니다"라고 대신 보여줘

수정된 전체 코드를 처음부터 다시 줘.
해 보세요 아까 복사해 둔 i.postimg.cc 주소를 글쓰기 칸에 붙여넣고 저장하면, 게시판에 사진이 뜹니다. 휴대폰으로도 열어 보세요.
05

유튜브 영상을
게시판 안에서 재생하기

링크만 걸면 유튜브로 나가야 합니다.
임베딩을 하면 내 게시판 안에서 그대로 재생됩니다.
영상 주소에서 영상 번호만 찾으면 됩니다.
youtube.com약 15분오늘의 마지막
05 · 핵심

주소 안에 영상 번호가 숨어 있습니다

① 유튜브에서 복사한 주소
https://www.youtube.com/watch?v=dQw4w9WgXcQ
② 금색으로 칠한 11글자가 영상 번호
③ 게시판에 넣을 임베드 주소
https://www.youtube.com/embed/dQw4w9WgXcQ
쉽게 말하면 watch?v=embed/ 로 바꾸면 끝입니다. 휴대폰에서 공유한 짧은 주소(youtu.be/…)라면, 빗금 뒤 11글자가 영상 번호입니다.
05 · 프롬프트

주소만 붙여넣으면 재생되게

프롬프트 ④ — 유튜브 영상 불러오기
게시판을 아래처럼 한 번 더 고쳐줘.

1. 글쓰기 칸에 "유튜브 주소" 입력란을 추가하고,
   그 값을 posts 표의 video_url 칸에 저장해줘
2. 어떤 형태로 붙여넣어도 알아서 영상 번호만 뽑아줘
   (watch?v= 주소, youtu.be 짧은 주소, embed 주소 전부)
3. 글 목록에서 video_url 이 있으면
   그 영상을 게시판 안에서 바로 재생되게 넣어줘
4. 영상 크기는 화면 너비에 맞춰 늘었다 줄었다 하고,
   가로세로 비율은 16:9로 유지해줘
5. 주소가 비어 있으면 아무것도 안 보이게 해줘

수정된 전체 코드를 처음부터 다시 줘.
안 보일 때도 있습니다 만든 사람이 퍼가기를 막아 둔 영상은 재생되지 않습니다. 그때는 링크로만 안내하세요. 남의 영상을 쓸 때는 출처를 함께 적는 것이 예의이자 원칙입니다.
FINISH · 다섯 걸음 완주

오늘 여러분이 만든 것

  1. 1
    인터넷 주소문자로 보내면 누구나 열리는 내 홈페이지
  2. 2
    관리자 페이지담당자 두 명만 로그인해서 보는 관리 화면
  3. 3
    공개 게시판누구나 읽고 쓸 수 있는 샘플 게시판
  4. 4
    사진이 뜨는 글올린 사진이 게시판에서 바로 보임
  5. 5
    영상이 재생되는 글게시판 안에서 유튜브가 그대로 재생
  6. 그리고 가장 중요한 것막혔을 때 오류를 그대로 복사해 AI에게 물어보는 습관
공개 버튼을 누르기 전에 숫자·날짜를 원문과 대조하고, 개인정보가 남아 있지 않은지 보고, 대외로 나가는 안내라면 과장·교육장 확인을 받은 뒤 게시합니다. 사업이 끝나면 페이지를 내리고 접수 자료를 파기합니다.
연수 안내 페이지로 돌아가기