집에 있는 PC들에 있는 중요 데이터들을 모두 홈서버에 올려놓고 사용할때 얻을 수 있는 잇점은
'자료공유'에만 있는 것이 아니라, 관리편의성도 있다. 기왕 파일서버를 운영할 거 백업을 하는 것이 좋다.

사실 백업의 중요성은 데이터를 날려먹어 본 사람만이 안다.
문서는 또 만들면 된다지만, 가족들의 추억이 담긴 사진과 캠동영상 등의 파일 등은 날려먹으면 정말 눈물난다.
그러한 데이터의 백업에 DVD 등의 매체를 사용하는 것도 방법이지만,
여러가지 면에서 하드드라이브에 백업하는 걸 추천한다.
용량대비가격도 공DVD와 큰 차이 없으며, 속도도 더 빠르고, 결정적으로 자동화가 가능하다.

홈네트웍 환경에서의 백업은 데이터 사본을 만들어 놓는 정도면 된다.
Leopard의 TimeMachine과 같이 특정 시점의 데이터를 복원할 수 있으면 좋기는 하겠지만,
파일시스템이 깨지는 상황을 대비한 데이터사본만 있어도 충분하다.

backup utility의 선택의 폭은 넓으편이니 마음에 드는 걸로 골라 잡아도 된다.
단순한 데이터사본을 만드는 거라면 rsync를 추천한다.
rsync는 파일들을 동기화해주는 툴이다. 다른 서버의 파일들과 동기화하는 것도 가능하다.
rsync를 이용한 백업은 아래 링크들을 참고하기 바란다.
Ubuntu 서버에 Desktop환경을 설치했다면, simple backup을 사용하는 것도 좋다.
이름처럼 심플하긴 하지만, 백업유틸리티답게 증분백업과 복구기능을 제공한다.
아래 링크에서 스크린샷과 설명을 볼 수 있다.
이 외에도 다양한 백업유틸리티들이 있으니, 참고하라.

2008/02/03 02:45 2008/02/03 02:45
samba를 이용하면 로컬네트웍 내에서 손쉽게 파일 및 프린터를 공유할 수 있다.
하지만 로컬네트웍 밖에서 공유파일들에 접근하려면 ftp를 사용해야한다.
프린터 역시 공유프린터로 출력을 제한하는 일부 프로그램이 있는데, 이런 경우는 cups같은 프린터 서버를 사용해야 한다.
이 글에서는 samba의 공유디렉토리를 ftp로 서비스하는 방법 및 프린터 서버 설정을 간략히 다룬다.

ftp 설정

보안 상의 이유도 있고 포트를 추가적으로 오픈하지 않아도 되므로,
ftp도 ssh를 이용한 sftp를 사용하는 것이 바람직하다.
그런데 와이프한테 외부에서 PC쓸때 filezilla 같은 거 설치해서 sftp를 쓰라고 하면,
1초도 고민하지 않고 '싫어!'라고 대답한다. 전기세, 소음 문제로 까칠하게 굴지 않게 이럴때 잘해줘야 된다.
모든 PC에 기본설치된 웹브라우저를 사용할 수 있도록 일반 ftp로 설정하는 것이 가정불화를 막는 길이다.
사실 ftp 설치나 설정은 별게 아닌데, 문제는 IE로 ftp를 사용하면 한글파일 이름이 죄다 깨져보인다는 거다.
ubuntu의 파일시스템이 utf8 인코딩을 사용하는데 반해, IE6에서는 euc-kr을 사용하는 것 때문이다.
filezilla 같은 ftp 전용프로그램을 쓰면 서버의 문자인코딩을 인식해서 처리해주므로 별 문제가 없는데, IE를 사용할 때는 한글을 euc-kr로 처리하므로 깨져보이는 것이다.
따라서 앞서 samba 설정에서 처럼 charset 설정이 가능한 ftpd를 설치해야 한다.

