FrontierStack 사용자 설명서 설명서 처음
데스크톱 설명서 모바일 설명서 English日本語 frontierstack.app ↗

제II부

II
서비스 운영

눈앞의 Mac에서 웹 스택, 데이터베이스, 서비스 카탈로그, 그리고 사이트를 운영합니다.

4

제4장

웹 스택

Apache 또는 Nginx, 사이트마다 필요한 PHP 버전, 가상 호스트, 신뢰할 수 있는 로컬 HTTPS와 DNS — 웹 스택 전체를 설정 파일을 직접 고치지 않고 하나의 윈도우에서 제어합니다.

웹 서버는 대부분의 셀프 호스팅 환경에서 핵심이므로, FrontierStack은 웹 서버를 가장 중요한 요소로 다룹니다. Apache 패널은 Homebrew Apache를 설치, 시작, 검증하고 구성합니다. PHP, Localhost, Certificates, DNS 패널이 더해져 완전한 개발 및 호스팅 스택을 이루며 — 모든 변경은 검증을 거치므로 오타 하나로 사이트가 조용히 다운되는 일은 없습니다.

이 장에서는 지금 사용 중인 Mac에서 웹 사이트를 만들고 운영하는 패널을 다룹니다. 이 스택을 실제 도메인과 공용 인터넷에 연결하는 방법은 7장에서, 프로덕션용으로 보안을 강화하는 방법은 10장에서 설명합니다.

4.1Apache 패널

사이드바에서 Apache 패널을 열면 웹 서버의 상태(버전, 실행 여부, 수신 대기 중인 포트)를 한눈에 볼 수 있습니다. 상단의 버튼은 매일 사용하는 제어 기능인 시작, 중지, 재시작, 구성 검증입니다. 검증은 apachectl -t(실제 구문 검사)를 실행하고 결과를 마지막 결과에 표시하므로, 다시 로드하기 전에 변경 사항이 올바른지 확인할 수 있습니다.

FrontierStack은 macOS 시스템 Apache 대신 Homebrew Apache를 권장합니다. Homebrew 서버는 /opt/homebrew(Intel Mac에서는 /usr/local) 아래에 있으며, brew services를 통해 사용자 권한으로 실행되므로 작업할 때마다 root 암호를 묻지 않고, System Integrity Protection의 제한도 받지 않습니다 — 따라서 최신 mod_php가 문제없이 로드되고 스택 전체가 하나의 툴체인에 머뭅니다. /etc/apache2 아래의 시스템 Apache는 OS 업데이트 시 초기화되며, Apple이 번들로 제공하는 libphp에 묶이게 됩니다. Homebrew Apache가 설치되어 있지 않으면 패널에서 Homebrew Apache 설치…를 클릭 한 번으로 실행할 수 있습니다.

Homebrew 빌드, 레거시 로컬 빌드, 원격 서버의 빌드 등 여러 Apache 빌드를 함께 사용하는 경우, 바이너리 선택기(Homebrew Apache 추가 / 로컬 빌드 추가… 참조)로 각각을 등록하고 전환할 수 있으며, 각 빌드의 버전과 포트가 함께 표시됩니다.

참고FrontierStack이 Apache에 추가하는 모든 항목은 앱이 관리하는 구성 트리 /opt/homebrew/etc/httpd/frontierstack/에 있으며, httpd.conf의 IncludeOptional로 불러옵니다. 앱의 가상 호스트, MIME 유형, 관리형 include를 이곳에 모아 두므로 직접 작성한 httpd.conf는 깔끔하게 유지되고, FrontierStack이 무엇을 추가했는지 언제든 구분할 수 있습니다.

4.2모듈, 포트, 관리형 구성

Apache 패널 아래쪽에는 가장 자주 편집하는 구성 부분이 파일이 아닌 컨트롤 형태로 제공됩니다.

섹션기능
포트HTTP 및 SSL 수신 대기 포트(기본값 80과 443)를 설정합니다. Nginx가 80/443을 사용 중이면 Apache를 다른 포트로 옮기십시오. 적용을 누르면 Listen 지시어를 다시 쓰고 다시 로드합니다.
Apache 모듈(모듈…)로드된 모듈을 나열하고 활성화하거나 비활성화합니다. 사용하지 않는 모듈을 비활성화하는 것이 가장 간단한 보안 강화 방법입니다.
PHP 모듈Apache가 웹 사이트용으로 로드할 mod_php(libphp.so)의 버전을 선택합니다 — 다음 섹션을 참조하십시오.
WebDAV공유 폴더에 mod_dav를 활성화하고, 선택적으로 Basic 인증 사용자를 설정해 관리형 include에 기록합니다.
MIME 유형 편집…FrontierStack이 관리하는 MIME 파일에서 AddType 매핑을 추가하거나 제거하며, 배포판의 mime.types는 건드리지 않습니다.

