> For the complete documentation index, see [llms.txt](https://hotopaydocs.potatosoft.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hotopaydocs.potatosoft.kr/cron-synology-nas.md).

# Cron 설정하기 - Synology NAS

> **시놀로지 NAS는 Hotopay를 실행하기에 적합한 환경이 아닙니다.**

> Synology 환경에서 발생하는 모든 버그는 Hotopay의 지원 대상이 아니며, 버그들을 직접 찾고 수정하실 수 있을 경우에만 사용하는 것을 권장드립니다.

## 사전 준비 <a href="#preparations" id="preparations"></a>

1. Synology File Station 에서 Rhymix 설치 위치를 확인합니다.
   1. Rhymix가 설치된 위치로 이동 후 \[마우스 우클릭 > 속성]에 들어가면 \[위치] 속성에 `/volume` 으로 시작하는 절대 디렉토리가 나옵니다.
   2. ex) `/volume2/Data/rhymix/modules/hotopay`
2. 로그를 저장할 위치를 동일한 방법으로 확인합니다.
   1. ex) `/volume2/Data/hotopay_logs`&#x20;
3. Synology Web Station에서 \[스크립트 언어 설정 > 사용자 지정된 프로파일] 항목을 참고하여 라이믹스를 돌리고 있는 PHP 프로파일 이름을 확인합니다.
4. SSH에 접속하여 `/usr/syno/etc/packages/WebStation/php_profile` 디렉토리 하단의 올바른 라이믹스 PHP 프로파일을 찾아줍니다.
   1. `/usr/syno/etc/packages/WebStation/PHPSettings.json`  파일을 참고하면 PHP 프로파일을 쉽게 찾을 수 있습니다.
   2. 만약 프로파일이 `00000000-0000-0000-0000000000000000` 이라면, `/usr/syno/etc/packages/WebStation/php_profile/00000000-0000-0000-0000000000000000/conf.d/user_settings.ini` 파일이 존재해야합니다.
5. **아래 스크립트를 참고하여 명기된 변수를 알맞은 값으로 변경해주세요.**

### Synology NAS의 Cron 실행 스크립트 <a href="#synology-cron-script" id="synology-cron-script"></a>

* `HOTOPAY_DIR` : Hotopay가 설치된 디렉토리 (hotopay.cron.php 파일이 존재하는 절대 위치)
* `HOTOPAY_LOG_DIR` : Hotopay cron 실행 결과가 저장될 위치
* `SYNOLOGY_PHP_INI_DIR` :  시놀로지 웹스테이션의 PHP 스크립트 (`user_settings.ini`)가 저장된 위치

<pre class="language-sh"><code class="lang-sh">#!/bin/bash
# *** Hotopay Cron for Synology NAS ***

HOTOPAY_DIR="/volume1/<a data-footnote-ref href="#user-content-fn-1">path/to</a>/modules/hotopay"
HOTOPAY_LOG_DIR="/volume1/<a data-footnote-ref href="#user-content-fn-2">path/to</a>/hotopay_logs"
SYNOLOGY_PHP_INI_DIR="/usr/syno/etc/packages/WebStation/php_profile/<a data-footnote-ref href="#user-content-fn-3">00000000-0000-0000-0000000000000000</a>/conf.d"
LOG_DURATIONS=14 # days

HOTOPAY_LOG_FILE_NAME="hotopay_cron_$(date +\%Y\%m\%d_\%H\%M\%S).log"

# Check if the log directory exists, if not create it
if [ ! -d "$HOTOPAY_LOG_DIR" ]; then
    mkdir -p "$HOTOPAY_LOG_DIR"
fi

# Check if the hotopay.cron.php file exists
if [ ! -f "$HOTOPAY_DIR/hotopay.cron.php" ]; then
    echo "Error: hotopay.cron.php not found in $HOTOPAY_DIR"
    exit 1
fi

# Logrotate
find "$HOTOPAY_LOG_DIR" -type f -name "*.log" -mtime +"$LOG_DURATIONS" -exec rm {} \;

cd "$HOTOPAY_DIR"
sudo -u http php80 -c "$SYNOLOGY_PHP_INI_DIR" hotopay.cron.php > "$HOTOPAY_LOG_DIR/$HOTOPAY_LOG_FILE_NAME" 2>&#x26;1
if [ $? -ne 0 ]; then
    echo "Error: hotopay.cron.php execution failed"
    exit 1
fi
</code></pre>

## 스크립트 Cron 적용 <a href="#apply-job-scheduler" id="apply-job-scheduler"></a>

1. 작성한 스크립트를 \[제어판 > 작업 스케쥴러]에 등록해주세요.
   1. **사용자: root** (필수)
      1. 관리자로 실행해야 스크립트에서 http 권한으로 PHP를 실행할 수 있습니다.
   2. 날짜 : 매일
   3. 시간
      1. 시작시간 : 00:00 (혹은 원하는 시간)
      2. 같은 날에 계속 실행 체크 (하루에 한번만 실행하고 싶다면 패스)
      3. 반복 : 원하는 반복 주기 설정
   4. 작업설정 > 실행명령 : 아래 스크립트 복사 & 붙여넣기
2. 저장 후 실행해보고 log 파일이 정상 생성되는지 확인해주세요.

내용이 복잡하기에 차근차근 진행해보시는 것을 권장드립니다.

[^1]: Rhymix가 설치된 절대 위치

[^2]: Rhymix가 설치된 절대 위치 혹은 로그를 저장할 위치

[^3]: Synology PHP profile명