서버에서 문자셋을 맞춰주는 기능(RFC2640)이 있는 pure-ftpd를 추천한다. (proftpd는 다음버전에 패치된다함.)
pure-ftpd 설치 및 설정 관련 내용은 http://b.gaedol.org/entry/pure-ftpd-cha ··· ni-howto를 참고하라.

'이제 집밖에서도 웹브라우저로 니 개인 폴더에 접근할 수 있어!!!'
큰소리도 좀 치고, 이제 구박도 좀 덜 받을 수 있다.

프린터 서버 설정

그동안 samba로 프린터를 공유해서 쓰고 있었는데, 연초에 연말정산 자료를 출력할 때 공유프린터로는 출력을 할 수 없어서 난감했던 적이 있었다. samba로 공유하는 것보다는 조금 불편하긴해도 이런 상황을 대비해서 프린터서버를 설정해놓는 것이 좋겠다.
ubuntu 설치때 PrinterServer를 설치하도록 했다면 cups가 설치되어 있을것이다.
/etc/cups/cupsd.conf를 아래처럼 수정하자.
LogLevel warning
SystemGroup lpadmin
# Allow remote access
Port 631
Listen /var/run/cups/cups.sock
# Share local printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAddress @LOCAL
DefaultAuthType Basic
<Location />
  # Allow shared printing...
  Order allow,deny
  Allow @LOCAL
</Location>
...(후략)...
위에서 @LOCAL 부분이 로컬네트웍 내에서 접근이 가능하도록 하는 설정이다.
(초기값은 'localhost'로 되어 있다. )
이렇게 수정했으면 '/etc/init.d/cupsys restart' 명령으로 cupsd를 재시작한다.
그리고 홈네트웍 내에서 웹브라우저로 http://homeserver:631/printers 에 접속하면 홈서버에 연결된 프린터들을 볼 수 있고, 해당 프린터를 클릭해보면 그 프린터에 대한 URL을 알 수 있다.

이제 서버에서 할일은 끝났고, 윈도우PC에서 프린터 설정을 설명한다.
  1. 윈도우의 [시작]-[프린터 및 팩스] 클릭
  2. [프린터 추가] 클릭
  3. [다음] 클릭후
  4. "네트워크 프린터 또는 다른 컴퓨터에 연결되어 있는 프린터" 선택 후 [다음] 클릭
  5. 인터넷이나 홈 또는 회사 네트워크에 있는 프린터에 연결을 선택후 위에서 확인한 프린터 URL을 입력하고 [다음]을 클릭
  6. 프린터 드라이버를 잘 선택해서 완료한다.
이 정도 설정이 완료되면 와이프가 '컴쟁이 남편'이라는 구박을 좀 덜할 것이다.
와이프 PC의 경우, '내 문서' 경로자체를 홈서버의 공유디렉토리로 바꿔 설정해주고, 그 디렉토리를 ftp로 접근할 수 있게 해줬더니 usb메모리 안들고 다녀도 된다며 좋아했다. 게임하는 것에 대한 잔소리도 줄었고...

다음글에서 Backup에 대한 설정을 설명하면서 연재를 마치겠다.
2008/02/02 23:37 2008/02/02 23:37
홈서버의 가장 주요한 용도는 파일서버와 프린터서버의 역할일 것이다.
파일서버/프린터서버 설정은 모두 Samba를 통해서 할 수 있다. Samba는 윈도우즈 계열에서 파일이나 주변장치를 공유하는데 사용하는 SMB 프로토콜을 지원하는 유닉스 툴이다.
Samba 설정에 대한 자세한 내용은 구글링하는 편이 나을 테고, 홈서버에서 사용자별로 공유파일에 대한 접근권한 설정을 어떻게 하는지만, 간단한 예로 설명하겠다.

1. Workgroup

집에서 쓰는 PC들의 Workgroup명을 통일한다.
예에서는 SWEETHOME이라는 이름의 Workgroup을 쓰겠다.

2. 계정생성