컨트롤로 제공되지 않는 항목은 구성 행의 관리형 구성 편집…(FrontierStack include)과 httpd.conf 편집…(주 파일)으로 직접 편집할 수 있습니다. 저장할 때마다 apachectl -t로 검증하고, 정상적으로(graceful) 다시 로드하며, 새 구성을 해석할 수 없으면 롤백합니다 — 따라서 잘못된 편집은 실행 중인 서버를 망가뜨리기 전에 걸러집니다.

주의httpd.conf를 직접 편집하는 것은 강력하지만 보호 장치가 없습니다. 앱은 구문 오류가 있으면 검증 후 롤백하지만, 구문은 올바르더라도 문서 루트가 잘못된 위치를 가리키는 구성은 여전히 파일을 노출할 수 있습니다. FrontierStack 자체의 추가 사항에는 관리형 include를 사용하고, 큰 변경을 할 때는 사본을 보관하십시오.

모듈을 켜고 끄면 해당 LoadModule 줄을 다시 쓰고 재검증합니다. 변경 후 httpd -t가 실패하면 — 대표적인 예가 proxy 없이 proxy_fcgi를 활성화하는 경우로, 이제 앱이 자동으로 활성화해 줍니다 — 모듈 윈도우가 오류를 표시하고 조용히 닫히지 않습니다. 오류를 수정하거나 그래도 저장을 선택하십시오. Apache가 멈춰서 시작되지 않을 때(이미 로드된 서비스나, sudo brew services로 인해 일부 httpd 경로의 소유자가 root가 된 경우에 발생하는 전형적인 Homebrew 오류 Bootstrap failed: 5: Input/output error), 패널의 복구 및 재설정 섹션에서 단계별로 강도가 높아지는 세 가지 해결책을 제공합니다. 깨끗하게 재시작(사용자 및 시스템 launchd 도메인 양쪽에서 httpd를 중지한 다음 한 번 시작), 구성을 기본값으로 재설정(httpd.conf를 백업하고 Homebrew 기본 구성을 복원), 제거 후 재설치(root 소유 경로를 정리하고 formula를 재설치)입니다. 모두 앱 내 콘솔에서 실행되므로 sudo 프롬프트와 출력을 확인할 수 있습니다. Apache에 서비스 워치독의 keep-alive도 켜져 있으면 워치독이 httpd를 스스로 재시작할 수 있습니다 — 정상적인 동작이지만, 수동 복구와 충돌한다면 일시 중지하십시오.

4.3PHP 버전 선택

PHP 패널을 열어 Mac에 설치된 PHP 런타임을 관리합니다. Homebrew에서는 여러 메이저 버전(예: [email protected]부터 최신 릴리스까지)을 나란히 설치할 수 있으며, FrontierStack은 이를 하나의 전역 설치가 아니라 전환해 가며 사용하는 버전 묶음으로 다룹니다.

버전 ▸ 버전 추가…는 기존 버전과 나란히 다른 버전을 설치합니다 — 어떤 것도 교체되지 않으며, 사용 중인 버전도 바뀌지 않습니다. 목록은 두 부분으로 나뉩니다. Homebrew 자체 릴리스는 업스트림에서 아직 지원하는 버전입니다. 그 아래에는 지원 종료(EOL) 빌드 — PHP 8.0부터 5.6까지 — 가 있으며, 이들은 PHP에서 더 이상 패치하지 않고 Homebrew에서도 제외된 버전입니다. FrontierStack은 이 버전들을 커뮤니티 shivammathur/php tap에서 가져오며, tap에서 설치한다는 것은 해당 tap의 코드를 실행한다는 뜻이므로 각 버전마다 먼저 확인을 요청합니다. 지원 종료 PHP는 자신의 컴퓨터에서 레거시 사이트를 테스트하거나 유지 관리하는 용도로만 사용하고, 절대로 공용 인터넷에 노출하지 마십시오.

