Synology Web Station 에서 Laravel 프로젝트가 실행 가능한가 ?
결론부터 말씀드리면, Synology Web Station에서도 Laravel 운영은 "가능"합니다. 하지만 Docker 방식에 비해 설정이 매우 까다롭고 제약이 많기 때문에 "불가능하다"고 느껴지거나, 실제로 제대로 작동하지 않는 경우가 많습니다.
Laravel 프로젝트를 Synology Server 에서 운영하는 방법은 -> Web Station + Docker + bitnami/laravel 를 사용하는게 가장 편리하다. 하지만 ?
Web Station -> Docker -> bitnami/laravel
시놀로지 도커 Docker 컨테이너를 이용한 최신 Laravel 웹서버 구축하기
-> 단순 개발용이나 개인 사이트의 경우 문제가 없으나, web Station 에 종속된 상태이고
-> /opt/bitnami/scripts/laravel/run.sh → php artisan serve 형태로 웹을 띄우는 구조임.
이는 Dockerfile에서도 CMD [ "/opt/bitnami/scripts/laravel/run.sh" ]로 고정되어 있어, “웹 서버 역할”이 기본적으로는 내장 서버(artisan serve)에 맞춰져 있음.
Web Station 를 사용하지 않고, 리버스 프록시를 이용해서 직접 Docker 로 보내는게 가능 유리하다.
Synology 리버스 프록시 + Docker 이용하기
폴더 구조
/volume1/docker/admin-ppn/ (Laravel 프로젝트 루트: artisan, public, composer.json 등)
docker-compose.yml
nginx/
conf.d/
default.conf
docker/
php-fpm/
Dockerfile
1. docker-compose.yml 파일 작성 (프로젝트 루트에 작성)
2. Dockerfile 파일 작성
3. nginx/conf.d/default.conf 파일 작성
docker-compose.yml
services:
nginx:
image: nginx:1.27
container_name: admin-ppn-nginx
depends_on:
- app
ports:
# 외부 포트는 환경에 맞게 변경
- "32778:80"
volumes:
# Synology: Laravel 루트 절대경로 기준
- ./:/app:ro
- ./nginx/conf.d:/etc/nginx/conf.d:ro
# 업로드/캐시 파일 nginx에서 접근 가능
- ./storage:/app/storage:ro
- ./bootstrap/cache:/app/bootstrap/cache:ro
restart: unless-stopped
app:
build:
context: .
dockerfile: docker/php-fpm/Dockerfile
image: admin-ppn-php-fpm:8.2
container_name: admin-ppn-app
working_dir: /app
volumes:
- ./:/app
- ./storage:/app/storage
- ./bootstrap/cache:/app/bootstrap/cache
restart: unless-stopped
queue-worker:
build:
context: .
dockerfile: docker/php-fpm/Dockerfile
image: admin-ppn-php-fpm:8.2
container_name: admin-ppn-queue-worker
working_dir: /app
command: php artisan queue:work --sleep=1 --tries=3 --timeout=120 --max-time=3600 --no-interaction
volumes:
- ./:/app
- ./storage:/app/storage
- ./bootstrap/cache:/app/bootstrap/cache
restart: unless-stopped
리버스 프록시에서 연결하는 포트는 "32778" 임
queue-worker 가 필요없다면 삭제해도 됨.
docker/php-fpm/Dockerfile
FROM php:8.2-fpm
# OS 패키지 설치 + PHP 확장 빌드 의존성
RUN apt-get update && apt-get install -y --no-install-recommends \
$PHPIZE_DEPS \
ca-certificates \
git \
unzip \
libzip-dev \
libicu-dev \
libonig-dev \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
&& rm -rf /var/lib/apt/lists/*
# PHP 확장 설치
# - pdo_mysql: MySQL/MariaDB
# - bcmath: 계산/정산
# - zip: 압축/엑셀/백업
# - intl: 로케일/정렬/다국어
# - gd: 이미지 처리
# - exif: 이미지 메타데이터
# - opcache: 운영 성능/안정성
# - mbstring: Laravel 필수
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) \
pdo_mysql \
bcmath \
zip \
intl \
gd \
exif \
opcache \
pcntl \
mbstring \
&& apt-get purge -y --auto-remove $PHPIZE_DEPS \
&& rm -rf /var/lib/apt/lists/*
# OPcache 권장 기본값(볼륨 마운트 운영에 무리 없는 설정)
RUN { \
echo "opcache.enable=1"; \
echo "opcache.enable_cli=0"; \
echo "opcache.memory_consumption=128"; \
echo "opcache.interned_strings_buffer=16"; \
echo "opcache.max_accelerated_files=20000"; \
echo "opcache.validate_timestamps=1"; \
echo "opcache.revalidate_freq=2"; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini
# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
nginx/conf.d/default.conf
server {
listen 80;
server_name _;
root /app/public;
index index.php index.html;
client_max_body_size 50m;
location ~ /\.(?!well-known).* {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Livewire의 JS/CSS 엔드포인트는 실제 파일이 아니라 Laravel 라우트로 제공됩니다.
# 아래 정적 확장자 캐시 location(정규식)이 /livewire/livewire.js 요청을 가로채 404를 만들 수 있어
# 먼저 라우팅을 보장합니다.
location ^~ /livewire/ {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_X_FORWARDED_PROTO $http_x_forwarded_proto;
fastcgi_pass app:9000;
fastcgi_read_timeout 60;
}
location ~* \.(?:css|js|jpg|jpeg|gif|png|svg|ico|webp|ttf|otf|woff|woff2)$ {
expires 7d;
add_header Cache-Control "public, max-age=604800";
access_log off;
}
}
Synology > Container Manager > 프로젝트

Web Station 연결 설정에 체크하지 않는다.
완성된 모습

역방향 프록시 설정하기
로그인 포털 > 고급 > 역방햘 프록시

포트 32778 설정해야 한다.
사용자 지정 머리글

X-Forwarded-Proto https
X-Forwarded-For $remote_addr
X-Forwarded-Host $host
X-Forwarded-Port 443
관련글
Cloudflare 환경에서 Laravel 세션 및 인증 설정 가이드
Cloudflare 환경에서 Laravel 세션 및 인증 설정 가이드
Cloudflare를 통해 웹사이트를 운영할 때 Laravel의 세션, 쿠키, 인증 구조는 기본 상태만으로는 예기치 않은 문제가 발생하기 쉽다. 특히 프록시 환경의 특성 때문에 HTTPS 인식 오류, 세션 유지 실패,
digitalogia.tistory.com
시놀로지 도커 Docker 컨테이너를 이용한 최신 Laravel 웹서버 구축하기
시놀로지 도커 Docker 컨테이너를 이용한 최신 Laravel 웹서버 구축하기
시놀로지 서버에서 웹서버 (WebStation) 를 운영하면서 최신 PHP 버전과 Laravel 버전을 설치하기 위해서는 시놀로지 서버의 도커 컨테이너를 이용하면 가능하다. 도커 bitnami/laravel 이미지를 다운받아
digitalogia.tistory.com