PC에서 사용하는 계정이름과 같은 이름으로 리눅스에 사용자 계정을 만든다.
예에서는 catsby, persu라는 이름을 사용하겠다.
개인용 파일과 공유파일에 대한 접근 권한을 설정하기 위해서 그룹이 필요할 것이다.
smbuser라는 리눅스 group도 만들고, 위에서 생성한 사용자 계정들을 smbuser 그룹에 포함시킨다.
아래와 같은 command로 계정 생성 및 그룹생성을 한다.
catsby@homeserver:~/$ sudo adduser persu -q
Enter new UNIX password:
Retype new UNIX password:
catsby@homeserver:~/$ sudo addgroup smbuser
catsby@homeserver:~/$ sudo adduser persu smbuser

3. 공유디렉토리 / 프린터 설정

samba로 접근하게 할 공유디렉토리들을 한군데로 모아놓으면 백업이나 관리에 편하다.
가족들이 linux 계정으로 직접 로그인할 일도 없을테니, 계정 home direcotry보다는 samba로 접근할 디렉토리들을 한데 모아놓는 것이 좋다. 이 글의 예에서는 /data/samba 밑에 공유디렉토리들을 설정했다.
프린터 설정은 웬만하면 꽂으면 바로 인식하니 자세한 설명은 스킵한다.

4. smb.conf 편집

/etc/samba/smb.conf파일을 편집해서 아래와 같이 수정한다.

[global]
# ubuntu 파일시스템의 한글encoding은 utf8이고,
# 윈도우 파일시스템은 euck-kr이므로 아래와 같이 설정해야
# 파일이름이 깨지지 않고 정상적으로 보인다.
dos charset = EUC-KR
unix charset = UTF8
display charset = UTF8

# browseable을 yes로 해야
# 윈도우에서 공유디렉토리 목록이 보인다.
# workgroup은 윈도우 PC에서 설정한 workgroup과 동일한 이름으로 쓴다.
browseable = yes
workgroup = SWEETHOME
server string = homeserver
dns proxy = no

log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d

# 인증관련 설정
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
invalid users = root
unix password sync = yes

passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *passwd:*password\supdated\ssuccessfully* .

# 여기부터 공유디렉토리 설정이다.
# 각 계정별 home 디렉토리 설정이다.
# '/data/samba/home/계정이름' 디렉토리가 계정별 공유디렉토리가 되도록 했다.
# smbuser 그룹의 사용자에게 read, 본인만 write가 가능하도록 했다.
[homes]
comment = Home Directories
browseable = yes
valid users = @smbuser
path = /data/samba/home/%S
writable = no
write list = %S    # 본인만 write 가능하게함.
create mask = 0640
directory mask = 0750
group = smbuser

# 가족 누구나 접근가능한 디렉토리
# 누구나 새로운 파일을 만들수는 있지만,
# 다른 사람의 파일은 읽기만 가능하고 쓰기는 금지시킴.
# 영화, 음악 파일 공유용.
[sharedata]
comment = Data to share for all family
browseable = yes
valid users = @smbuser
path = /data/samba/media
writable = yes
create mask = 0640
directory mask = 0750
group = smbuser

# 프로그램들을 모아놓은 공유디렉토리
# 누구나 read 접근은 가능하지만,
# 관리자인 catsby에게만 파일생성 및 수정권한을 주었다.
[programs]
comment = Programs
browseable = yes
valid users = @smbuser
path = /data/samba/programs
writable = no
write list = catsby
create mask = 0640
directory mask = 0750
group = smbuser

# 프린터 공유
# 홈서버에 연결된 모든 프린터가 공유된다.
[printers]
comment = All Printers
browseable = yes
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700


이제 윈도우가 설치된 PC의 탐색기에서 주소창에 \\homeserver 혹은 \\HOMESERVER_IP 를 입력하면 공유 디렉토리와 공유된 프린터를 볼 수 있다.

Samba가 로컬네트웍상에서 손쉽게 파일/프린터 등을 공유할 수 있게 해주지만, 그것만으로는 부족할 때가 있다.
다음 글에서 그것과 관련한 FTP 및 Printer server 설정에 대해 설명하겠다.
2008/01/27 04:18 2008/01/27 04:18
홈서버로 사용할 PC가 준비됐으면 ubuntu를 설치해보자.

