Skip to content

whoisnian/share-Go

Repository files navigation

share-Go

Release Status

Usage

Download the latest binary from Release Page according to your operating system and architecture. Alternatively, docker container is also supported.

Run binary directly

mkdir ./uploads
./share-Go -log nano -l 0.0.0.0:9000 -p ./uploads

With linux chroot

mkdir -p ./share/uploads && sudo chown 65534:65534 ./share/uploads

# initialize chroot environment with alpine minirootfs
wget https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-minirootfs-3.18.4-x86_64.tar.gz
tar -xvf alpine-minirootfs-3.18.4-x86_64.tar.gz -C ./share && rm alpine-minirootfs-3.18.4-x86_64.tar.gz
echo 'nameserver 223.5.5.5' > ./share/etc/resolv.conf

# move share-Go binary into ./share and run
sudo chroot --userspec=65534:65534 ./share /share-Go -log text -l 0.0.0.0:9000 -p /uploads

example /etc/systemd/system/share-Go.service:

[Unit]
Description=share-Go Service
After=network-online.target

[Service]
Type=simple
User=root
Restart=always
RestartSec=5s
ExecStart=/usr/bin/chroot --userspec=65534:65534 /root/share /share-Go -log text -l 0.0.0.0:9000 -p /uploads

[Install]
WantedBy=multi-user.target

With docker container

mkdir ./uploads
docker run -d \
  --name share-go \
  -e CFG_LOGFMT=json \
  -e CFG_LISTENADDR=:9000 \
  -e CFG_ROOTPATH=/uploads \
  -p 9000:9000 \
  -v $(pwd)/uploads:/uploads \
  ghcr.io/whoisnian/share-go:v0.0.6

Development

  • start backend service:
    mkdir ./uploads
    go run ./main.go -log nano -d # manually rerun after modifying the golang code
  • start frontend dev server:
    cd fe
    npm install
    npm run start # live reloading for the javascript code
  • visit http://127.0.0.1:9100 in your web browser.