선택할 수 있는 항목은 두 가지입니다.

  • Apache 모듈. Apache 패널의 PHP 모듈 섹션에 있는 웹 사이트용으로 로드 선택기에서 Apache가 로드할 libphp.so의 버전을 선택합니다. 변경하면 관리형 구성을 다시 쓰고 Apache를 다시 로드합니다.
  • 사이트별 PHP. 로컬 개발 서버(아래의 Localhost 패널)에는 설치된 모든 버전을 나열하는 자체 PHP 버전 선택기가 있어, 컴퓨터의 다른 부분이 사용하는 버전을 바꾸지 않고도 한 프로젝트는 구버전 PHP로, 다른 프로젝트는 최신 버전으로 실행할 수 있습니다. 레거시 앱과 새 앱을 동시에 문제없이 운영하는 일반적인 방법입니다. 이 설정은 두 가지 로컬 런타임, 즉 PHP 내장 서버와 Apache 런타임 모두에 적용됩니다. mod_php로 서비스하는 Apache에는 한 가지 주의할 점이 있습니다. 해당 버전의 keg에 libphp.so가 포함되어 있어야만 사용할 수 있으며, 선택한 버전에 없으면 편집기가 알려 줍니다. 그런 경우 해당 사이트를 내장 서버에서 실행하거나 PHP-FPM으로 서비스하십시오.

런타임 상태 패널은 PHP와 함께 Python, Node.js, Java, Go, Rust, Ruby, Perl, .NET까지 더 넓은 범위를 보여 주며, 자체 점검 기능으로 누락되었거나 지원이 종료된 런타임을 문제가 생기기 전에 알려 줍니다.

런타임 섹션에는 프런트엔드 작업을 위한 React 패널도 있습니다. 새 앱(Vite, TanStack Start 또는 Next.js)의 기본 구조를 생성하고, 임의의 React 프로젝트를 지정할 수 있으며, 용도별로 정리된 엄선된 보조 라이브러리 목록을 제공합니다 — 상태 관리(Zustand, Jotai, Redux Toolkit), 데이터 페칭 및 서버 상태(TanStack Query — 예전 이름은 React Query — 와 SWR), 풀스택 프레임워크(TanStack Start, Next.js), 라우팅, 유효성 검사(ArkType, Zod), 폼, 인증(Clerk). 각 행에는 문서, 선택한 프로젝트에서 이미 사용 중인지 여부, 해당 프로젝트에 클릭 한 번으로 실행하는 npm install이 표시됩니다.

4.4사이트와 가상 호스트

Apache 패널의 웹 사이트 목록에서 가상 호스트를 관리합니다. 각 행에는 사이트 이름, 바인드 주소와 포트(예: :8080), 실시간 상태를 나타내는 실행 중 토글이 표시됩니다. 버튼으로 사이트 추가…, 편집, 복제, 비활성화, 서버로 푸시…(가상 호스트를 연결된 서버로 복사), 브라우저에서 사이트 열기를 할 수 있습니다. 사이트 가져오기…와 다음에서 복사…는 MAMP, XAMPP, Apple의 Server.app 또는 다른 Apache에서 기존 가상 호스트를 가져오며, 기본적으로 localhost에 바인드됩니다.

사이트를 추가하거나 편집할 때는 가상 호스트에 필요한 필수 항목을 설정합니다. ServerName(도메인), 문서 루트(선택…으로 폴더 지정), 바인드 주소와 포트입니다. 사이트를 활성화하면 실시간 상태 점과 함께 목록에 나타납니다. FrontierStack은 관리형 트리 아래의 .conf 파일에 가상 호스트를 기록하고, 검증한 뒤 다시 로드합니다. 가상 호스트, 인증서, Cloudflare DNS 레코드를 한꺼번에 만들려면 새 사이트 + DNS…를 사용하십시오 — 7장에서 설명하는 원스톱 마법사입니다.

스크린샷 추가 예정
그림 4.1. 가상 호스트 설정: ServerName, 문서 루트, 바인드 주소와 포트, TLS 및 PHP 옵션.촬영 방법: Apache 패널을 열고 웹 사이트 목록에서 사이트를 선택한 다음, ServerName과 문서 루트가 입력된 설정 편집기를 표시
팁개발 중에는 사이트를 127.0.0.1에 바인드하면 내 Mac에서만 접근할 수 있습니다 — 작업 중인 사이트에 가장 안전한 기본값입니다. 다른 컴퓨터에서 접근해야 할 때만 바인드 주소를 0.0.0.0 또는 LAN IP로 바꾸십시오.

