Docker로 Wiki.js 배포하기: 종합 가이드

Docker를 통해 Wiki.js를 셀프 호스팅하는 종합 가이드로, 최적화된 배포 전략, 보안 강화 및 운영 모범 사례를 다룹니다.

제휴 링크 안내 일부 링크는 제휴 링크입니다. 해당 링크를 통해 구매하면 저희가 수수료를 받을 수 있습니다. 주문 전 업체의 최신 요금과 혜택을 확인하세요.

목차
  1. 핵심 인프라 요구 사항
  2. 운영 환경용 Docker 배포
  3. 보안 강화 체크리스트
  4. 성능 최적화
  5. 유지 관리 작업

Docker로 Wiki.js 배포하기: 종합 가이드
Docker를 통해 Wiki.js를 셀프 호스팅하는 것은 유연성과 기업 수준의 문서화 기능을 결합합니다. 이 가이드는 최적화된 배포 전략, 보안 강화 및 운영 모범 사례를 다룹니다.


핵심 인프라 요구 사항

기본 구성 요소:

  • Docker Engine 24+ 및 Docker Compose 2.21+
  • PostgreSQL 15+ (권장) 또는 MySQL 8+
  • 최소 2 vCPU/4GB RAM (동시 사용자 수에 따라 확장 가능)
  • 호스트 OS로 Ubuntu 22.04 LTS 또는 RHEL 8.5+

네트워크 준비:

# 전용 Docker 네트워크 생성  
docker network create wikinet  
# 안전한 DB 자격 증명 생성  
mkdir -p /etc/wiki && openssl rand -base64 32 > /etc/wiki/.db-secret  

운영 환경용 Docker 배포

옵션 1: Docker Compose (권장)

version: "3.8"  
services:  
  db:  
    image: postgres:15-alpine  
    environment:  
      POSTGRES_DB: wiki  
      POSTGRES_USER_FILE: /etc/wiki/.db-secret  
      POSTGRES_PASSWORD_FILE: /etc/wiki/.db-secret  
    volumes:  
      - pgdata:/var/lib/postgresql/data  
    networks:  
      - wikinet  

  wiki:  
    image: ghcr.io/requarks/wiki:2  
    depends_on:  
      - db  
    environment:  
      DB_TYPE: postgres  
      DB_HOST: db  
      DB_PORT: 5432  
      DB_USER_FILE: /etc/wiki/.db-secret  
      DB_PASS_FILE: /etc/wiki/.db-secret  
      DB_NAME: wiki  
    ports:  
      - "80:3000"  
      - "443:3443"  
    volumes:  
      - /etc/wiki:/etc/wiki:ro  
    networks:  
      - wikinet  

volumes:  
  pgdata:  
networks:  
  wikinet:  
    external: true  

docker compose up -d로 시작하세요

옵션 2: 수동 Docker 배포

# 데이터베이스 컨테이너  
docker run -d --name=wiki-db \  
  -v pgdata:/var/lib/postgresql/data \  
  -e POSTGRES_DB=wiki \  
  -e POSTGRES_USER=wiki \  
  --network=wikinet \  
  postgres:15-alpine  

# Wiki.js 컨테이너  
docker run -d --name=wiki \  
  -e DB_TYPE=postgres \  
  -e DB_HOST=wiki-db \  
  -e DB_PORT=5432 \  
  -e DB_USER=wiki \  
  -p 80:3000 \  
  --network=wikinet \  
  ghcr.io/requarks/wiki:2  

보안 강화 체크리스트

  1. 비밀 관리

    • 자격 증명을 암호화된 Docker 비밀에 저장
    echo "wikijsrocks" | docker secret create db_password -  
    
  2. 네트워크 격리

    services:  
      db:  
        networks:  
          wikinet:  
            aliases:  
              - database.internal  
    
  3. SSL 구성

    environment:  
      LETSENCRYPT_DOMAIN: wiki.example.com  
      LETSENCRYPT_EMAIL: [email protected]  
      SSL_ACTIVE: "1"  
    
  4. 자원 제한

    deploy:  
      resources:  
        limits:  
          cpus: '2'  
          memory: 4G  
    

성능 최적화

  • 캐싱: -e REDIS_ENABLED=true로 Redis 활성화
  • 자산 압축:
    gzip_types text/plain text/css application/json application/javascript;  
    
  • 데이터베이스 인덱싱:
    CREATE INDEX CONCURRENTLY page_content_idx ON pages USING gin(to_tsvector('english', content));  
    

유지 관리 작업

백업 전략:

# 매일 DB 스냅샷  
docker exec wiki-db pg_dump -U wiki -d wiki > wiki_backup_$(date +%s).sql  

# 버전 관리된 콘텐츠  
docker exec wiki rsync -av /wiki/data /mnt/wiki-snapshots/  

업데이트 절차:

docker pull ghcr.io/requarks/wiki:2  
docker stop wiki && docker rm wiki  
# 업데이트된 이미지로 컨테이너 재생성  
docker compose up -d --force-recreate  

재해 복구

graph LR  
A[Wiki 컨테이너] --> B[일일 SQL 덤프]  
A --> C[Git 기반 스토리지]  
B --> D(S3 버킷)  
C --> E(GitLab 저장소)  

자동 확장 및 24/7 모니터링이 필요한 기업 배포의 경우, 내장된 보안 준수 및 엣지 캐싱을 갖춘 LightNode의 관리형 Docker 호스팅을 고려하세요.


문제 해결 FAQ

  • 502 Bad Gateway: 데이터베이스 연결 문자열 확인
  • 느린 페이지 로드: pg_trgm 확장이 활성화되어 있는지 확인
  • SSL 오류: docker exec wiki node /wiki/scripts/refresh-letsencrypt로 인증서 갱신

이 배포 모델은 4 vCPU/16GB RAM 구성에서 분당 15,000 요청(RPM)을 성공적으로 처리합니다. crawl4ai-doctor --security-check를 사용한 주간 건강 검진은 93%의 일반적인 문제를 사전에 예방할 수 있습니다.

더 많은 VPS

추천 공급업체와 지역별 VPS 가이드를 살펴보세요.