A blazing fast API for Minecraft faces

jomo 14cbcae60c bump version to 2.1.2 5 tahun lalu
images 47a978df6c add image dir to git 9 tahun lalu
lib eae7745758 add Content-Length, fixes #238 5 tahun lalu
test 7f95a34e29 simplify http status codes, update website info 5 tahun lalu
.buildpacks 2873157e97 Add 3d render support 10 tahun lalu
.editorconfig 16fdf8d1ac add editorconfig for .gitignore 10 tahun lalu
.gitignore d967db3ad4 use environment variables for configuration 5 tahun lalu
.travis.yml 8e08e02272 update .travis.yml, package.json and LICENSE 5 tahun lalu
CONTRIBUTING.md 8750b863a8 contributing: add tests for fixed issues 10 tahun lalu
Dockerfile d967db3ad4 use environment variables for configuration 5 tahun lalu
LICENSE 8e08e02272 update .travis.yml, package.json and LICENSE 5 tahun lalu
Procfile 5f0a3dcb63 use postinstall script instead of Procfile 10 tahun lalu
README.md d967db3ad4 use environment variables for configuration 5 tahun lalu
app.json fe12901f41 update app.json 9 tahun lalu
config.js 7f95a34e29 simplify http status codes, update website info 5 tahun lalu
package-lock.json 14cbcae60c bump version to 2.1.2 5 tahun lalu
package.json 14cbcae60c bump version to 2.1.2 5 tahun lalu
www.js 15a4f17560 add rate limit option for sessionserver 5 tahun lalu

README.md

Crafatar travis Coverage Status Code Climate

dependency status devDependency status docs status

logo Crafatar serves Minecraft avatars based on the skin for use in external applications. Inspired by Gravatar (hence the name) and Minotar.

Image manipulation is done by lwip. 3D renders are created with node-canvas / cairo.

Contributions welcome!

There are usually a few open issues.
We welcome any opinions or advice in discussions as well as pull requests.
Issues tagged with help wanted show where we could especially need your help!

Examples

jomo's avatar Jake_0's avatar Notch's avatar sk89q's avatar
jomo's 3d head Jake_0's 3d head Notch's 3d head sk89q's 3d head
jomo's 3d body Jake_0's 3d body Notch's 3d body sk89q's 3d body
jomo's skin Jake_0's skin Notch's skin sk89q's skin

Usage / Documentation

Please visit the website for details.

Contact

Installation

Manual

  • Install nodejs 12 (LTS)
  • Install redis-server
  • Run npm install
    If that fails, it's likely because because of node-canvas dependencies. Follow this guide to install them.
  • Run npm start

Crafatar is now available at http://0.0.0.0:3000.

Docker

docker pull crafatar/crafatar
docker network create crafatar
docker run --net crafatar -d --name redis redis
docker run --net crafatar -v crafatar-images:/crafatar/images -e REDIS_URL=redis://redis -p 3000:3000 crafatar/crafatar

Configration / Environment variables

See the config.js file.

Operational notes

inodes

Crafatar stores a lot of images on disk. For avatars, these are 8×8 px PNG images with an average file size of ~90 bytes. This can lead to issues on file systems such as ext4, which (by default) has a bytes-per-inode ratio of 16Kb. With thousands of files with an average file size below this ratio, you will run out of available inodes before running out of disk space. (Note that this will still be reported as ENOSPC: no space left on device).

Consider using a different file system, changing the inode ratio, or deleting files before the inode limit is reached.

disk space and memory usage

Eventually you will run out of disk space and/or redis will be out of memory. Make sure to delete image files and/or flush redis before this happens.

Tests

npm test

If you want to debug failing tests:

# show logs during tests
env VERBOSE_TEST=true npm test

It can be helpful to monitor redis commands to debug caching errors:

redis-cli monitor