S3-compatible object storage server that runs on your laptop, servers, just about anywhere!
4.8K

Less3 is an S3-compatible object storage platform that you can run anywhere.

Core use cases for Less3:
v2.1.17
AWSCLI.md for comprehensive testing commandsFirst things first - do you need help or have feedback? Please file an issue here.
Thanks to @iain-cyborn for helping make the platform better!
Clone, build, and run Less3:
git clone https://github.com/jchristn/less3
cd less3
dotnet build src/Less3.sln
cd src/Less3
dotnet run
On first launch, Less3 will run a setup wizard that creates:
system.json - Server configurationless3.db - SQLite database (default)To re-run the setup wizard at any time:
dotnet run setup
Less3 includes a web-based dashboard for managing buckets, objects, users, and credentials. After starting the Less3 server, you can start the dashboard:
cd dashboard
npm install
npm run build
npm run start
The dashboard will be available at http://localhost:3000.
For development, you can use:
npm run dev
Note: The dashboard requires Node.js v18.20.4 or later.
dotnet publish src/Less3/Less3.csproj -c Release -o ./publish
cd publish
dotnet Less3.dll
Webserver.Hostname: MUST be set to a DNS hostname. IP addresses are not supported (parsing will fail). Incoming HTTP requests must have a HOST header matching this value, or you will receive 400/Bad Request.
Wildcard Listeners: Using *, +, or 0.0.0.0 for Webserver.Hostname requires administrative/root privileges (OS requirement).
{
"Webserver": {
"Hostname": "localhost",
"Port": 8000
},
"BaseDomain": null,
"Storage": {
"DiskDirectory": "./disk/",
"TempDirectory": "./temp/"
},
"Database": {
"Type": "Sqlite",
"Filename": "./less3.db"
},
"AdminApiKey": "less3admin",
"ValidateSignatures": true
}
Less3 was designed to be consumed using the AWS SDK, AWS CLI, MinIO Client (mc), or direct RESTful integration in accordance with Amazon's official S3 API documentation (https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html).
AWSCLI.md for comprehensive testing commandsMINIO.md for comprehensive testing commandsShould you encounter a discrepancy between how Less3 operates and how AWS S3 operates, please file an issue with details and supporting AWS documentation.
Less3 implements the following AWS S3 APIs. For a complete compatibility matrix, refer to the 'assets' directory.
Less3 aims to faithfully implement S3 API behavior. However, there are a few minor differences that should be inconsequential for most use cases:
1, 2, 3 instead of AWS-style strings)us-west-1 (configurable via RegionString in system.json)ValidateSignatures setting (enabled by default)If you encounter incompatibilities or unexpected behavior with supported APIs, please file an issue with:
Less3 supports both S3 URL styles for accessing buckets and objects:
http://hostname:port/bucket/keyBaseDomain in system.json (leave it null)http://localhost:8000/mybucket/myfile.txthttp://bucket.hostname:port/keyBaseDomain to your base domain (e.g., .localhost - note the leading period)Webserver.Hostname to * (wildcard listener)mybucket.localhost)http://mybucket.localhost:8000/myfile.txtConfiguration Example (system.json for virtual hosted-style):
{
"BaseDomain": ".localhost",
"Webserver": {
"Hostname": "*",
"Port": 8000
}
}
Less3 provides REST APIs for administrative operations such as managing users, credentials, and buckets.
Admin APIs require the x-api-key header with a value matching AdminApiKey in system.json (default: less3admin).
http://hostname:port/admin/{resource}/{operation}
curl -X GET http://localhost:8000/admin/users/list \
-H "x-api-key: less3admin"
For detailed API documentation, refer to the project wiki.
Less3 is built using a series of open-source packages, including:
Less3 is available on DockerHub.
Docker directorycd Docker
docker compose up -d
The Docker directory contains:
compose.yaml - Docker Compose configurationsystem.json - Pre-configured Less3 settingsless3.db - SQLite database (will be created on first run)defaultdefaulthttp://localhost:8000/bucket/key)* (accepts all incoming requests)The Docker deployment maps the following directories for persistence:
./system.json → /app/system.json - Configuration file./less3.db → /app/less3.db - Database./logs/ → /app/logs/ - Log files./temp/ → /app/temp/ - Temporary files during uploads./disk/ → /app/disk/ - Object storage datacd src
docker build -t less3:custom -f Less3/Dockerfile .
Important: For production deployments, always:
Refer to CHANGELOG.md for details.
Content type
Image
Digest
sha256:d5d157309…
Size
537.7 MB
Last updated
8 days ago
docker pull jchristn77/less3-ui