# mStore - multifunсtion Storage

Under contruction.

With the application you can store and share
- Any blobs
- Helm charts
- OCI images

## Copyright EN

Copyright 2026 Oleg Borodin <onborodin@gmail.com>

This work is published and licensed under a Creative CommonsAttribution-NonCommercial-ShareAlike 4.0 International License.

* Attribution — You must give appropriate credit,
 provide a link to the license, and indicate if changes
 were made. You may do so in any reasonable manner,
 but not in any way that suggests the licensor endorses
 you or your use.

* NonCommercial — You may not use the material for commercial purposes.

* ShareAlike — If you remix, transform, or build upon the material,
 you must distribute your contributions under the same license
 as the original.

Distribution of this work is permitted, but commercial usu are
strictly prohibited.

## Copyright RU

Права на данное произведение принадлежат Олег Бородин <onborodin@gmail.com> 2026

Это произведение распространяется под лицензией Creative Commons
Attribution-NonCommercial-NoDerivatives 4.0 International License

Разрешается распространение, при условии указания автора, произведенных изменений
и сохранении лицензии, но запрещаются коммерческое использование
данного произведения.

Вы можете свободно делиться, то есть копировать, распространять и передавать
другим лицам данное произведение при обязательном соблюдении следующих условий:

* Атрибуция: Вы должны атрибутировать произведение (указывать автора и источник)
в порядке, предусмотренном автором или лицензиаром.

* Некоммерческое использование: Вы не можете использовать это произведение
в коммерческих целях, в целях получения выгоды или оплаты.

* Распостранять аналогично: Если вы перерабатываете, преобразуете или
создаете производные произведения на основе данного материала,
вы должны распространять свои результаты на условиях той же лицензии,
что и оригинал.


## Инсталяция

```
$ ./configure --prefix=/usr
$ make
$ sudo make install
$ sudo systemctl daemon-reload
$ sudo systemctl enable mstored
$ sudo systemctl start mstored
```

В процессе первого запуска будут инициализирована sqlite база данных
и создан начальный пользователь mstore с паролем mstore, и с полным
набором прав.

Также будет создан необходимый для работы пользователь anonymous,
от имени которого будут осуществлятся операции,
если не указан какой-либо пользователь явно.

По умолчанию сервис запускается на порту 443. Если вы желаете запустить сервис
на ином порту, вы можете указать его указать в конфигурационном файле
/etc/mstore/mstored.yaml

```
service:
    port: 8080
```


## Операции с образами контейнеров.

Данный реестр поддерживает работу с OCI архивами образов, а также
фактически аналогичными им архивами Docker Image Spec V2.

Работа c docker архивами V1 не поддерживается.

### Загрузка образа контейнера

Клиентская утилита mstorectl имеет возможности выгрузить образ контейнера с OCI реестра,
а также загрузить его в таковой реестр.

Копирование в локальный реестр осуществляется последовательной выгрузкой из стороннего реестра в
архив образа и загрузкой в локальный реестр по необходимому пути.

По умолчанию порт 443, если он иной, то необходимо указать его явно.

```
$ mstorectl image pull registry.k8s.io/pause:3.10.1 pause-3.10.1.tar
---
error: false
result:
  filepath: pause-3.10.1.img
  size: 323,072

$ mstorectl image push pause-3.10.1.tar mstore:mstore@localhost:443/pause:v3.10.1
---
error: false
result: {}
```

Если компонент образа уже существует по его пути, то он загружен не будет.

### Удаление образа контейнера

Если компоненты образа не используются в каком-либо ином образе по данному пути, то
они будут удалены.

```
$ mstorectl image delete mstore:mstore@localhost:443/pause:v3.10.1
```

### Просмотр имеющихся репозиториев в реестре

```
# mstorectl image catalog localhost
---
error: false
result:
  repositories:
  - coredns
  - etcd
  - kube-apiserver
  - kube-controller-manager
  - kube-proxy
  - kube-scheduler
  - mstore/mstore
  - pause
  - toolbox

```

### Просмотр имеющихся тегов репозитария

```
$ mstorectl image tags localhost:443/pause
---
error: false
result:
  imageTags:
    name: pause
    tags:
    - 3.10.1
```

### Проверка репозитариев на корректность и целостность

Проверка целостности при наличии большого количества образов
может занимать некоторое время. Доступ к загрузке и выгрузке компонено образа
на данное время будет заблокирован.

Образы контейнеров с некорректными компонентами (отсутствующими
или с несовпадающей контрольной суммой) будут удалены полностью
и выведены в результирующий список.

```
$ mstorectl images check mstore:mstore@localhost:443
---
error: false
result:
  repos: []

```

