미니 서버 문서
주요 토픽들
아파치2 SSL 구축
# apt-get install apache2 # a2enmod ssl # service apache2 restart # mkdir /etc/apache2/ssl # openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt # Common Name 에서 도메인 이름을 제대로 적어줄 것.
default-ssl 파일 조정. ServerAdmin, ServerName 올바르게 조정하고 바로 아래에,
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
그리고 사이트 열기.
# a2ensite default-ssl # service apache2 restart
여기서 서버가 제대로 동작하지 않으면, 에러 로그를 살펴 보자. Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile]
이런 로그를 발견한다면 제대로 설정이 안 된 것이다.
가상 호스트 설정 또한 위와 마찬가지로 각각의 ServerName 마다 SSLEngine/SSLCertificateFile/SSLCertificateKeyFile 항목을 설정한다. 마지막으로 SSL에서도 VirtualHost를 하도록
NameVirtualHost *:443 Listen 443
설정도 추가한다.
이건 우분투 관련 설정이므로 적당히 고쳐서 써야 한다는 점 주의.
사운드 설정
$ sudo apt-get remove --purge alsa-base pulseaudio $ sudo apt-get install alsa-base pulseaudio $ sudo alsa force-reload
alsamixer 에서 MUTED 해제. 'MM'이라고 써져 있음 안됨.
블루투스 사용
# apt-get install bluez python-gobject python-dbus
블루투스 스피커를 사용해 보고 싶어 작업을 진행해 보았다. bluez, bluez-tools 패키지 설치. 설치 후 장비 검색 명령
$ hcitool scan Scanning ... 40:EF:4C:15:DF:B2 IA160 28:E3:47:83:C2:0A laptop
40:EF:4C:15:DF:B2
주소의 'IA160'이 내가 연결하고 싶은 블루투스 스피커이다.
서버에 사운드 설정을 하지 않아서 pulseaudio를 설치했다.
$ sudo apt-get install pulseaudio bluez-alsa $ sudo update-rc.d pulseaudio defaults $ sudo update-rc.d bluetooth defaults
bluetooth_sound 문서에서 기록
BitTorrent Sync 사용
vagrant와 이를 이용한 virtual machine 내역을 공유하기 위하여 NAS에 BitTorrent Sync를 이용해 보았다. 대용량 파일 변화 감지에 매우 유용하므로, 꽤 괜찮은 선택이 될 듯하다.
우선 이전 btsyncforrpi 문서에 많은 내용이 우선 기록되어 있다. 문서를 작성하는 2015년 11월까지도 리눅스는 별도의 GUI는 제공하지 않으므로, 데스크탑에서는 적당히 btsync를 꺼내 쓰면 될 것 같다.
NAS Config
별도의 사용자 btsync를 만들고 홈디렉토리에 .sync 디렉토리를 생성하고 여기에 모든 설정 파일등을 집어 넣는 식으로 작성하였다 이와 관련해서는 이전 문서를 참고.
{ "device_name": "MiniServer", "listening_port" : 0, // 0 - randomize port /* storage_path dir contains auxilliary app files if no storage_path field: .sync dir created in the directory where binary is located. otherwise user-defined directory will be used */ "storage_path" : "/home/btsync/.sync", /* set location of pid file */ "pid_file" : "/home/btsync/.sync/btsync.pid", /* use UPnP for port mapping */ "use_upnp" : true, /* limits in kB/s. 0 - no limit */ "download_limit" : 0, "upload_limit" : 0, /* proxy configuration */ // "proxy_type" : "socks4", // Valid types: "socks4", "socks5", "http_connect". Any other value means no proxy // "proxy_addr" : "192.168.1.2", // IP address of proxy server. // "proxy_port" : 1080, // "proxy_auth" : false, // Use authentication for proxy. Note: only username/password for socks5 (RFC 1929) is supported, and it is not really secure // "proxy_username" : "user", // "proxy_password" : "password", "webui" : { "listen" : "0.0.0.0:8888" // remove field to disable WebUI /* preset credentials. Use password or password_hash */ // ,"login" : "admin" // ,"password" : "password" // ,"password_hash" : "some_hash" // password hash in crypt(3) format // ,"allow_empty_password" : false // Defaults to true /* ssl configuration */ // ,"force_https" : true // disable http // ,"ssl_certificate" : "/path/to/cert.pem" // ,"ssl_private_key" : "/path/to/private.key" /* directory_root path defines where the WebUI Folder browser starts (linux only). Default value is / */ // ,"directory_root" : "/home/user/MySharedFolders/" /* directory_root_policy defines how directory_root is used (linux only). Valid values are: "all" - accepts directory_root and its subdirectories for 'getdir' and 'adddir' actions "belowroot" - accepts directory_root's subdirectories for 'getdir' and 'adddir' actions, but denies attempts to use 'adddir' to create directories directly within directory_root Default value is "all". */ // ,"directory_root_policy" : "all" /* dir_whitelist defines which directories can be shown to user or have folders added (linux only) relative paths are relative to directory_root setting */ // ,"dir_whitelist" : [ "/home/user/MySharedFolders/personal", "work" ] } /* !!! if you set shared folders in config file WebUI will be DISABLED !!! shared directories specified in config file override the folders previously added from WebUI. */ , "shared_folders" : [ /* { "secret" : "MY_SECRET_1", // required field - use --generate-secret in command line to create new secret "dir" : "/home/user/bittorrent/sync_test", // * required field "use_relay_server" : true, // use relay server when direct connection fails "use_tracker" : true, "use_dht" : false, "search_lan" : true, "use_sync_trash" : true, // enable SyncArchive to store files deleted on remote devices "overwrite_changes" : false, // restore modified files to original version, ONLY for Read-Only folders "known_hosts" : // specify hosts to attempt connection without additional Dsearch [ "192.168.1.2:44444" ] } */ { "secret" : "<code>", "dir" : "/home/btsync/<path>", "use_relay_server" : true, "use_tracker" : true, "search_lan" : true, "use_sync_trash" : true, "overwrite_changes" : false, "known_hosts" : [ "192.168.0.4:48867" ] } ] /* Advanced preferences can be added to config file. Info is available at "http://help.getsync.com/customer/portal/articles/1902048-sync-advanced-preferences--more-options" For example see folder_rescan_interval below */ // "folder_rescan_interval" : "86400" }
이 정도 예로 만들면 될 것 같다. 아래는 우분투에서 쓸 init script
#!/bin/sh ### BEGIN INIT INFO # Provides: btsync # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $network # Should-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Multi-user daemonized version of btsync. # Description: Starts the btsync daemon for all registered users. ### END INIT INFO # Replace with linux users you want to run BTSync clients for BTSYNC_USERS="btsync" DAEMON=/usr/local/bin/btsync start() { for btsuser in $BTSYNC_USERS; do HOMEDIR=`getent passwd $btsuser | cut -d: -f6` config=$HOMEDIR/.sync/config.json if [ -f $config ]; then echo "Starting BTSync for $btsuser" start-stop-daemon -b -o -c $btsuser -S -u $btsuser -x $DAEMON -- --config $config else echo "Couldn't start BTSync for $btsuser (no $config found)" fi done } stop() { for btsuser in $BTSYNC_USERS; do dbpid=`pgrep -fu $btsuser $DAEMON` if [ ! -z "$dbpid" ]; then echo "Stopping btsync for $btsuser" start-stop-daemon -o -c $btsuser -K -u $btsuser -x $DAEMON fi done } status() { for btsuser in $BTSYNC_USERS; do dbpid=`pgrep -fu $btsuser $DAEMON` if [ -z "$dbpid" ]; then echo "btsync for USER $btsuser: not running." else echo "btsync for USER $btsuser: running (pid $dbpid)" fi done } case "$1" in start) start ;; stop) stop ;; restart|reload|force-reload) stop start ;; status) status ;; *) echo "Usage: /etc/init.d/btsync {start|stop|reload|force-reload|restart|status}" exit 1 esac exit 0