Lobsters

Creating a Blog in Gemini://

Gemini://에 블로그 만들기

Gemini 프로토콜에서 블로그인 gemlog를 만들고 운영하는 방법을 설명하는 실용 가이드입니다. 호스팅 플랫폼, 파일 구조, 피드, CGI 기반 상호작용, TLS 클라이언트 인증서까지 소개해 저사양·저복잡도 웹 publishing을 직접 시작하게 돕습니다.

AI 요약

Gemini는 2019년 Solderpunk라는 가명 개발자가 만든 최소주의 인터넷 프로토콜입니다. HTML 대신 제목·링크·목록 중심의 Gemtext를 사용하고, 모든 연결은 TLS와 1965번 포트에서 동작합니다. 한 번 요청하고 한 번 응답한 뒤 연결을 닫는 구조라서 일반적인 HTTPS 웹과 사용 경험이 다릅니다. 글쓴이는 Gemini를 단순히 읽는 프로토콜이 아니라 글쓰기, 사회적 상호작용, 개인 publishing을 실험하는 공간으로 소개합니다.

■ 왜 Gemini에서 블로그를 운영하나

Gemini에는 광고 수익이나 대규모 트래픽을 노릴 만한 시장이 거의 없고 사용 규모도 작습니다. 글쓴이는 그 결과 생성형 AI 봇과 에이전트가 가득한 일반 웹보다 사람이 직접 운영하는 공간에 가깝다고 설명합니다. JavaScript, CSS, HTML을 다루지 않아도 되고, Markdown보다 단순한 Gemtext만 작성하면 됩니다. 디자인과 브라우저 호환성 문제에 시간을 쓰는 대신 글쓰기에 집중할 수 있다는 주장입니다.

Gemini에서 만든 블로그는 보통 gemlog라고 부릅니다. HTTPS 웹에서 가능한 일을 모두 대체하려는 방식은 아니며, 화면과 기능을 의도적으로 제한한 다른 읽기 경험에 가깝습니다. 터미널 기반 브라우저에서도 접근할 수 있어 최신 웹을 처리하기 어려운 하드웨어에 새로운 선택지를 제공합니다. 독자 규모가 작아 공개 상태를 유지하면서도 더 좁고 의도적인 독자층을 만날 수 있다는 점도 장점으로 제시합니다.

■ capsule을 만드는 방법

가장 쉽게 시작하는 방법으로 SmolPub을 소개합니다. Gemini뿐 아니라 clearnet과 Gopher에도 블로그를 노출하며, 평생 이용료는 5달러입니다. Tildeverse에서는 SSH와 터미널을 조금 익혀야 합니다. Tilde.pink는 Gemini capsule을 자동으로 제공하고, Tilde.town은 town request-gemini 명령으로 capsule을 신청합니다. SDF/Freeshell.org에서는 Gopher 사이트를 만들 수 있습니다. flounder.online과 Midnight Pub 같은 Gemini 전용 서비스는 수동 승인이 필요합니다. Gemcities는 무료이며 웹 인터페이스로 capsule을 즉시 만들 수 있지만, 글쓴이는 서비스가 다소 vibecoded처럼 보인다고 덧붙입니다.

직접 서버를 운영하는 방법도 있지만 글의 범위에서는 제외합니다. 기본 파일 구조는 일반 폴더와 평문 파일만으로 구성합니다. 루트에는 index.gmi, about.gmi, now.gmi, hobbies.gmi, links.gmi, quotes.gmi, gemroll.gmi를 둘 수 있습니다. 블로그 글은 gemlog/ 아래에 YYYY-MM-DD-slug.gmi 형식으로 저장합니다. index.gmi에는 최신 글부터 날짜와 링크를 나열합니다.

■ gemlog의 관습과 배포

공식 gemlog 표준은 없지만 커뮤니티에는 몇 가지 관습이 자리 잡았습니다. 게시물 파일명에 날짜를 포함하고 /posts/ 또는 /gemlog/ 디렉터리에 정리합니다. 별도의 구독 프로토콜이 없기 때문에 Atom 피드인 atom.xml을 제공하는 capsule도 많습니다. 다른 곳에서 글을 모을 때 제목으로 사용할 수 있도록 게시물 첫 줄을 # 제목으로 작성하는 방식도 널리 쓰입니다.