설치CD 구하기

아래 URL에서 Server Edition의 Ubuntu 최신버전 설치CD를 다운로드 받아, CD로 굽는다. 
(현재 7.10이 최신버전이다.)
desktop edition과 server edition의 차이는 live cd 여부외에도 x window와 같은 desktop용 패키지의 포함여부 등 CD에 포함된 패키지 구성이 다소 다르다. 하지만, 기본 베이스 시스템이 설치된 후에는 apt-get, synaptics, aptitude 등의 툴을 사용해서 추가적인 패키지들을 네트웍 설치할 수 있으니 Desktop edition을 사용해도 상관없다. 그러나 이 글에서는 server edition 기준으로 설명한다.

Ubuntu 설치하기

요즘 설치과정 자체가 Windows설치하는 것 만큼이나 쉬워졌을 뿐더러, 설치과정에서도 한글을 볼 수 있으니 자세한 설명은 피하겠다.

설치 중에 관리계정을 만드는 과정이 있다. ubuntu는 unix root계정으로 로그인 할 수 없도록 되어있다. 대신 sudo 명령을 사용하여 root 권한 작업을 수행하도록 하고 있는데, 설치 중에 생성하는 관리계정은 이 sudo 권한을 갖게 되므로 중요하다. sudo가 시스템 관리 계정의 보안측면에서 낫다, 아니다 논쟁의 여지는 있지만 털어먹을것 없는 홈서버 운영에 있어서 중요한 요소는 아닌듯 하다.
참고로 Unix 기반인 Mac OSX 역시 root계정 대신 sudo를 사용하여 시스템 작업을 하도록 되어 있으며, Unix 기반은 아니지만 Windows Vista 역시 이와 비슷한 방식의 시스템 작업 권한 관리를 사용하고 있다.

설치 마지막 즈음에 아래와 같이 설처할 서버툴 선택화면이 나온다.
사용자 삽입 이미지

원격관리를 위한 SSH와 프린터/파일서버를 위해 Printer Server, Samba를 선택한다.
웹서버를 운영할 생각이라면, LAMP도 체크해준다.

시스템에 따라 다르겠지만 설치에 걸리는 시간은 15분 내외 정도이며, 설치가 완료되면 CD를 제거하고 리부팅하면 로그인 셀을 볼 수 있다. (Desktop edition은 X를 설치하므로 GDM이 뜬다.) 설치 중에 생성했던 관리계정으로 로그인하여 필요한 기타 설정들을 하자.

설치후 자잘한 작업

Ubuntu는 Update가 빠른편이라 설치CD는 설치하는 순간, 이미 최신 패키지들이 아닐 수 있다.
따라서 설치후 네트웍이 잡힌 후에는 CD의 패키지들을 참조하지 않는게 좋다.
/etc/apt/source.list 파일을 열어서, 아래처럼 cdrom 부분을 주석처리한다.
# deb cdrom:[Ubuntu-Server 7.10 _Gutsy Gibbon_ - Release amd64 (20071016)]/ gutsy main restricted
그리고, 아래 명령으로 설치된 패키지들을 최신버전으로 update하자.
catsby@homeserver:~$ sudo apt-get update
catsby@homeserver:~$ sudo apt-get dist-upgrade
데비안 계열의 리눅스이므로 패키지 관리에는 apt-get가 애용된다. 위의 첫번째 명령은 최신 패키지 리스트를 update하는 것이고, 두번째는 현재 설치된 패키지 중 업데이트된 패키지가 있으면 업그레이드하라는 명령어이다. apt-get에 대한 자세한 내용은 구글링하라.

데스크탑용이 아니고 홈서버이므로 X-window 환경을 별로 권하고 싶지는 않지만, 서버기능 외에  Ubuntu 데스크탑과 똑같은 GUI환경을 사용하고 싶다면, 아래와 같이 gnome-desktop을 설치할 수 있다.
catsby@homeserver:~$ apt-get install gnome-desktop

