Initial profile site commit
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
# 포트폴리오 사이트 - 설치 가이드
|
||||
|
||||
JSON + PHP 기반의 가벼운 포트폴리오 사이트입니다.
|
||||
Synology NAS Web Station에서 동작하도록 설계되었습니다.
|
||||
|
||||
## 📁 파일 구조
|
||||
|
||||
```
|
||||
portfolio/
|
||||
├── index.html # 메인 페이지 (프로젝트 목록)
|
||||
├── profile.html # 프로필 페이지
|
||||
├── generate_password.php # 비밀번호 해시 생성기 (사용 후 삭제!)
|
||||
├── api/
|
||||
│ ├── config.php # 설정 (비밀번호 해시 위치)
|
||||
│ ├── auth.php # 로그인/로그아웃 API
|
||||
│ ├── projects.php # 프로젝트 CRUD API
|
||||
│ ├── profile.php # 프로필 수정 API
|
||||
│ └── upload.php # 이미지 업로드 API
|
||||
├── data/
|
||||
│ ├── projects.json # 프로젝트 데이터
|
||||
│ ├── profile.json # 프로필 데이터
|
||||
│ └── .htaccess # 직접 접근 차단
|
||||
└── uploads/
|
||||
└── .htaccess # PHP 실행 차단
|
||||
```
|
||||
|
||||
## 🚀 설치 (Synology NAS 기준)
|
||||
|
||||
### 1. Web Station 설치 및 PHP 활성화
|
||||
- Package Center에서 **Web Station** 설치
|
||||
- **Web Station → Web Service Portal**에서 PHP 8.x 활성화
|
||||
- **Web Service**에서 사이트의 PHP 버전을 8.x로 지정
|
||||
|
||||
### 2. 파일 업로드
|
||||
- File Station에서 `/web/portfolio/` 폴더 생성
|
||||
- 위 모든 파일을 해당 폴더에 업로드
|
||||
|
||||
### 3. 권한 설정
|
||||
다음 폴더는 PHP가 쓸 수 있어야 합니다:
|
||||
- `data/` (JSON 쓰기)
|
||||
- `uploads/` (이미지 업로드)
|
||||
|
||||
File Station에서 두 폴더의 권한을 `http` 그룹에 쓰기 가능하게 설정하세요.
|
||||
|
||||
### 4. 비밀번호 설정 (⚠️ 매우 중요)
|
||||
|
||||
**(A) 해시 생성**
|
||||
브라우저에서 접속:
|
||||
```
|
||||
http://your-nas/portfolio/generate_password.php
|
||||
```
|
||||
원하는 비밀번호를 입력하면 해시가 출력됩니다.
|
||||
|
||||
**(B) config.php 수정**
|
||||
`api/config.php` 파일을 열어 아래 줄을 찾고:
|
||||
```php
|
||||
define('ADMIN_PASSWORD_HASH', '$2y$10$YourHashWillGoHere...');
|
||||
```
|
||||
방금 생성된 해시로 교체합니다.
|
||||
|
||||
**(C) generate_password.php 삭제**
|
||||
보안을 위해 반드시 삭제하세요!
|
||||
|
||||
### 5. 접속
|
||||
- 메인: `http://your-nas/portfolio/`
|
||||
- 관리자 로그인: 페이지 하단 우측 방패 아이콘(🛡️) 클릭
|
||||
|
||||
## 🎯 기능
|
||||
|
||||
### 일반 방문자
|
||||
- 프로젝트 목록 보기
|
||||
- 프로필 페이지에서 자기소개/스킬/타임라인/연락처 확인
|
||||
|
||||
### 관리자 (로그인 후)
|
||||
- ✅ 새 프로젝트 등록
|
||||
- ✅ 기존 프로젝트 수정/삭제
|
||||
- ✅ 프로필 정보 편집 (이름, 사진, 자기소개)
|
||||
- ✅ 기술 스택 추가/수정/삭제 (스킬 바)
|
||||
- ✅ 타임라인 추가/수정/삭제
|
||||
- ✅ SNS 링크 관리
|
||||
|
||||
## 🔒 보안 체크리스트
|
||||
|
||||
- [ ] `generate_password.php` 삭제했는가?
|
||||
- [ ] `config.php`의 ADMIN_PASSWORD_HASH를 실제 해시로 교체했는가?
|
||||
- [ ] HTTPS 설정 (NAS의 Reverse Proxy 또는 Let's Encrypt)
|
||||
- [ ] 비밀번호는 8자 이상, 영문/숫자/기호 조합
|
||||
- [ ] `data/`, `uploads/` 폴더의 .htaccess 파일이 동작하는지 확인
|
||||
|
||||
## 💾 백업
|
||||
|
||||
데이터는 모두 텍스트 파일이므로 Git으로 관리할 수 있습니다:
|
||||
```bash
|
||||
cd /web/portfolio
|
||||
git init
|
||||
git remote add origin http://your-nas:3000/your-name/portfolio.git
|
||||
git add .
|
||||
git commit -m "initial"
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
`data/*.json` 파일이 변경 이력으로 남아 언제든 복구 가능합니다.
|
||||
|
||||
## 🐛 문제 해결
|
||||
|
||||
**"데이터를 읽을 수 없습니다" 오류**
|
||||
→ `data/` 폴더의 쓰기 권한을 확인하세요.
|
||||
|
||||
**로그인이 안 됨**
|
||||
→ `config.php`의 ADMIN_PASSWORD_HASH가 올바르게 교체되었는지 확인하세요.
|
||||
|
||||
**.htaccess가 동작하지 않음**
|
||||
→ Web Station에서 Apache 사용 + `mod_rewrite`, `AllowOverride All` 설정 필요.
|
||||
nginx를 쓴다면 nginx 설정으로 동일한 차단 규칙을 추가해야 합니다.
|
||||
|
||||
## 🔄 향후 확장 아이디어
|
||||
|
||||
- 프로젝트별 상세 페이지 (markdown 지원)
|
||||
- 태그/카테고리 필터링
|
||||
- 방문자 통계
|
||||
- 다국어 지원 (i18n)
|
||||
- Gitea API 연동으로 저장소 정보 자동 가져오기
|
||||
Reference in New Issue
Block a user