Gemini 브라우저인 Lagrange, Bombadillo, Kristall은 Gopher, Spartan, finger://도 함께 다룹니다. capsule에는 finger 링크와 .plan, .project 파일을 추가할 수 있습니다. .plan은 이번 주의 현재 상태를, .project는 계정이나 사람을 한 줄로 설명하는 용도로 사용합니다. favicon.txt에 Unicode 이모지 하나를 넣으면 이를 지원하는 클라이언트에서 capsule 아이콘으로 표시합니다.

일반 웹사이트처럼 .well-known/security.txt를 제공하는 것도 권장합니다. Contact, Expires, Encryption, Policy, Preferred-Languages, Canonical 항목을 넣어 보안 연락처와 정책을 알릴 수 있습니다. robots.txt도 지원하지만 Gemini 요청에는 User-Agent가 없습니다. 대신 archiver, indexer, researcher, webproxy 같은 목적별 가상 사용자 에이전트를 기준으로 접근 경로를 제한합니다.

■ Gemini에서 상호작용 구현하기

Gemini BBS와 Station은 Gemini에서 사용자 가입과 대화를 제공하는 대표 사례입니다. Astrobotany 같은 게임도 같은 방식으로 동작합니다. 서버는 단순 파일을 반환하는 대신 URL과 query string을 받아 스크립트를 실행하고, 결과로 Gemtext를 표준 출력에 씁니다.

입력 과정은 네 단계로 구성합니다. 클라이언트가 URL을 요청하면 서버가 콘텐츠 대신 상태 코드 10을 보내고 입력 안내 문구를 표시합니다. 비밀번호처럼 민감한 입력에는 11을 사용합니다. 사용자가 입력한 값은 URL 인코딩되어 query string으로 붙고, 클라이언트는 같은 URL을 다시 요청합니다.

Gemini에는 쿠키가 없습니다. 방문 사이의 상태는 TLS 클라이언트 인증서로 유지합니다. 서버가 특정 경로에 상태 코드 60을 보내 인증서를 요구하면 클라이언트가 사용자의 허가를 받아 인증서를 생성하거나 기존 인증서를 제시합니다. 서버는 인증서 fingerprint를 키로 삼아 사용자의 상태를 저장합니다. 글쓴이는 이 구조를 더 살펴보려면 Solderpunk의 gemcert 저장소를 참고하라고 안내합니다.

■ CGI로 검색·방명록 만들기

Gemini에는 PHP나 서버 측 JavaScript에 해당하는 표준 기능은 없지만 오래된 CGI(Common Gateway Interface)를 지원합니다. 서버는 정적 .gmi 파일 대신 실행 파일을 호출하고, 스크립트가 표준 출력으로 내보낸 내용을 응답으로 전달합니다. 첫 줄에는 상태 코드와 MIME 타입을 쓰고, 빈 줄 다음에 본문을 둡니다. 예를 들어 Python 스크립트는 20 text/gemini를 출력한 뒤 # Hello! 제목과 본문을 출력합니다.

파일을 hello.cgi로 저장하고 chmod +x로 실행 권한을 부여한 뒤 서버의 cgi-bin 디렉터리에 넣습니다. CGI를 지원하는 Jetforce 같은 Gemini 서버는 QUERY_STRING과 PATH_INFO를 환경 변수로 넘깁니다. 이 값을 이용하면 검색창, 방명록, 간단한 게임 같은 상호작용을 구현합니다.

■ 시작에 필요한 도구

일반 웹 브라우저는 Gemini 프로토콜을 처리하지 못하므로 전용 클라이언트가 필요합니다. 글쓴이는 디렉터리처럼 capsule 구조를 보여주는 사이드바가 있는 Lagrange를 추천하고, 터미널에서는 Amfora를 제안합니다. 터미널과 SSH가 낯설다면 GitHub의 SSH 키 생성 안내, LinuxCommand.org의 Learning the Shell, MIT의 The Missing Semester of Your CS Education을 참고할 수 있습니다.

Gemtext는 공식 사양이 짧고 단순합니다. 편집기로는 vim이나 nano보다 마우스와 Ctrl+S, Ctrl+Q 같은 익숙한 단축키를 제공하는 Micro를 추천합니다. 플랫폼에 웹 인터페이스가 없다면 터미널에서 파일을 만들고 수정해야 합니다. Gemini 브라우저와 관련 도구 목록은 Awesome Gemini 저장소에서 확인할 수 있습니다.

■ 글쓴이의 평가

