1
0
Fork 0
mirror of https://github.com/SunRed/haste-server.git synced 2024-11-01 01:30:21 +01:00
haste-server/docs/storage.md
Paweł 8ad927810f
Added all dependencies to package.json (#11)
It seems to be a better practice to keep all dependencies documented in repo and package-lock, so there will be no issues with installing them manually. Even though there are more deps that self-hosters might not use, it makes it easier to change configuration and manage some things like docker images (see #8).
2020-10-01 01:12:07 +02:00

3.2 KiB

Storage

Here's a list of all supported document store systems.
One of these is meant to be set in config.json as storage object.
Default type is file with save directory at ./data.
With some storage options you can set up document expiration - after which documents will no longer be available

Table of Contents

In alphabetical order:

Amazon S3

Not rewritten yet, to be filled in

File

Default storage option, with no further installation required.
Stores documents in a specified directory in files named with a md5 hash of the key to avoid any security issues.
Default path is ./data

NOTE: File storage option does not support document expiration!

Config:

{
	"type": "file",
	"path": "./data"
}

Memcached

Not rewritten yet, to be filled in

MongoDB

Stores documents in a specified database in a collection named entries.
Expiration property in config can be changed to a value in seconds after which entries will not be served.

Optimal default config:

NOTE: Depending on how your MongoDB server is configured, options as connectionUri may vary.
If server has no authentication, you can omit the auth object.

Check documentation for more detailed explanation about available clientOptions properties.

{
	"type": "mongodb",
	"expire": 0,
	"connectionUri": "mongodb://localhost:27017/haste",
	"clientOptions": {
		"useUnifiedTopology": true,
		"useNewUrlParser": true,
		"keepAlive": true,
		"keepAliveInitialDelay": 60000,
		"poolSize": 30,
		"socketTimeoutMS": 360000,
		"connectTimeoutMS": 360000,
		"auth": {
				"user": "username",
				"password": "password"
		},
		"authSource": "admin"
	}
}

Postgres

You will have to create the database and add a table named entries. It can be easily done with the following query:

CREATE TABLE entries (id SERIAL PRIMARY KEY, key VARCHAR(255) NOT NULL, value TEXT NOT NULL, expiration INT, UNIQUE(key));

Properties in clientOptions are optimal defaults and should be sufficient to run haste, however more detailed explanation for them can be found in pg package documentation.
Expiration property in config can be changed to a value in seconds after which entries will not be served.

{
	"type": "postgres",
	"expire": 0,
	"clientOptions": {
		"host": "localhost",
		"port": 5432,
		"user": "username",
		"password": "password",
		"database": "haste"
	}
}

Redis

Stores documents in a specified redis database.
Expiration property in config can be changed to a value in seconds after which entries will not be served.

redisOptions object below contains default values, but you can adjust those to match your redis-server configuration. Check documentation for more information about accepted values.

{
	"type": "redis",
	"expire": 0,
	"redisOptions": {
		"host": "127.0.0.1",
		"port": 6379,
		"db": 1
	}
}

RethinkDB

Not rewritten yet, to be filled in