@filen/s3 v0.2.40
Installation
- Install using NPM
npm install @filen/s3@latest
- Initialize the server and query it using aws-sdk
import FilenSDK from "@filen/sdk"
import path from "path"
import os from "os"
import S3Server from "@filen/s3"
import { S3 } from "aws-sdk"
// Initialize a SDK instance (optional)
const filen = new FilenSDK({
metadataCache: true,
connectToSocket: true,
tmpPath: path.join(os.tmpdir(), "filen-sdk")
})
await filen.login({
email: "your@email.com",
password: "supersecret123",
twoFactorCode: "123456"
})
const hostname = "127.0.0.1"
const port = 1700
const https = false
const endpoint = `${https ? "https" : "http"}://${hostname === "127.0.0.1" ? "local.s3.filen.io" : hostname}:${port}`
const server = new S3Server({
hostname,
port,
https,
user: {
accessKeyId: "admin",
secretKeyId: "admin",
sdk: filen
}
})
const s3 = new S3({
accessKeyId: "admin",
secretAccessKey: "admin",
endpoint,
s3ForcePathStyle: true, // Needed
region: "filen" // Needed
})
// Start the server
await server.start()
console.log(`S3 server started on ${endpoint}`)
// List objects
await s3
.listObjectsV2({
Bucket: "filen",
Prefix: ""
})
.promise()
- Initialize the server in cluster mode
import FilenSDK from "@filen/sdk"
import path from "path"
import os from "os"
import { S3ServerCluster } from "@filen/s3"
import { S3 } from "aws-sdk"
// Initialize a SDK instance (optional)
const filen = new FilenSDK({
metadataCache: true,
connectToSocket: true,
tmpPath: path.join(os.tmpdir(), "filen-sdk")
})
await filen.login({
email: "your@email.com",
password: "supersecret123",
twoFactorCode: "123456"
})
const hostname = "127.0.0.1"
const port = 1700
const https = false
const endpoint = `${https ? "https" : "http"}://${hostname === "127.0.0.1" ? "local.s3.filen.io" : hostname}:${port}`
const server = new S3ServerCluster({
hostname,
port,
https,
user: {
accessKeyId: "admin",
secretKeyId: "admin",
sdk: filen
},
threads: 16 // Number of threads to spawn. Defaults to CPU core count if omitted.
})
// Start the cluster
await server.start()
console.log(`S3 server cluster started on ${endpoint}`)
S3 Compatibility
Only methods listed here are currently implemented. Due to the underlying storage most methods are impossible to implement, though we try to implement all "fundamental" needed methods.
* An objects ETag is always its UUID. Since Filen is fully end-to-end encrypted there is no way to know the real MD5 file hash.
License
Distributed under the AGPL-3.0 License. See LICENSE for more information.
8 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago