- It is open source (MIT license)
- It is horizontally scalable, you can add servers easily
- It is written in reactive Java (using Vert.x)
- It supports
- It is database-free
- It can host the data in the file system,
HuaweiCloud OBS etc.
- Its quality of Java code is extraordinary high 🙂
The fastest way to start using Artipie is via
create a new directory
repo sub-directory inside it. Then, put your
YAML config file into the
repo sub-dir. Make sure that the name of your config file
is the name of repository you are going to host, and its name matches
repo: type: maven storage: type: fs path: /var/artipie
Now, go back to
artipie and start the container:
$ docker run -p 8080:80 artipie/artipie:latest
You should be able to use it with Maven
More examples are here.
We recommend you read the “Architecture” section in our
White Paper to fully
understand how Artipie is designed.
For now, we support two storage types: file system and S3 storages.
To configure file system storage it is enough to set the path where Artipie will store all the items:
storage: type: fs path: /urs/local/aripie/data
S3 storage configuration requires specifying
storage: type: s3 bucket: my-bucket region: my-region # optional endpoint: https://my-s3-provider.com # optional credentials: type: basic accessKeyId: xxx secretAccessKey: xxx
Storages can be configured for each repository individually in repo configuration yaml or in
_storages.yaml file along with aliases:
storages: default: type: fs path: ./.storage/data
default storage alias can be used to configure a repository:
repo: type: maven storage: default
Permissions for repository operations can be granted in the repo configuration file:
repo: ... permissions: jane: - read - write admin: - "*" /readers: - read
All repositories support
write operations, other specific permissions may be supported
in certain repository types.
Group names should start with
/, is the example above
read operation is granted for
and every user within the group can read from the repository, user named
jane is allowed to
We also support asterisk wildcard for “any operation” or “any user”, user
admin in the example
can perform any operation in the repository.
permissions section is absent in repo config, then any supported operation is allowed for everyone,
permissions section restricts any operations for anyone.
You may want to run Artipie for your company, which has a few teams.
Each team may want to have its own repository. To do this, you create
a global configuration file
meta: layout: org storage: type: fs path: /tmp/artipie/data/my-docker credentials: type: file path: _credentials.yml
type is set to
file, another YAML file is required in the storage, with
a list of users who will be allowed to create repos
type is password format,
sha256 types are supported):
credentials: jane: type: plain pass: qwerty email: firstname.lastname@example.org # Optional john: type: sha256 pass: xxxxxxxxxxxxxxxxxxxxxxx groups: # Optional - readers - dev-leads
Users can be assigned to some groups, all repository permissions granted to the group are applied
to the users participating in this group.
type is set to
env, the following environment variables are expected:
ARTIPIE_USER_PASS. For example, you start
Docker container with the
docker run -d -v /var/artipie:/var/artipie` -p 80:80 -e ARTIPIE_USER_NAME=artipie -e ARTIPIE_USER_PASS=qwerty artipie/artipie:latest
Single repository on port
Artipie repositories may run on separate ports if configured.
This feature may be especially useful for Docker repository,
as it’s API is not well suited to serve multiple repositories on single port.
To run repository on its own port
port parameter should be specified in repository configuration YAML as follows:
port: 54321 ...
NOTE: Artipie scans repositories for port configuration only on start,
so server requires restart in order to apply changes made in runtime.
You may enable some basic metrics collecting and periodic publishing to application log
meta section of global configuration file
meta: metrics: type: log # Metrics type, for now only `log` type is supported interval: 5 # Publishing interval in seconds, default value is 5
Artipie REST API
Artipie provides a set of APIs to manage repositories and users. The current APIs are fully documented here.
You may want configure it via environment variables:
SSL_TRUSTALL– trust all unknown certificates
Thanks to FreePik for the logo.