Sign inSign up

bigfile/bigfile

By bigfile

•Updated about 7 years ago

a file transfer system

Image
1

1.4K

bigfile/bigfile repository overview

Bigfile is a file transfer system, supports http, ftp and rpc protocol. It is built on top of many excellent open source projects. Designed to provide a file management service and give developers more help. At the bottom, bigfile splits the file into small pieces of 1MB, the same slice will only be stored once. Please allow me to illustrate the entire architecture with a picture.

architecture

In fact, we built a file organization system based on the database. Here you can find familiar files and folders. But in Bigfile, files and folders both are considered to be files.

Since the rpc and http protocols are supported, those languages supported by grpc⁠ and other languages can be quickly accessed. If you are not a programmer, you can use the ftp client to manage your files, the only thing you need to do is start Bigfile.

You can find more detailed Documentation⁠ here.

⁠Generate Certificates
docker run -v $(pwd):/certs bigfile/bigfile rpc:make-cert --save-to /certs
⁠docker-compose
version: "3"

services:

  mysql:
    image: mysql
    container_name: "bigfile-mysql"
    networks:
      - bigfile
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: bigfile
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./logs/mysql:/var/log/mysql
    restart: always
  
  http:
    image: bigfile/bigfile
    volumes:
      - "./server.pem:/certs/server.pem"
      - "./server.key:/certs/server.key"
      - "./storage:/bigfile/storage"
    networks:
      - bigfile
    depends_on:
      - mysql
    entrypoint:
      - /bigfile/bigfile
      - --db-host
      - mysql
      - http:start
      - --cert-file
      - /certs/server.pem
      - --cert-key
      - /certs/server.key
    ports:
      - "10985:10985"
    links:
      - mysql
    restart: always
  
  ftp:
    image: bigfile/bigfile
    volumes:
      - "./server.pem:/certs/server.pem"
      - "./server.key:/certs/server.key"
      - "./storage:/bigfile/storage"
    networks:
      - bigfile
    depends_on:
      - mysql
    entrypoint:
      - /bigfile/bigfile
      - --db-host
      - mysql
      - ftp:start
      - --cert-file
      - /certs/server.pem
      - --key-file
      - /certs/server.key
      - --passive-ip
      - 127.0.0.1
      - --tls-enable
      - --passive-port-range
      - 52000-52020
    ports:
      - "2121:2121"
      - "52000-52020:52000-52020"
    links:
      - mysql
    restart: always
  
  rpc:
    image: bigfile/bigfile
    volumes:
      - "./ca.pem:/certs/ca.pem"
      - "./server.pem:/certs/server.pem"
      - "./server.key:/certs/server.key"
      - "./storage:/bigfile/storage"
    networks:
      - bigfile
    depends_on:
      - mysql
    entrypoint:
      - /bigfile/bigfile
      - --db-host
      - mysql
      - rpc:start
      - --server-cert
      - /certs/server.pem
      - --server-key
      - /certs/server.key
      - --ca-cert
      - /certs/ca.pem
    ports:
      - "10986:10986"
    links:
      - mysql
    restart: always

networks:
  bigfile:
⁠multiple service start

start mysql:

docker run --rm --name bigfile-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bigfile  mysql

start bigfile:

docker run --rm -it -v $(pwd)/certs:/certs -v $(pwd)/storage:/bigfile/storage --link bigfile-mysql -p 2121:2121 -p 10985:10985 -p 10986:10986 -p 52100-52110:52100-52110   bigfile/bigfile --db-host bigfile-mysql multi:server --ftp-passive-ip 127.0.0.1 --ftp-passive-port-range 52100-52110 --server-cert /certs/server.pem --server-key /certs/server.key --ca-cert /certs/ca.pem

Tag summary

Content type

Image

Digest

Size

32.7 MB

Last updated

about 7 years ago

docker pull bigfile/bigfile