Gemini는 오래된 기술을 되살린 프로토콜이 아니라 2019년에 만들어진 새 프로토콜이지만, Gopher와 BBS, 오래된 개인 웹 문화의 영향을 많이 받았습니다. 글쓴이는 탐색 과정에서 살아 있는 링크만큼 폐기되거나 방치된 링크도 많이 발견했다고 말합니다. 별도 프로토콜과 브라우저를 사용해야 하는 마찰이 크기 때문입니다.

Gemini가 대중적으로 확산되지는 않겠지만, 글쓴이는 오히려 그 점을 반긴다고 합니다. 연결을 끊지 않고도 조용하고 평온한 인터넷을 경험할 수 있으며, 앞으로 자신의 글 일부를 Gemini에만 올릴 계획이라고 밝힙니다.

■ Lobsters 반응

  • @koala — 몇 가지 덧붙이겠습니다. Gemini capsule에서 운영하는 블로그를 보통 gemlog라고 부르고 공식 gemlog 사양은 없다고 했지만, geminiprotocol.net의 companion specification은 어느 정도 공식적인 문서입니다. 일부 클라이언트는 암묵적 피드도 사용합니다. 예를 들어 Lagrange에서는 Gemtext 암묵적 피드를 구독할 수 있습니다. Gemtext를 잘 몰라도 Gemini 피드를 만드는 일은 훨씬 쉽기 때문에, 저는 이것이 Gemini에서 가장 강력한 아이디어 중 하나라고 생각합니다. 글 아래에 미리 서식이 적용된 링크 블록을 두기보다 일반 링크를 사용해도 됩니다. Gemini URL로 연결할 수 있고, 설정이 올바르면 HTML로 된 제 블로그와도 연결됩니다. 수없이 말했지만 제게는 여전히 유용합니다. Gemini는 수행 예술입니다. 직접 Gemini를 사용하지 않더라도 배울 수 있습니다. 절대 사용하지 않을 사람이라도 공부해 보기를 권합니다. 일을 하는 방식이 더 나아질 수 있기 때문입니다. 최근에 블로그와 SSG를 Gemtext 우선으로 만들었지만 Gemini 서버는 운영하지 않는 사람을 발견했습니다. 저도 사이트를 Gemtext 우선으로 만들었지만, 주로 재미로 Gemini 서버를 운영합니다. HTTP/HTML 사이트와 Gemini/Gemtext 사이트를 함께 운영하는 요령을 설명했는데 꽤 흥미롭다고 생각합니다.
    • @ploum — Gemini를 사용하지 않아도 배울 수 있다는 말이 정말 맞습니다. 10년 동안 Wordpress를 다른 블로그 플랫폼으로 바꾸려 했지만, 늘 작은 기능 하나가 부족했습니다. 재미로 gemlog를 열었는데, 더 필요한 것이 없다는 사실을 깨달았습니다. gemlog에 글을 많이 쓰면서 제 블로그를 잊고 있었기 때문입니다. 그때 20년치 블로그 글을 gemlog로 옮겼습니다. 이제 Ploum.net은 gemlog 우선이고, 글쓰기가 어떻게 개선됐는지와 독자들이 얼마나 잘 받아들였는지를 보면서 이 결정을 후회한 적이 전혀 없습니다. 저는 이것을 ‘마지막으로 필요하게 될 블로그’라고 부릅니다.
    • @koala — 서툴러진 프랑스어를 연습할 기회는 언제나 좋습니다. 우리 생각이 꽤 비슷하네요. 요즘은 더 나은 텍스트 linting도 찾고 있습니다. 저는 서버 측 검색 대신 모든 게시물을 색인을 통해 두고 Ctrl+F를 사용합니다. Wordpress 태그는 버리고 글끼리 링크해 시리즈를 만들었습니다. 배포 수단으로 mailing list를 생각해 낸 점은 부럽습니다. 제 할 일 목록에도 있습니다. 이제 다른 사람들이 이 방식을 쉽게 사용하도록 만들고 싶습니다. Git 없이 동작하는 무언가일 수도 있고, 약간의 명령줄 사용은 필요하지만 Git을 감추고 감싸는 도구일 수도 있습니다. ActivityPub을 Gemini와 비슷한 방식으로 대체할 방법도 찾고 있습니다. 링크 없이 암묵적 gemfeed를 만드는 방식입니다. 예를 들면 ‘2026-09-21 Lobsters에서 ploum과 흥미로운 대화를 나눴다’, ‘2026-09-20 설거지를 했다’처럼요. 하지만 마이크로블로깅은 어떤 기술을 사용하든 악하고 피해야 한다는 생각을 계속 따라가면 될지도 모르겠습니다.

원문: brennan.day / 번역·요약: Trawling