Filegogo
A file transfer tool that can be used in the browser webrtc p2p
Deploy on your self server
docker run -p 8080:8080 ghcr.io/a-wing/filegogo:latest server
Architecture
Components
- app
- server
- webapp
- client-cli (current, have many problems)
- lib
- libfgg.js (only browser)
- libfgg.go
- libfgg.rs
Build && Install
make
Run Development
Webapp
npm install
# frontend
# Default Listen port: 3000
# Auto Proxy port: 8080
npm run dev
Server
# Default Listen port: 8080
go run ./main.go server
Client
run cli client. For example:
# send command
go run ./main.go send -s http://localhost:8080/6666 <file>
# recv command
go run ./main.go recv -s http://localhost:8080/6666 <file>
Config
Built-in turn server
# Enable Built-in turn server
[turn]
# if no set, use random user
user = "filegogo:filegogo"
realm = "filegogo"
listen = "0.0.0.0:3478"
# Public ip
# if aws, aliyun
publicIP = "0.0.0.0"
relayMinPort = 49160
relayMaxPort = 49200
iceServer Use Other
For example: coturn
Docker Deployment Coturn
docker run -d --network=host --name=coturn coturn/coturn:alpine \
-n --log-file=stdout \
--min-port=49160 --max-port=49200 \
--lt-cred-mech --fingerprint \
--no-multicast-peers --no-cli \
--no-tlsv1 --no-tlsv1_1 \
--realm=filegogo \
--user=filegogo:filegogo \
--external-ip='$(detect-external-ip)' \
--relay-ip='$(detect-external-ip)' \
--listening-ip='$(detect-external-ip)' \
--listening-device=eth0
Test Deployment
# Test stun
turnutils_stunclient send.22333.fun
# Test turn
turnutils_uclient -u filegogo -w filegogo send.22333.fun -y
Package Manager Deployment
apt install coturn
# /etc/turnserver.conf
listening-ip={YOUR_IP_ADDRESS}
relay-ip={YOUR_IP_ADDRESS}
# Public ip
# if aws, aliyun
external-ip={YOUR_IP_ADDRESS}
fingerprint
lt-cred-mech
user=filegogo:filegogo
realm=filegogo