Synology NAS에서 BookStack 설치

Bookstack app

https://www.bookstackapp.com/

책장, 책, 장, 페이지로 구분되는 컨셉이 흥미로와서 설치를 해봤다. 설치해보고 나니 내 용도와는 잘 맞지는 않는다.

Docker를 사용하여 설치하기

Marius 블로그의 step by step을 따라가면 쉽게 설치할 수 있다.
https://mariushosting.com/how-to-install-bookstack-on-your-synology-nas/
참고로 DSM 6.x인 경우 Step 18의 Reverse Proxy 설정은 Control Panel / Application Portal 페이지의 Reverse Proxy 탭에 있다.

직접 설치하기

Marius Package Center에서 설치할 항목

  • MariaDB 10
    • /volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/mysql
    • bookstack에서 사용할 계정과 DB를 생성한다.
    • DB encoding은 utf8mb4_general_ci
  • PHP 7.4
  • Web Station
    • DSM 메뉴에서 Web Station을 실행하고 PHP Settings 탭에서 PHP 7.4 설정을 생성한다.
  • Git Server

Terminal을 통해 설치할 항목

sudo su -
cd /usr/local/bin
sudo curl -s http://getcomposer.org/installer | sudo php74
exit
cd /volume1/
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
cd BookStack
cp .env.example .env
php74 /usr/local/bin/composer.phar install --no-dev
php74 artisan key:generate

.env 파일을 열어서 APP_URLDB_ 로 시작하는 database 관련 설정을 기입한다. DB_PASSWORD는 특수 문자등이 사용되는 경우 따옴표로 묶어줘야한다.

APP_URL=https://my-nas.synology.me
DB_HOST=127.0.0.1
DB_DATABASE=데이터베이스
DB_USERNAME=계정
DB_PASSWORD="비밀번호"

Web Station 설정

웹서버가 PHP 7.4를 사용하도록 설정되었는지 확인 후 웹 서비스 루트를 /volume1/BookStack/public 으로 지정한다. 하위 패스에 설정하는 경우 ln -s /volume1/BookStack/public /volume1/web/bookstack 등과 같이 원하는 패스로 symbolic link를 생성하거나 Subdirectory Setup 문서를 참고하여 설정한다.

웹 브라우저에서 APP_URL에 기입한 주소를 입력하여 접속이 되는지 확인한다. 처음 설치 후 계정명 admin@admin.com과 비밀번호 password를 사용하여 로그인할 수 있다. 로그인 후 바로 Edit Profile 메뉴로 이동하여 로그인 이름과 비밀번호를 변경한다.

다른 설정과 관련된 정보는 BookStack Admin Documentation을 참고하여 설정하면 된다.

한글 폰트 설정하기

https://fonts.google.com/specimen/Nanum+Gothic에서 Regular 400과 Bold 700을 추가한 다음 스크립트를 복사하여 Bookstack의 Settings 화면의 Customization 그룹의 Custom HTML Head Content 상자에 입력한다.

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700&display=swap" rel="stylesheet"

설정을 저장후 새로 고침하면 웹페이지가 나눔고딕 폰트로 표시될 것이다. 임의 Page를 연 다음 Export PDF를 실행한다.

PDF 내보내기에서 한글 폰트를 적용하기 위한 작업

cd /volume1/BookStack/vendor/dompdf/dompdf
php74 /usr/local/bin/composer.phar install --no-dev
curl -o load_font.php https://raw.githubusercontent.com/dompdf/utils/master/load_font.php
curl -o nanum.zip https://fonts.google.com/download?family=Nanum%20Gothic
7z x nanum.zip
rm nanum.zip
php74 load_font.php 'nanum gothic' NanumGothic-Regular.ttf NanumGothic-Bold.ttf
rm NanumGothic-*.ttf OFL.txt

/volume1/BookStack/storage/fonts 경로에 dompdf_font_family_cache.php 파일을 생성한 다음 다음과 같이 입력한다.

<?php
$distFontDir = $rootDir . '/lib/fonts';
return [
    'nanum gothic' =>
        [
            'bold' => $distFontDir . '/NanumGothic-Bold',
            'bold_italic' => $distFontDir . '/NanumGothic-Bold',
            'italic' => $distFontDir . '/NanumGothic-Regular',
            'normal' => $distFontDir . '/NanumGothic-Regular'
        ],
];
?>

이제 한글로 작성된 Page를 PDF로 내보낼 수 있지만 이탤릭 속성은 적용되지 않는다. dompdf에서 Regular 또는 Bold로 부터 Italic style을 생성하는 방법을 모르겠다. dompdf에 포함된 영문 adobe font는 regular, italic, bold, 그리고 bold-italic 이 별도로 존재한다.

다음은 한글로 작성한 Page와 PDF로 출력된 화면이다. dompdf 설정에서 italic과 bold-italic 폰트를 regular와 bold로 지정했기 때문에 PDF로 출력되면서 Italic 속성이 적용되지 않는다.

웹 브라우저 화면
PDF 출력된 화면

BookStack app을 업데이트 할 때 git pull 후 composer 재설치시 dompdf 내부로 copy 해두었던 글꼴 설정이 모두 사라니 업데이트 후에는 다시 한 번 설정해줘야 한다.

Leave a Reply

Your email address will not be published. Required fields are marked *