0
0
Fork 0
mirror of https://codeberg.org/forgejo/docs.git synced 2024-12-25 22:40:42 -05:00
forgejo-docs/docs/admin/storage.md
2023-08-15 00:19:15 +01:00

4.3 KiB

title license
Storage settings CC-BY-SA-4.0

The storage for each subsystem is defined in app.ini. It can either be on disk (local) or using a MinIO server (minio). The default is local storage, using the following hierarchy under the APP_DATA_PATH directory:

subsystem default base path app.ini sections
Attachments attachments/ [attachment]
LFS lfs/ [lfs]
Avatars avatars/ [avatar]
Repository avatars repo-avatars/ [repo-avatar]
Repository archives repo-archive/ [repo-archive]
Packages packages/ [packages]
Actions logs actions_log/ [storage.actions_log]
Actions Artifacts actions_artifacts/ [actions.artifacts]

For instance if APP_DATA_PATH was /appdata, the default directory to store attachments will be /appdata/attachments.

Overriding the defaults

These defaults can be modified for all subsystems in the [storage] section. For instance setting:

[storage]
PATH = /mystorage

will change the default for storing attachments to /mystorage/attachments. It is also possible to change these settings for each subsystem in their dedicated section. For instance:

[storage]
PATH = /mystorage

[attachment]
PATH = /otherstorage/attachments

will store attachments in /otherstorage/attachments while lfs files will be stored in /mystorage/lfs.

Storage type

The value of STORAGE_TYPE can be local (the default) or minio. For instance:

[storage]
STORAGE_TYPE = minio

will use minio for all subsystems (Attachments, LFS, etc.) instead of storing them on disk. Each storage type has its own settings, as explained below.

local storage

There is just one setting when the STORAGE_TYPE is set to local, PATH. It must be an absolute path and is interpreted as follows.

In the [storage] section, PATH is the directory under which the default base path of each subsystem will be created instead of APP_DATA_PATH. For instance, if APP_DATA_PATH equals /appdata:

[storage]
STORAGE_TYPE = local
PATH = /mystorage

Will create attachments in /mystorage/attachments instead of /appdata/attachments, LFS files in /mystorage/lfs instead of /appdata/lfs, etc.

In the section dedicated to a subsystem (see the table above), PATH is the base path under which all files will be stored. For instance:

[storage]
STORAGE_TYPE = local
PATH = /mystorage

[attachment]
STORAGE_TYPE = local
PATH = /otherstorage/attachments

will store attachments in /otherstorage/attachments while lfs files will be stored in /mystorage/lfs.

minio storage

When the STORAGE_TYPE is set to minio, the settings available in all sections ([storage] and [XXXX]) are:

  • SERVE_DIRECT: false: Allows the storage driver to redirect to authenticated URLs to serve files directly. Only supported via signed URLs.
  • MINIO_ENDPOINT: localhost:9000: Minio endpoint to connect.
  • MINIO_ACCESS_KEY_ID: Minio accessKeyID to connect.
  • MINIO_SECRET_ACCESS_KEY: Minio secretAccessKey to connect.
  • MINIO_BUCKET: gitea: Minio bucket to store the data.
  • MINIO_LOCATION: us-east-1: Minio location to create bucket.
  • MINIO_USE_SSL: false: Minio enabled ssl.
  • MINIO_INSECURE_SKIP_VERIFY: false: Minio skip SSL verification.

One setting is only available in the [XXXX] sections:

  • MINIO_BASE_PATH: defaults to the default base path of the XXXX subsystem (see the table above) and is a relative path within the MinIO bucket defined by MINIO_BUCKET.

Sections precedence

The sections in which a setting is found have the following priority:

  • [XXXX] has precedence
  • [storage] is the default

For instance:

[storage]
PATH = /default

[attachment]
PATH = /first

Will set the value of PATH for attachments to /first.

Undocumented features

It is strongly recommended to avoid using undocumented features - such as [storage.attachments] as an alternative to [attachment] for instance (the plural is not a typo, it is a unification problem) - because their behavior is not thoroughly tested and may lead to unexpected results.