설정파일백업

서버의 시스템 설정파일들은 여러가지 이유에서 변경이력을 관리할 필요가 있다. 설정 변경 후 시스템에 문제가 있으면 그전 상태로 돌리거나 기존 설정과 비교를 해볼 수 있다. 또한 설정파일들의 backup 용으로도 쓰일 수 있으니 /etc 이하 디렉토리들을 RCS,CSV,Subversion 등으로 버전관리를 하는것이 좋다. 여기에서는 Subversion을 예로 설명하겠다.

Subversion 설치

아래와 같은 명령으로 subversion을 설치한다.
catsby@homeserver:~$ apt-get install svn

Repository 생성

버전관리파일들을 저장하고 관리할 repository를 생성해보자. 예에서는 /data/svn 밑에 sysconfig라는 이름으로 repository를 생성한다.
(시스템 설정파일을 관리할 것이므로 root 권한으로 생성한다.)
catsby@homeserver:~$ sudo mkdir /data/svn
catsby@homeserver:~$ cd /data/svn
catsby@homeserver:~$ sudo svnadmin create sysconfig
이제 /etc 디렉토리가 좀전에 생성한 repository의 working copy가 되도록 한다.
catsby@homeserver:~$ cd /etc
catsby@homeserver:~$ sudo svn checkout file:///data/svn/sysconfig
위와 같이 하면 /etc 밑에 .svn이라는 디렉토리가 생겼을 것이다. 이제 작업사본(working copy)인 /etc 밑의 파일들을 sysconfig repository에 반영하자.
catsby@homeserver:~$ sudo svn add *
catsby@homeserver:~$ sudo svn commit
commit시에 comment를 입력하고 진행하면, /etc 밑의 시스템 설정파일들이 모두 svn repository에 추가되고, revision 번호가 1로 올라갔을 것이다.
새로운 패키지를 설치/삭제하거나, 시스템 설정을 변경할 때마다 /etc 디렉토리에서 add/commit해주면 변경내역이 repository에 반영될 것이다. Subversion에 대한 자세한 사용법은 http://subversion.tigris.org 를 참조하라.

이제는 설치가 끝났으니, 키보드/마우스/모니터를 분리하고 본체를 은밀하고 안전한 곳으로 이동시키자. 홈서버에는 오직 파워케이블과 랜선만 꽂혀있으면 된다.

다음 글에서 samba를 이용한 파일 및 프린터 공유 설정을 설명하겠다.
2007/12/22 22:28 2007/12/22 22:28
집에 PC가 2대 이상인 사람이라면 파일공유나 프린터공유의 필요성을 한번쯤은 느껴봤을 것이다.
파일서버 기능이 있는 네트웍하드나 일반프린터에 연결할 수 있는 프린터서버 모듈들이 판매되기는 하지만,
가정에서 쓰기에는 다소 부담스러운 가격이다. 그렇다고 PC 중 하나에서 파일과 프린터를 설정해서
공유하기에는 그 PC를 매번 켜야한다는 불편함이 있다.

만약 버리는 PC가 있다면 그 PC를 활용해서 홈서버를 구축할 수 있는데, 다음과 같은 장단점을 생각해볼 수 있다.
  • 사용하는 PC외에 홈서버로 쓸 PC가 추가로 필요하므로 공간이 더 필요하지만, 홈서버는 랜선만 꼽아 놓으면 되므로 많은 공간이 필요하지 않다. (모니터, 키보드, 마우스도 필요없다.)
  • 현재 사용이 불편할 정도의 스펙이라도, 가정에서의 프린터/파일 서버 정도는 가뿐히 수행할 수 있으므로, 버려질 PC를 제품수명이 다될때까지도 활용할 수 있다.
  • 전기세가 부담스럽지만 항상 켜 놓으면, 가정내의 로컬네트웍 뿐만아니라 집 외부에서도 파일공유 용으로 사용할 수 있다. 그리고 오래된 PC의 경우 일반적으로 전력소모도 더 적다.
  • 사진이나 동영상 클립 같이 반영구적으로 보관해야하는 디지털 자료의 경우 CD/DVD와 같은 매체보다는 HDD가 안정성이나 가격에서 메리트가 있는데, 홈서버를 이러한 자료들의 저장소로 활용할 수 있다. 가족 구성원들이 공유할 자료가 한곳에 모여있으면 관리도 편하고, 일괄 백업도 가능하니 더 안전하다.
  • 안정성이 크게 문제 되지 않는 경우라면, 가족용 블로그 운영을 위해 웹서버를 운영할 수도 있겠다.
