docker compose 파일 하나로 cloud.foliowriter.app을 구동하는 것과 같은 서버를 내 컴퓨터에서 실행할 수 있습니다. 실시간 공동 편집, 종단간 암호화 프로젝트, 조판 미리보기, PDF / Word / LaTeX 내보내기까지 — Pandoc과 Typst가 이미지 안에 함께 들어 있습니다. 개인 용도는 무료입니다.
mkdir folio && cd folio
curl -fsSLO https://foliowriter.app/selfhost/docker-compose.yml
FOLIO_DOMAIN=folio.example.com docker compose up -d
함께 들어 있는 Caddy가 도메인의 Let’s Encrypt 인증서를 발급·갱신하고, HTTPS와 협업용 웹소켓을 프록시합니다. 그런 다음 https://folio.example.com을 여세요. 아직 도메인이 없나요? docker compose up folio-web을 실행하고 http://localhost:8787을 여세요.
foliowriter/folio-web 이미지는 amd64와 arm64용으로 배포됩니다.FOLIO_ADMIN_EMAILS에 내 이메일 주소를 넣고 서버를 시작하세요.
FOLIO_DOMAIN=folio.example.com [email protected] \
docker compose up -d
여기에 나열된 주소는 항상 관리자입니다. 할당량 제한이 없고, /admin 대시보드(계정, 프로젝트, 저장 공간, 트래픽)도 쓸 수 있습니다. 그 이메일로 로그인하세요. SMTP가 설정되어 있지 않으면 매직 로그인 링크가 이메일로 발송되지 않고 서버 로그에 출력됩니다.
docker compose logs folio-web | grep -i http
출력된 링크를 열면 바로 로그인됩니다. 실제로 이메일을 보내려면 SMTP_* 변수를 설정하고(어떤 릴레이든 됩니다), 이메일 속 링크가 내 도메인을 쓰도록 PUBLIC_BASE_URL도 설정하세요.
모든 설정은 환경 변수로 합니다. docker-compose.yml 옆의 .env 파일에 넣으세요(Compose가 자동으로 읽습니다).
FOLIO_DOMAIN=folio.example.com
PUBLIC_BASE_URL=https://folio.example.com
[email protected]
FOLIO_LIMIT_PROJECTS=0 # 0 = unlimited
FOLIO_LIMIT_STORAGE_MB=0 # 0 = unlimited
FOLIO_ENC_KEY=… # openssl rand -hex 32
| 변수 | 역할 |
|---|---|
FOLIO_DOMAIN | Caddy가 서비스하고 인증서를 받을 도메인(기본값 localhost). |
PUBLIC_BASE_URL | 로그인 이메일과 공유 링크에 쓰이는 절대 오리진. |
FOLIO_ADMIN_EMAILS | 항상 관리자인 이메일 목록(쉼표로 구분) — 할당량이 면제되며 /admin을 쓸 수 있습니다. |
SMTP_HOST / PORT / USER / PASS / SECURE / FROM | 매직 링크 로그인용 발신 메일. 설정하지 않으면 → 링크가 컨테이너 로그에 출력됩니다. |
FOLIO_LIMIT_PROJECTS | 계정당 프로젝트 수(기본값 2). 0 = 무제한 — 자체 호스팅하는 사람은 대부분 이렇게 설정합니다. |
FOLIO_LIMIT_STORAGE_MB | 계정당 저장 공간(MB, 기본값 50). 0 = 무제한. |
FOLIO_DEMOS | 자동으로 초기화되는 데모 샌드박스로 제공할 프로젝트 ID 목록(쉼표로 구분). |
FOLIO_ALLOW_GUEST_PROJECTS | 1로 설정하면 방문자가 로그인하지 않고도 프로젝트를 만들 수 있습니다(기본적으로 프로젝트를 만들려면 계정이 필요하며, 데모는 항상 열려 있습니다). |
FOLIO_ENC_KEY | 저장된 인증기 비밀 값을 저장 상태에서 암호화하는 64자리 16진수 키. |
업데이트: docker compose pull && docker compose up -d. latest를 따라가는 대신 버전을 고정하고 싶다면 태그가 붙은 버전(foliowriter/folio-web:0.2.0)도 있습니다.
프로젝트, 계정, 세션 등 모든 것이 compose 파일 옆의 ./data에 들어 있습니다. 백업은 그 폴더 하나면 됩니다.
docker compose stop folio-web
tar czf folio-backup-$(date +%F).tgz data
docker compose start folio-web
data/를 다시 넣고 docker compose up -d를 실행하면 복원(또는 서버 이전)이 끝납니다.
개인 용도는 무료입니다. 이미지는 독점 소프트웨어이지만, 나 자신과 가족, 개인적인 공동 작업자를 위해 자체 호스팅하는 데는 비용이 들지 않습니다.
팀과 조직에는 상용 라이선스가 필요합니다. 회사, 학교 또는 기타 조직을 위해, 혹은 조직 안에서 운영하거나 상업적으로 운영하려면 라이선스가 있어야 합니다. 무료 등급은 이렇게 해서 운영 자금을 마련합니다. 연락 주시면 빠르게 처리해 드리겠습니다.
재배포, 리브랜딩, 2차 저작물은 허용되지 않으며, 전체 약관은 이미지 문서와 함께 제공됩니다. 서버를 아예 운영하고 싶지 않으신가요? cloud.foliowriter.app이 호스팅 버전이며, 무료로 시작할 수 있습니다.