FileSender Next is a fresh rewrite of the widely-used FileSender application, now implemented in Go.
During the last FileSender meeting at the TNC24 conference, it was concluded that working towards a more secure FileSender codebase should be the priority for the roadmap. After more than 12 years of development, the original FileSender 2.x codebase has grown in complexity.
This rewrite aims to:
- Improve security
- Simplify the architecture
- Enable new features, including end-to-end encryption for large files
For more information, see the official update from FileSender.
This repository represents the initial stage of the rewrite effort, aiming to deliver an MVP that captures the core FileSender functionality with improved security and simplicity.
-
Install Dependencies:
- Go (1.24 or newer)
- Make
- Windows users can install Make via
winget, Chocolatey, or WSL.
- Windows users can install Make via
-
Clone the Repository:
git clone https://codeberg.org/filesender/filesender-next.git cd filesender-next -
Run the Application:
make run-dev
This uses a dummy authentication method and stores data locally in
./data. -
Other Useful Commands:
make testRun all tests with coveragemake lintRun lintermake fmtFormat codemake cleanRemove built filesmake installInstall binary to/usr/local/bin/filesendermake hotreloadRun with hot reloading (requireswatchexec)
If you prefer containerized deployment:
-
Install Dependencies:
-
Build (or pull) the Docker Image:
// Building docker build -t filesender:latest . // Pulling docker pull codeberg.org/hattorius/filesender:latest -
Run the Container:
docker run -p 8080:8080 filesender:latest
By default, the container:
- Listens on port
8080 - Uses a dummy authentication method
- Stores state in
/app/data
- Listens on port
You can configure behavior by passing environment variables when running the container:
FILESENDER_AUTH_METHODSets the authentication method (default:dummy)STATE_DIRECTORYDirectory for storing internal state (default:/app/data)MAX_UPLOAD_SIZEMaximum file upload size in bytes (default:2147483648, 2GB)
Example with custom configuration:
docker run -p 8080:8080 \
-e FILESENDER_AUTH_METHOD=dummy \
-e MAX_UPLOAD_SIZE=4294967296 \
-e STATE_DIRECTORY=/app/data \
filesender:latest