Файлы, S3 и резервные копии
Файлы из чата, аватарки и картинки сервера хранятся на диске сервера или в S3-совместимом хранилище. Клиенты в обоих случаях получают их от самого сервера.
На диске
По умолчанию ("storage": "local") файлы лежат в data/files. Общее место ограничено полем storageMB: когда оно кончается, удаляются самые старые файлы.
В S3
Подходит Amazon S3 и совместимые: MinIO, Yandex Object Storage, Selectel, Cloudflare R2 и другие. Бакет остаётся закрытым: файлы отдаёт сервер, проверяя права, а перемотка аудио и видео работает - сервер запрашивает у S3 нужные куски.
"storage": "s3",
"s3": {
"endpoint": "storage.yandexcloud.net",
"region": "ru-central1",
"bucket": "my-avoice",
"prefix": "avoice/",
"accessKey": "…",
"secretKey": "…",
"pathStyle": false
}
endpoint- адрес хранилища; можно сhttps://.prefix- папка внутри бакета, если бакет общий с чем-то ещё.pathStyle: true- для MinIO и похожих (адреса видаhost/bucket).- Бакет должен существовать - иначе сервер не запустится и напишет почему.
Мастер настройки спрашивает про хранилище сам и сразу проверяет подключение.
Уже загруженные файлы переносятся одной командой после настройки s3:
./avoice-server-linux-amd64 migrate-storage
Папку data/files удалите сами, когда убедитесь, что всё открывается.
Резервные копии
-
Каждый день сервер сам кладёт копию базы в
data/backups/- без остановки,VACUUM INTO. ХранитсяbackupDaysдней (по умолчанию 7). -
Вручную - копия базы,
config.jsonи сертификата:./avoice-server-linux-amd64 backup ./avoice-server-linux-amd64 backup /mnt/backups/avoice
Файлы из чата в копию не входят: при хранении на диске копируйте data/files обычным способом, в S3 - пользуйтесь средствами хранилища (версии, репликация).
Перенести сервер на другую машину
Скопируйте папку сервера целиком - программу, config.json и data/ - и запустите на новом месте. Сертификат переедет вместе с data/, поэтому клиентам не придётся подтверждать его заново. Если поменялся адрес, раздайте новый.