서버라고 이름 붙이긴 했지만, 홈서버는 홈서버다. 대충 다음과 같은 것들만 갖춰지면 된다.
  • 공유기
    홈네트웍 환경을 위한 필수품. PC가 2대 이상이라면 기본적으로 갖추고 있을 것이다.
  • 홈서버로 쓸 PC
    위에서도 언급했지만, 고사양은 사치다. 나는 팬티엄3/384램으로도 5년 이상 써왔다.
    파일서버가 주용도라면, 추후 HDD 교체 등을 위해 하드랙을 장착해놓으면 좋다.
    또, 오래된 PC라서 팬소음이 심하다면 팬을 교체해주는 것도 좋다.
  • 기타
    가족 모두를 위한 편리한 홈컴퓨팅 환경을 위해서 홈서버를 구축하는건데, 전기세 문제로 가정불화가 생긴다면 안되겠다. 와이프 혹은 어머니에게 충분한 설명을 하도록 한다.
하드웨어의 준비가 끝났다면, 사용할 OS를 고민해보자.
여러모로 윈도우즈2003이 편하다. MS에서 만든 OS중 최고이고,
486PC에서도 돌려봤다는 소문이 있을 정도로 가벼우니 설정만 잘하면 저사양PC에서도 사용가능하다.
단, 라이센스가 비싸다. (뭐 집에서 쓰면서 서버OS를 정품을 쓰리라고는 생각 않지만...)
게다가 파일서버로 윈도우즈 계열을 쓴다면 백신프로그램은 필수다.
사람이 항상 합법적으로만 살 수는 없지만, 그래도 합법적고 공짜이며, 게다가 안정적인 리눅스가 좋겠다.

그럼 어떤 리눅스 배포본을 쓸것인가?
어떤 배포본을 쓰던 크게 차이는 없겠지만 개인적으로는 Debian 계열의 배포본을 선호한다.
요즘은 어떤지 모르겠지만 레드햇은 패키지 의존성 문제로 5년전에 시스템 한번 말아먹은 후 절대로 쓰지 않는다. 레드햇은 대중성이 장점이지, 패키지 관리가 우수한 배포본은 못된다. 대충대충 편하게 관리할 용도라면 debian 계열이 좋다. 지난 5년간 Debian으로 파일서버,ftp,웹서버,svn 등의 용도로 홈서버를 운영해온 경험상 레드햇계열에서 겪던 패키지 의존성이 꼬인다던지 하는 일을 한번도 경험해본바 없을 뿐더러, 명령어 하나로 패키지 설치부터 업데이트가 다 가능하니, 관리하기 수월하다.

Debian 계열의 배포본 중에서도 Ubuntu를 추천한다.
현재 리눅스 배포본 중 점유율 1위이고, Ubuntu의 지향점이 그렇듯이 로컬라이징이 매우 잘되어 있으며,
데스크탑 리눅스를 지향하는 만큼 편의성면에서 우수하다. debian에 비해서 update도 빠른편이고, 완고한 debian과는 달리 패키지 정책이 관대한 편이라 장치 드라이버등의 지원도 더 나은 편이다.
ubuntu에 대해서는 공식홈페이지한국우분투사용자모임을 참고하라.

다음 글에서 홈서버로 Ubuntu를 설치하고 설정하는 방법에 대해서 설명하겠다.
2007/12/22 21:53 2007/12/22 21:53