| ** Issues ** | ** Releases ** | ** README ** | ** Architecture ** |
put-file is a high-performance, lightweight static file server developed in Go language. It supports basic operations such as file upload, download, deletion, and also provides features like permission control and logging, making it an ideal choice for simple file serving needs.
Welcome to the 3ziye GitHub open source organization! We are rooted in technology and innovative in thinking, deeply cultivating the field of industrial digital intelligence. We are committed to building a technical exchange platform for developers and enterprises worldwide through open source collaboration, jointly injecting continuous momentum into industrial digital intelligence, and working together to create a technology ecosystem that empowers the future.
🌟 Our Vision
To become a leading provider of digital solutions in the industry, driving enterprise innovation and development with technology, and creating greater value for customers.
In the open source field, we hope to extend this vision — through opening core technologies, sharing solutions, breaking down technical barriers, helping more developers grow rapidly, assisting more enterprises in reducing the cost of digital transformation, and ultimately achieving the goal of "technology for all, ecological win-win"
For more information, please visit our GitHub Organization Page or contact us at team@3ziye.com.
- 🚀 High Performance: Based on Go's high concurrency features, capable of efficiently handling a large number of file requests
- 🔒 Access Control: Supports basic authentication and file access permission control
- 📝 Detailed Logging: Records requests and operation logs for troubleshooting and monitoring
- 📁 File Operations: Supports file upload, download, deletion, renaming, etc.
- 📋 Directory Listing: Automatically generates directory listings for easy browsing and file access
- ⚙️ Flexible Configuration: Supports configuration through configuration files, environment variables, and command-line parameters
- 🐳 Container Support: Provides Docker images for easy deployment and operation
- 🚀 Automatic Deployment: Supports automatic deployment to remote servers via GitHub Actions
If you have Go installed, you can install put-file directly using the go install command:
# Install the latest version
go install github.com/3ziye/put-file@latest-
Clone the repository
git clone https://github.com/3ziye/put-file.git cd put-file -
Build the project
go build -o put-file cmd/main.go
-
Run the service
./put-file
put-file provides precompiled binary files for Linux, Windows, and Mac systems, which can be downloaded and used directly. Each release package includes all necessary files such as the executable binary, configuration templates, web interface files, and installation scripts.
-
Visit the GitHub Releases page and download the compressed package of binary files corresponding to your platform
-
Extract the corresponding files according to your operating system:
Each release package includes dedicated installation scripts for each platform to simplify the installation process:
For Linux:
# Download and extract the Linux version
wget https://github.com/3ziye/put-file/releases/download/vX.Y.Z/put-file_vX.Y.Z_linux_amd64.tar.gz
tar -xzf put-file_vX.Y.Z_linux_amd64.tar.gz
cd put-file_vX.Y.Z_linux_amd64
# Run the installation script
chmod +x scripts/install_linux.sh
./scripts/install_linux.sh
# Or run the service directly without installation
./put-fileFor Windows:
# Download and extract the Windows version
# Right-click on the downloaded zip file and select "Extract All"
cd put-file_vX.Y.Z_windows_amd64
# Run the installation script (double-click or run from command prompt)
scripts\install_windows.bat
# Or run the service directly without installation
put-file.exeFor Mac:
# Download and extract the Mac version
curl -OL https://github.com/3ziye/put-file/releases/download/vX.Y.Z/put-file_vX.Y.Z_darwin_amd64.tar.gz
tar -xzf put-file_vX.Y.Z_darwin_amd64.tar.gz
cd put-file_vX.Y.Z_darwin_amd64
# Run the installation script
chmod +x scripts/install_mac.sh
./scripts/install_mac.sh
# Or run the service directly without installation
chmod +x put-file
./put-fileEach release package contains the following files and directories to ensure a complete experience:
- Executable binary file for the target platform
config.json.example: Configuration template fileweb/static/: Web interface filesdoc/: Documentation filesuploads/: Default directory for storing uploaded filesscripts/: Installation scripts for each platformREADME.md: Project documentation
- View version information After starting the service, you can see the current version number in the console logs
Pull the image from Docker Hub:
docker pull 3ziye/put-file:latestRun the Docker container:
docker run -p 8080:8080 -v ./files:/app/uploads 3ziye/put-file:latestPull the image from GitHub Package:
docker pull ghcr.io/3ziye/put-file:latestRun the GitHub Package container:
docker run -p 8080:8080 -v ./files:/app/uploads ghcr.io/3ziye/put-file:latest- Ensure you have Docker installed
- Run the following command to pull the image:
docker pull ghcr.io/3ziye/put-file:latestdocker run -p 8080:8080 -v ./files:/app/uploads ghcr.io/3ziye/put-file:latestThis command will run the container, map port 8080 of the container to port 8080 of the host, and mount the host's ./files directory to the /app/uploads directory inside the container.
- Log in to GitHub Container Registry:
docker login ghcr.io -u YOUR_GITHUB_USERNAME -p YOUR_GITHUB_TOKEN- Build the image:
docker build -t ghcr.io/3ziye/put-file:latest .- Push the image:
docker push ghcr.io/3ziye/put-file:latestput-file supports automatic deployment to remote servers via GitHub Actions. For detailed configuration steps, please refer to the deployment documentation.
Key features include:
- Secure management of server credentials via GitHub Secrets
- Automatic download of the latest Linux binary version
- Automatic backup and deployment on the server side
- Support for systemd service management
- Can be triggered manually or through Release publishing