4.5사이트용 TLS 인증서

Certificates 패널은 사이트에 자물쇠 아이콘을 표시해 주는 인증서를 발급하고 관리합니다. 용도에 따라 세 가지 방법을 제공합니다.

방법용도
mkcert(인증서 받기(mkcert))신뢰할 수 있는 로컬 HTTPS. mkcert는 Mac이 신뢰하는 로컬 인증 기관을 설치하므로 https://myapp.test가 브라우저 경고 없이 동작합니다 — 개발에 이상적입니다. 먼저 mkcert 설치로 설정하십시오.
Let’s Encrypt (ACME)acme.sh 또는 certbot을 통해 실제 도메인용으로 브라우저가 신뢰하는 공개 인증서를 발급합니다. webroot(도메인이 이미 HTTP를 서비스하는 경우) 또는 Cloudflare를 통한 DNS-01(인바운드 HTTP 불필요) 방식으로 발급합니다. 지금 모두 갱신과 갱신 cron으로 최신 상태를 유지합니다.
자체 서명 인증서 생성브라우저 경고를 감수할 수 있는 내부용 또는 테스트용의 간단한 인증서입니다.

발급한 후에는 Apache에 배포로 인증서를 사이트의 가상 호스트에 연결합니다. 만료 모니터링 섹션은 인증서(및 감시로 추가한 도메인)를 감시하고 만료되기 훨씬 전에 알림을 보냅니다 — HSTS와 최신 암호화 정책을 포함한 더 깊은 보안 강화 내용은 10장에서 다룹니다.

4.6이 Mac과 연결된 서버의 인증서 업데이트

설치된 인증서의 모든 인증서에는 발급자와 남은 일수가 표시됩니다. 행의 업데이트…는 인증서를 그 자리에서 갱신하며, 해당 인증서에 맞는 방법만 제공합니다. 자체 서명 재발급(기본적으로 같은 개인 키 사용, 최대 397일), certbot으로 갱신 또는 acme.sh(클라이언트 자체의 배포 훅이 실행됨), mkcert로 갱신, 또는 다른 곳에서 구입한 인증서의 경우 파일에서 교체…입니다. 이전 파일은 새 파일 옆에 .bak로 보관되며, 같은 단계에서 웹 서버를 다시 로드할 수 있습니다.

연결된 서버가 있으면 패널 상단에 호스트 선택기가 나타납니다. 서버를 선택하면 패널이 SSH를 통해 해당 서버의 인증서를 읽어 옵니다. Let’s Encrypt 계보, acme.sh, /etc/ssl, 그리고 nginx, Apache, Caddy, HAProxy 인증서 폴더가 대상입니다. 개인 키가 옆에 있는 인증서만 나열됩니다. 업데이트와 생성…도 그곳에서 동작하며, 변경은 서버에 저장된 sudo 암호를 사용해 root로 실행되므로 암호가 없으면 서버는 읽기 전용으로 표시됩니다.

설치된 인증서는 이 Mac과 연결된 서버 모두에서 자동으로 감시되므로, 별도 설정 없이 알림이 만료 전에 경고합니다. 각 행의 종 아이콘으로 감시를 켜거나 끌 수 있으며, 처음 발견했을 때 이미 만료된 인증서는 제외됩니다.

스크린샷 추가 예정
그림 4.2. 연결된 서버의 인증서를 만료일 및 업데이트 버튼과 함께 표시한 Certificates 패널.촬영 방법: Certificates를 열고 호스트 선택기에서 연결된 Linux 서버를 선택하여, Let's Encrypt 인증서 하나와 자체 서명 인증서 하나가 나열된 상태로 표시
주의유효 기간이 398일을 초과하는 서버 인증서는 Safari와 Chrome에서 무조건 거부되며, 경고를 무시하고 진행할 방법도 없습니다. 따라서 FrontierStack은 자체 서명 인증서의 유효 기간을 397일로 제한합니다. 더 오래 사용하려면 ACME 갱신을 사용하십시오.
보안mkcert의 로컬 CA는 그것이 실행되는 Mac에서만 신뢰되며, Let’s Encrypt 인증서는 실제 공개 인증서입니다 — 일반 사용자가 방문하는 사이트에는 절대로 자체 서명 인증서를 사용하지 마십시오. DNS-01 발급용 Cloudflare API 토큰은 CF_TOKEN 보관함 비밀 값으로 저장되어 실행 시에 주입되며, 클라우드 AI로 전송되지 않습니다.

