curl 기반 텍스트/로그 공유 서비스
ROKFOSS Pastebox 관련 문의는 ROKFOSS 공식 디스코드 또는 github@krfoss.org 으로 문의하여 주시길 바랍니다.
서비스 공지는 ROKFOSS 공식 디스코드를 방문하여 확인하실 수 있습니다
| 레이어 | 스택 |
|---|---|
| OS | Alpine Linux 3.23.4 (미러: https://mirror5.krfoss.org/alpine) |
| 언어 | Go |
| 프론트엔드 | Go HTML Template |
| 백엔드 | Go Standard Library HTTP Server |
| 저장소 | Local File Storage / MariaDB (선택 가능) |
| 압축 기술 | zstd / gzip (DB 모드 시 사용 가능) |
-
저장소를 클론하거나
.zip파일로 다운로드하세요. -
config.example.conf파일을 복사하여config.conf설정 파일을 만듭니다.cp config.example.conf config.conf
-
로컬 파일 저장소 모드로 가볍게 실행할지, 대규모 처리를 위해 MariaDB 모드를 활성화할지
config.conf를 수정하여 선택합니다. -
직접 컴파일하여 실행 (Go 환경)
go build -o pastebox ./cmd/server ./pastebox
또는 Docker (GHCR 사전 빌드 이미지)로 실행 소스 코드를 직접 빌드할 필요 없이 GitHub Packages에 등록된 공식 컨테이너를 즉시 끌어와서 실행할 수 있습니다.
docker run -d --name pastebox \ -p 8080:8080 \ -v $(pwd)/data:/paste-data \ -v $(pwd)/config.conf:/app/config.conf \ ghcr.io/krfoss/pastebox:latest
(Docker Compose를 사용하시려면
docker-compose.yml파일의image부분을ghcr.io/krfoss/pastebox:latest로 수정 후docker compose up -d를 입력하세요.) -
http://localhost:8080을 브라우저에서 접속하거나curl을 사용하여 텍스트나 로그를 업로드하세요.
기존에 설치된 Pastebox를 최신 버전으로 업데이트하려면 아래 방법을 사용하세요.
도커(Docker Compose) 사용자:
docker compose pull
docker compose up -d직접 컴파일(Go Build) 사용자:
git pull
go build -o pastebox ./cmd/server
# 이후 사용 중인 프로세스(systemd 등) 재시작Pastebox는 런타임에 로컬 파일 및 데이터베이스 모드를 전환할 수 있도록 key=value 프로퍼티 형식의 .conf 파일을 지원합니다.
# 저장소 모드 (local: 로컬 파일 저장, db: MariaDB/MySQL 연동)
STORAGE_MODE=local
# 서버 대기 주소
LISTEN_ADDR=:8080
# [Local 모드 전용] 데이터가 물리적으로 저장될 경로
DATA_DIR=./data
# 임시 데이터 자동 만료 기간 (일)
EXPIRE_DAYS=30
# [DB 모드 전용] MariaDB DSN 연결 정보 (자동으로 테이블 생성 및 관리)
DB_DSN=root:password@tcp(127.0.0.1:3306)/pastebox?parseTime=true
# [DB 모드 전용] 데이터 초고압축 알고리즘 (zstd, gzip, none 중 선택)
DB_COMPRESSION_ALGORITHM=zstd
# [선택] 관리자 로그인 마스터 토큰 (비워둘 시 최초 서버 기동 시 256자 임의 토큰을 자동 생성해 채워넣습니다)
ADMIN_TOKEN=-
데이터 자동삭제: 업로드 시점 기준 30일 후 자동삭제 (백그라운드 정리 고루틴 기동)
-
텍스트 업로드: **echo, cat (cat << EOF)**와 같이 리눅스 명령어와 연계하여 업로드 가능
echo "hello" | curl -X POST --data-binary @- http://localhost:8080/
-
명령어 출력 업로드: 서버 로그나 시스템 현황(
ifconfig,df -h등) 결과를 직접 파이프로 연결하여 다이렉트 업로드 가능ifconfig | curl -X POST --data-binary @- http://localhost:8080/ -
텍스트 파일 업로드:
multipart/form-data대신 대용량 처리에 유리한 바이너리 직접 전송 방식 지원curl -v --data-binary @test.txt http://localhost:8080/
-
비밀번호 보호 링크:
usepassword: true헤더를 사용한 비공개 업로드 링크생성 지원 (헤더 사용시 영문(대+소문자) + 숫자 조합으로 생성된 8자리 비밀번호 발급 및?password=...혹은paste-password: ...헤더로 접근 가능)# 비밀번호 링크 생성: curl -H "usepassword: true" -v --data-binary @secret.txt http://localhost:8080/ # 데이터 확인: curl -H "paste-password: RANDOM_PASSWORD" http://localhost:8080/RANDOM_CODE curl http://localhost:8080/RANDOM_CODE?password=RANDOM_PASSWORD
-
대규모 압축 인메모리 파이프라인 (DB 모드):
- 데이터베이스 연동 시, 업로드한 데이터를 Go 백엔드 메모리 단에서
zstd또는gzip을 통해 초고압축하여 DB에 축소 보관합니다. - 이를 통해 디스크 용량을 최대 90% 이상 절감하며 디스크 I/O와 대역폭 사용을 최소화하여 조회가 급증하는 환경에서도 빠른 응답 속도를 냅니다.
- 데이터베이스 연동 시, 업로드한 데이터를 Go 백엔드 메모리 단에서
-
관리 대시보드 (
/ra):- 관리자가 업로드된 모든 paste 데이터를 웹 브라우저에서 편리하게 관리할 수 있는
/ra모니터링 콘솔을 제공합니다. ADMIN_TOKEN을 통해 안전하게 인증(쿠키 기반) 후 접근하며, 선택 삭제 및 전체 파기 기능을 지원합니다.- 최초 기동 시
ADMIN_TOKEN설정이 비어있다면 영문 대소문자 및 숫자 조합의 256자 마스터 토큰이 자동으로 생성되어config.conf에 영구 보존됩니다. (최초 생성 시 서버 표준 출력 로그를 통해 토큰 정보를 확인할 수 있습니다.)
- 관리자가 업로드된 모든 paste 데이터를 웹 브라우저에서 편리하게 관리할 수 있는
pastebox/
├── config.conf # [NEW] 로컬 실행용 설정 파일 (Git 제외)
├── config.example.conf # [NEW] 설정 파일 템플릿 예시
├── Dockerfile
├── docker-compose.yml
├── docker-entrypoint.sh
├── go.mod
├── go.sum
├── README.md
├── README_ko.md
├── cmd/
│ └── server/
│ └── main.go
├── internal/
│ ├── metadata.go
│ ├── store.go
│ └── store_test.go # [NEW] 동시성 스트레스 및 단위 테스트
└── templates/
└── index.html
원본 저장소: kmw0410/pastebox
