네이버 클라우드의 용량이 꽉 찼습니다.
물론 결제를 한다면 용량을 늘릴 수 있겠습니다만 매월 나가는 돈이 아깝습니다.
그리하여 라즈베리파이에 Seafile을 설치하여 네이버 클라우드를 대신 해보려 합니다.
0. 플랜(Plan)
라즈베리파이에서 Docker Compose를 이용해 Seafile을 설치하고, 외부에서 접속할 수 있도록 포트포워딩을 설정합니다.
Docker 설치 → Seafile 실행을 위한 YML 파일 작성 → WebDAV 접속을 위한 포트 포워딩 설정
1. Docker 및 Docker Compose 설치
먼저, 라즈베리파이에 Docker와 Docker Compose를 설치합니다.
1.1 패키지 업데이트 및 Docker 설치
sudo apt update && sudo apt upgrade -y
sudo apt install docker.io -y
1.3 Docker 서비스 활성화 및 사용자 추가
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
로그아웃 후 다시 로그인하여 변경 사항을 적용합니다.
1.3 Docker Compose 설치
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 설치
sudo chmod +x /usr/local/bin/docker-compose # 권한 부여
2. Seafile Docker Compose 파일 작성
이제 `docker-compose.yml` 파일을 생성하고 Seafile 컨테이너를 설정합니다.
2.1 작업 디렉토리 생성
mkdir -p ~/seafile && cd ~/seafile
2.2 `docker-compose.yml` 파일 작성
nano docker-compose.yml
다음 내용을 `docker-compose.yml` 파일에 입력합니다.
services:
db:
image: mariadb:latest
container_name: seafile-mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_DATABASE=seafile
- MYSQL_USER=seafile
- MYSQL_PASSWORD=seafilepass
volumes:
- ./mysql:/var/lib/mysql
memcached:
image: memcached:latest
container_name: seafile-memcached
entrypoint: memcached -m 256
restart: unless-stopped
seafile:
image: seafileltd/seafile-mc:12.0-latest
container_name: seafile
restart: always
ports:
- "80:80"
- "443:443"
- "8080:8080"
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=rootpass
- TIME_ZONE=Asia/Seoul
- SEAFILE_ADMIN_EMAIL=admin@example.com
- SEAFILE_ADMIN_PASSWORD=adminpass
- SEAFILE_SERVER_LETSENCRYPT=false
- JWT_PRIVATE_KEY=<openssl rand -base64 32>
volumes:
- ./seafile-data:/shared
depends_on:
- db
environment, ports는 사용자에 맞게 수정 필요
JWT_PRIVATE_KEY는 openssl rand -base64 32을 실행한 결과를 붙여 넣기
SEAFILE_SERVER_LETSENCRYPT=false 를 true 수정하면 ssl 인증서를 SEAFILE_ADMIN_EMAIL=admin@example.com 에 설정된 도메인으로 발급받아 https를 사용할 수 있다.
ports는 ( 라즈베리파이 포트 ):( docker 포트 )으로 설정합니다.
2.3 컨테이너 실행
docker-compose up -d
3. 공유기 포트포워딩 설정
외부에서 Seafile에 접속할 수 있도록 공유기에서 포트포워딩을 설정해야 합니다.
3.1 공유기 관리자 페이지 접속
1. 웹 브라우저에서 공유기 주소 입력 (예: 192.168.0.1)
2. 로그인 후 **포트포워딩 설정** 메뉴로 이동
3.2 포트포워딩 규칙 추가
| 서비스 이름 | 내부 IP (라즈베리파이) | 내부 포트 | 외부 포트 | 프로토콜 |
| Seafile HTTP | `192.168.0.X` | `80` | `80` | TCP |
| Seafile HTTPS | `192.168.0.X` | `443` | `443` | TCP |
3.3 DDNS 설정
외부에서 접속은 공인IP:PORT를 입력하여 접속 할 수 있습니다만
보통 IP는 유동 IP입니다. 물론 IP가 변한걸 본적이 없지만
DDNS 설정을 통해 IP부분을 대신할 문자를 설정 할 수 있습니다.
마무리
이제 Seafile이 라즈베리파이에서 동작하며, 외부에서도 접근이 가능합니다. 보안을 위해 SSL 설정과 방화벽 설정을 추가하는 것을 권장합니다.