4.7.htaccess 편집기

디렉터리별 Apache 규칙 — 재작성, 리디렉션, 접근 제어 — 은 .htaccess 파일에 있으며, FrontierStack은 줄 번호와 구문 점검 기능을 갖춘 전용 편집기를 제공합니다. 사이트 루트 사용으로 사이트 문서 루트의 .htaccess를 열거나 사용자 지정 경로를 지정하십시오. 레시피 삽입은 흔히 쓰이는 올바른 스니펫(프런트 컨트롤러 재작성, HTTPS 강제 블록)을 넣어 주므로 기억에 의존하지 않고 동작하는 규칙에서 시작할 수 있으며, 편집기는 저장하기 전에 명백한 문제를 표시합니다. PHP 라우터 내보내기…는 .htaccess 재작성 규칙을 PHP 내장 개발 서버용 라우터 파일로 변환합니다 — 사이트를 Localhost 패널로 옮길 때 유용합니다.

4.8Nginx와 리버스 프록시

FrontierStack은 Nginx를 대체 웹 서버로, 또는 앱 앞단의 리버스 프록시로 관리합니다. 둘 다 설치되어 있으면 도메인 보기에서 사이트를 서버별로 묶어 Apache 가상 호스트와 Nginx server 블록을 나란히 보여 주며, 각 Nginx server 블록의 listen 포트, root, TLS 상태를 읽어 옵니다. 리버스 프록시는 높은 번호의 포트에서 HTTP로 동작하는 애플리케이션(Node, .NET 또는 Python 서비스)을 앞단에서 받아 주는 표준 패턴입니다. Nginx가 443에서 TLS를 종료하고 앱으로 전달합니다. Apache와 Nginx는 둘 다 기본적으로 80/443을 사용하려 하므로, 함께 실행한다면 Apache 패널의 포트 섹션에서 한쪽을 다른 포트로 옮기십시오.

4.9Localhost, DNS, 개발 스택

로컬 환경을 완성하는 패널이 세 가지 더 있습니다.

  • Localhost — 임시 로컬 개발 서버 관리자입니다. 새 로컬 서버를 추가하고, 런타임(PHP, Python/Django, Node/Vite…)과 폴더를 선택한 다음, 포트와 선택적인 ServerName을 설정하고 시작하십시오 — 서버별 환경 전역 변수와 .test 리졸버가 있어 myapp.test가 로컬에서 해석됩니다. 빈 포트 도우미와 localhost를 점유한 프로세스 중지 작업으로 흔히 발생하는 충돌을 해결할 수 있습니다. Tailscale에서도 서비스를 체크하면 다른 Tailscale 기기에서 이 Mac의 tailnet 주소와 같은 포트로 서버에 접근할 수 있습니다 — 서버는 여전히 localhost에서만 수신 대기하고 FrontierStack이 tailnet 연결을 서버로 전달하므로, LAN에서는 접근할 수 없습니다. Django 서버의 경우 Tailscale 호스트 허용…이 변경 내용을 보여 준 뒤 프로젝트의 ALLOWED_HOSTS에 tailnet 주소를 추가합니다(설정이 환경 변수로 구성된 경우에는 추가할 줄을 알려 줍니다). AI 관리자(및 MCP를 통한 에이전트)도 debug_share 작업 serve로 같은 방식으로 폴더를 시작할 수 있습니다. 응답에는 localhost 호스트와 포트, 요청한 경우 Tailscale URL이 포함되므로 에이전트가 사이트가 실행 중인 위치를 보고할 수 있습니다.
  • DNS — 로컬 이름 해석과 권한 있는(authoritative) 호스팅입니다. dnsmasq, unbound 또는 nsd를 실행하고, 영역 파일을 가져오거나 내보내며, 레코드가 바뀌면 리졸버 캐시를 비워 Mac이 오래된 응답을 반환하지 않게 합니다.
  • LAMP / DevStacks — 원클릭 스택입니다. LAMP 패널은 서로 맞춰진 구성 요소 세트를 함께 설치하고 시작하는 프리셋(셋업 선택)을 제공합니다(설치 및 시작, 모두 시작, 모두 중지). DevStacks는 프로젝트 폴더의 프레임워크를 감지하고 실행에 필요한 명령과 npm 스크립트를 보여 줍니다.

