웹 개발자를 위한 Studio 설정
Studio 다운로드에는 두 에디션의 전체 소스 코드, Cloudflare용 배포 도구, 기술 문서가 들어 있습니다. 이 가이드는 각 단계를 직접 실행하고 싶은 분들을 위한 요약판입니다.
- 적합 대상
- Studio 다운로드에 포함된 소스로 Studio를 직접 설치하려는 웹 개발자와 IT 팀.
- 필요한 것
- Studio 다운로드. PHP 에디션에는 PHP 8.0 이상을 지원하는 Apache, LiteSpeed 또는 nginx 호스트가 필요하고, Cloudflare 에디션에는 R2가 켜진 Cloudflare 계정과 Node.js 20 이상이 필요합니다.
- 에디션
- URL, 업로드 API, 대시보드, 역할이 같은 앱의 두 가지 에디션입니다. 데이터베이스가 필요 없는 PHP 앱과, R2와 D1을 사용하는 Cloudflare Worker입니다.
Studio 다운로드 받기
Studio가 있는 계정으로 Maxisnap에 로그인한 다음:
- Windows: Maxisnap에서 설정 → 계정 → Maxisnap Studio 설정 마법사를 열고 “시작하기”를 클릭한 다음 “대시보드 다운로드”를 클릭합니다. Maxisnap이 Studio ZIP 파일을 다운로드 폴더에 저장하고 그 폴더를 엽니다.
- Mac: Maxisnap에서 Settings → Welcome & Help → Studio Setup Guide를 열고 “Get Started”를 클릭한 다음 “Download Dashboard”를 클릭합니다. Maxisnap이 Studio ZIP 파일을 다운로드 폴더에 저장합니다.
ZIP 파일의 압축을 풉니다. Windows에서는 마우스 오른쪽 버튼으로 클릭하고 “모두 추출”을 선택합니다. Mac에서는 두 번 클릭합니다.
Maxisnap-Studio-v<version>/
Maxisnap Studio - Start Here.html guided setup (branding + every route)
snaps/ PHP edition: upload this folder to a web host
cloudflare/ Cloudflare Workers edition (Worker + R2 + D1)
deploy/cli.mjs deploys it through the Cloudflare API (Node 20+)
docs/Developer guide.html architecture, upload API, security, updates
docs/Cloudflare setup - technical brief.html
AGENTS.md instructions for AI coding assistants 전체 Developer guide에는 아키텍처, 업로드 API, 키와 역할, 보안 모델, 문제 해결 방법이 담겨 있습니다. 다운로드의 docs/Developer guide.html 파일입니다.
PHP 에디션: 업로드하고 설정 마치기
- 숨김 파일인 .htaccess 파일을 포함해 snaps 폴더를 웹 루트에 업로드하여 최종 경로가 public_html/snaps/index.php가 되도록 하세요. Start Here 페이지에서 만든 브랜딩 적용 snaps.zip도 같은 방식으로 사용합니다. 그 자리에서 압축을 풀고, snaps/snaps처럼 중첩되지 않게 하세요.
- https://yourcompany.com/snaps/ 주소를 한 번 여세요. 설정 페이지가 PHP와 폴더 권한을 확인하고 40자 길이의 관리자 키를 제안합니다. 키는 최소 16자 이상이어야 합니다. 키를 복사한 다음 “Create my dashboard”를 클릭하세요.
- nginx에서는 snaps/.htaccess의 라우팅 규칙과 접근 거부 규칙을 그대로 구현하세요. uploads, data, branding은 비공개로 유지하세요.
설정 페이지가 your-settings.php를 만들며, 이 파일은 업데이트 후에도 유지됩니다:
'dashboard_key' => '…', // the Admin key; the setup page writes it
'base_url' => 'https://yourcompany.com/snaps', // the address setup was opened at; fix it here if share links come out wrong
'max_upload_mb' => 500, // your host's PHP limits still apply Cloudflare 에디션: 터미널에서 배포
함께 제공되는 CLI는 먼저 계정을 읽고, 무엇을 만들고 무엇을 건드리지 않을지 보여 주는 실행 계획을 표시하며, 이미 사용 중인 이름은 거부합니다. 배포가 중간에 멈춰도 같은 명령을 다시 실행하면 아무것도 두 번 만들지 않고 이어서 진행합니다.
cd cloudflare
# Option 1: the bundled CLI (Node 20+; plan first, then --yes). PowerShell:
$env:CLOUDFLARE_API_TOKEN = "<token: Account Settings Read; Workers Scripts, R2 and D1 Edit;
for --zone/--hostname also Zone Read, DNS Read, Workers Routes Read>"
node deploy/cli.mjs whoami
node deploy/cli.mjs plan --account <account id> --name snaps
# no workers.dev name on the account yet? The plan asks you to "Choose your free
# workers.dev name": add --subdomain <your-company> to both commands (account-wide).
# A subdomain of your domain as well: add --zone <zone id> --hostname snaps.example.com
node deploy/cli.mjs deploy --account <account id> --name snaps --yes
# prints the Studio address and the Admin key once, and writes deployment.json here
# Option 2: plain Wrangler (create the bucket and database, set their ids in wrangler.jsonc)
npm install
npx wrangler r2 bucket create maxisnap-studio-media
npx wrangler d1 create maxisnap-studio
npx wrangler secret put ADMIN_KEY
npm run sync
npx wrangler deploy 배포가 끝나면 Studio 주소와 관리자 키가 한 번만 표시되고, 명령을 실행한 폴더에 deployment.json이 기록됩니다. 이 파일을 보관하세요. update와 remove가 이 파일을 사용합니다.
작동 확인
curl.exe -s -H "X-Dashboard-Key: <Admin key>" https://<studio address>/api/health.php
# {"ok":true,"app":"Maxisnap Studio","version":"…"} the Cloudflare edition adds "edition":"cloudflare" 그런 다음 브라우저에서 Studio 주소를 열고 관리자 키로 로그인하세요. 401은 키가 잘못되었다는 뜻이고, 404는 주소나 폴더가 잘못되었다는 뜻입니다.
Maxisnap 연결
- Windows용 Maxisnap: 설정 → 계정 → Maxisnap Studio 설정 마법사를 열고 “시작하기”를 클릭하고, 4단계 “Maxisnap 연결”이 나올 때까지 “다음”을 클릭합니다. Studio 주소와 키를 붙여넣고 “연결 테스트”를 클릭한 다음 “다음”을 클릭하고, 마지막 페이지에서 “완료 및 저장”을 클릭합니다. 설정할 때 받은 관리자 키도, 대시보드의 People & access에 있는 업로드 코드도 사용할 수 있습니다.
- Mac용 Maxisnap: Settings → Welcome & Help → Studio Setup Guide를 열고 “I already have a dashboard”를 선택합니다. Studio 주소와 키를 붙여넣고 “Test Connection”, “Next”, “Finish & Save”를 차례로 클릭합니다.
업로드 API 알아보기
- Maxisnap 앱은 X-Dashboard-Key 헤더와 함께 api/upload.php로 업로드합니다. 이미지(PNG, JPG, GIF, WebP)와 동영상(MP4, WebM, MOV)을 받을 수 있습니다.
- Windows용 Maxisnap과 Mac용 Maxisnap은 각 업로드를 Cloudflare Studio에 요청 한 번으로 보내며, Cloudflare Studio는 파일당 최대 25 MB까지 받습니다.
- Cloudflare 에디션에는 더 큰 파일을 위한 청크 업로드 API도 있으며, Developer guide에 설명되어 있습니다: api/upload/start, part, complete.
- 공유 페이지와 해당 미디어 파일은 다음 경로를 사용하며, 그 밖의 모든 경로는 내부용입니다:
/<slug>/<slug>.<ext>
나중에 업데이트하거나 제거하기
PHP: snaps/How to update.txt에 나열된 파일만 교체한 다음 호스트와 CDN 캐시를 지우세요. 캡처, 팀원, 브랜딩, 설정은 그대로 유지됩니다.
Cloudflare: 새 패키지의 cloudflare 폴더에서 다음을 실행하세요. 이전 deployment.json을 그 폴더에 복사해 두어야 합니다.
# Update: from a newer package's cloudflare folder, with the old deployment.json copied in
node deploy/cli.mjs update --record deployment.json --yes
# New Admin key (shown once):
node deploy/cli.mjs update --record deployment.json --yes --new-admin-key
# Remove the custom domain and the Worker; the bucket and database (the captures) stay
node deploy/cli.mjs remove --record deployment.json --yes
# Also delete every capture: cannot be undone
node deploy/cli.mjs remove --record deployment.json --yes --delete-data 문제가 생겼을 때
상태 확인이 401을 반환합니다
{"error":"unauthorized"}
키가 잘못되었거나, 비활성화되었거나, Studio가 허용하는 길이보다 짧거나, PHP 호스트에서 설정이 아직 끝나지 않았습니다. 키는 X-Dashboard-Key 헤더로 보내고, 주소에는 절대 넣지 마세요.
상태 확인이 404 또는 JSON 대신 HTML을 반환합니다
주소나 폴더가 잘못되었거나, 호스트가 Studio의 .htaccess 규칙을 무시하거나(nginx, 또는 URL 재작성을 쓰지 않는 Apache), CDN이나 보안 계층이 Studio 대신 응답하고 있습니다. nginx에서는 snaps/.htaccess의 라우팅 규칙과 접근 거부 규칙을 그대로 구현하세요. Developer guide에 해당 규칙이 나와 있습니다.
상태 확인이 429를 반환합니다
Too many incorrect codes. Wait a few minutes before trying again.
잘못된 키를 반복해서 입력하면 Studio는 내 네트워크에서 오는 추가 시도를 15분 동안 받지 않습니다. 기다린 다음 올바른 키로 다시 시도하세요.
사용자 지정 도메인에서 업로드가 403을 반환합니다
해당 호스트 이름의 Cloudflare Access, WAF 규칙 또는 Bot Fight Mode가 앱의 업로드를 차단합니다. Studio 호스트 이름은 예외로 지정하세요. 점검 목록은 기술 개요서에 있습니다. Viewer 코드로 업로드해도 403이 반환됩니다. 관리자 키나 업로드 코드를 사용하세요.
업로드가 413을 반환합니다
PHP에서는 upload_max_filesize, post_max_size 또는 호스트나 CDN의 제한이 파일 크기보다 작은 경우입니다. Studio 자체 한도는 your-settings.php의 max_upload_mb입니다.
Cloudflare에서는 요청 한 번에 최대 25 MB까지 담을 수 있으며, 더 큰 파일에는 청크 업로드 API가 필요합니다.
Cloudflare Studio의 모든 페이지가 503을 반환합니다
This Studio is not set up correctly: its ADMIN_KEY secret must be at least 16 characters.
더 긴 ADMIN_KEY 시크릿을 설정하세요. 예를 들어 update 명령과 --new-admin-key를 사용하거나, npx wrangler secret put ADMIN_KEY를 실행하세요.
실행 계획이 “x” 줄에서 멈춥니다
각 “x” 줄은 진행을 막는 항목이며, 해야 할 일을 알려 줍니다. R2를 켜거나, workers.dev 이름이 없는 계정에는 --subdomain을 추가하거나, 이름이 잘못되었거나 이미 사용 중이거나 도메인에 속하지 않는다면 --name, --zone 또는 --hostname을 바꾸라는 안내입니다. 그런 다음 실행 계획을 다시 만드세요. 이미 사용 중인 버킷과 데이터베이스 이름은 진행을 막는 항목 없이 다음으로 비어 있는 이름이 자동으로 지정됩니다.
CLI가 deployment.json을 거부합니다
deployment.json belongs to the Studio "snaps". Keep it, and pass --record <another file> for this one.
Studio마다 고유한 기록 파일이 있습니다. 해당 파일을 보관하고, 두 번째 Studio에는 --record로 다른 파일을 지정하세요. 기록 파일이 없으면 update와 remove를 실행할 수 없으며, 올바른 파일의 경로를 전달해야 합니다.
workers.dev Studio에 “Error 1027”이 표시됩니다
무료 요금제의 하루 요청 한도에 도달했습니다. UTC 자정에 초기화됩니다.
그래도 해결되지 않나요?
이메일로 문의해 주시면 담당자가 보통 영업일 기준 하루 안에 답장해 드립니다. 아래 정보를 함께 보내 주시면 한 번에 답변해 드릴 수 있습니다:
- 선택한 설정 방법과 현재 진행 중인 단계.
- 화면 스크린샷(오류 메시지가 있다면 전체 내용이 보이게).
- Studio를 설치할 위치: 새 Cloudflare 계정 또는 기존 Cloudflare 계정, 또는 웹 호스팅 업체 이름.
- Maxisnap 버전: Windows에서는 설정 → 정보에서, Mac에서는 Maxisnap → About Maxisnap에서 확인할 수 있습니다.
관리자 키, Cloudflare 키, 비밀번호는 보내지 말아 주세요. 도움을 드리는 데 필요하지 않습니다.