Localhost 개요는 실행 중인 모든 로컬 서버를 나란히 보여 주므로, 터미널 윈도우를 잔뜩 띄워 놓고 일일이 지켜볼 필요 없이 여러 사이트를 동시에 실행할 수 있습니다.

4.10사이트를 온라인에 공개하고 에이전트에게 맡기기

모든 로컬 서버의 세부 정보에는 인터넷 접근 상자가 있습니다. Cloudflare 호스트 이름을 선택하고 내 영역 중 하나에 속한 이름(예: demo.example.com)을 입력하면, FrontierStack이 라우트와 DNS 레코드를 추가하고 cloudflared를 시스템 서비스로 실행하므로 앱을 닫아도, 재부팅한 후에도 주소가 유지됩니다. 첫 사이트에서는 관리자 암호를 한 번 묻습니다. 이후 사이트는 같은 터널을 공유하며 각자 고유한 호스트 이름을 가집니다. 다른 선택지로 임시 링크(trycloudflare.com)와 Tailscale Funnel이 있습니다. Vite와 Django는 보통 알 수 없는 호스트 이름을 거부하므로, Cloudflare 라우트는 대신 localhost를 전달하여 별도 수정 없이 동작하게 합니다.

같은 지구본 버튼이 Apache ▸ 웹 사이트 행(터널이 ServerName으로 Apache에 사이트를 요청)과 카탈로그 서비스, Docker 컨테이너, Vagrant 박스, Spin 앱에도 있습니다.

호스팅 환경설정…(Localhost 패널과 설정 ▸ 웹 사이트 및 호스팅에 있음)에서는 새 사이트를 어디에 둘지 지정합니다. 이 Mac, Apache 사이트, 내 서버 중 하나, here.now, Hostinger, Vercel 또는 ChatGPT Sites 중에서 고를 수 있고, 원한다면 사이트 종류별로 다른 위치를 지정할 수도 있습니다. 또한 새 사이트 이름에 사용할 도메인, 사이트를 만들 폴더, 누가 사이트를 빌드할지, 빌더가 따를 디자인 스킬(SKILL.md가 들어 있는 폴더)도 여기서 지정합니다.

그런 다음 AI 관리자에게 사이트를 요청하십시오(“빵집용 원페이지 사이트, 따뜻한 색감, 영업시간과 지도 포함”). AI 관리자는 한 번에 폴더를 만들고, 사이트 설정이 담긴 .env(암호는 절대 넣지 않음), BRIEF.md, 빌더용 규칙을 담은 AGENTS.md, .claude/skills의 디자인 스킬을 작성하고, 서버를 시작하고, 공개 주소를 부여하고, 첫 git 커밋을 만듭니다. 그런 다음 페이지를 직접 빌드하거나, 격리된 Sandcastle 컨테이너에서 실행되는 Claude Code 또는 Codex에게 작업을 넘깁니다. 이들이 작업을 마치면 파일이 폴더로 다시 복사되고 알림이 표시됩니다. MCP로 연결된 외부 에이전트도 같은 셋업을 요청하고 전달받은 폴더에서 빌드할 수 있습니다.

참고비밀 정보는 폴더에 들어가지 않습니다. 사이트에 키가 필요하면 빌더는 환경 변수에서 키를 읽고, 값은 FrontierStack의 비밀 값 저장소에 보관합니다.
AI가 사용하는 것과 같은 도구
이 장의 모든 기능은 AI 관리자(13장)와 MCP를 통한 외부 AI 도구(14장)에서도 같은 보호된 작업으로 사용할 수 있습니다. vhost_create는 가상 호스트를 만들고, reload_webserver는 Apache 또는 Nginx를 테스트한 뒤 정상적으로 다시 로드하며, issue_certificate는 Let’s Encrypt 인증서를 발급받습니다. 이들은 변경을 가하는 도구이므로 각각 승인 카드를 표시하고 변경 허용이 활성화되어 있어야 합니다 — AI는 사용자가 이 패널에서 하는 일을 똑같이 수행할 뿐이며, 허용되지 않은 일은 하지 않습니다.

FrontierStack 사용자 설명서 · 버전 1.0.0 · 제4장