Home

Awesome

<p align="center"> <img src="./pics/webp_server.png"/> </p>

CI build docker image Release WebP Server Go Binaries codecov Docker Pulls

Documentation | Website | Blog

This is a Server based on Golang, which allows you to serve WebP images on the fly.

Currently supported image format: JPEG, PNG, BMP, GIF, SVG, HEIC, NEF, WEBP

e.g When you visit https://your.website/pics/tsuki.jpg,it will serve as image/webp/image/avif format without changing the URL.

GIF image will not be converted to AVIF format because the converted AVIF image is not animated.

Usage with Docker(recommended)

We strongly recommend using Docker to run WebP Server Go because running it directly with the binary may encounter issues with glibc and some dependency libraries, which can be quite tricky to resolve.

Make sure you've got Docker and docker-compose installed, create a directory and create docker-compose.yml file inside it like this:

version: '3'

services:
  webp:
    image: webpsh/webp-server-go
    # image: ghcr.io/webp-sh/webp_server_go
    restart: always
    volumes:
      - ./path/to/pics:/opt/pics
      - ./exhaust:/opt/exhaust
      - ./metadata:/opt/metadata
    ports:
      -  127.0.0.1:3333:3333

Suppose your website and image has the following pattern.

Image PathWebsite Path
/var/www/img.webp.sh/path/tsuki.jpghttps://img.webp.sh/path/tsuki.jpg

Then

Start the container using:

docker-compose up -d

Now the server should be running on 127.0.0.1:3333, visiting http://127.0.0.1:3333/path/tsuki.jpg will see the optimized version of /var/www/img.webp.sh/path/tsuki.jpg, you can now add reverse proxy to make it public, for example, let Nginx to proxy_pass http://127.0.0.1:3333/;, and your WebP Server is on-the-fly!

Custom config

If you'd like to use a customized config.json, you can follow the steps in Configuration | WebP Server Documentation to genereate one, and mount it into the container's /etc/config.json, example docker-compose.yml as follows:

version: '3'

services:
  webp:
    image: webpsh/webp-server-go
    # image: ghcr.io/webp-sh/webp_server_go
    restart: always
    volumes:
      - ./path/to/pics:/opt/pics
      - ./path/to/exhaust:/opt/exhaust
      - ./path/to/metadata:/opt/metadata
      - ./config.json:/etc/config.json
    ports:
      -  127.0.0.1:3333:3333

You can refer to Configuration | WebP Server Documentation for more info, such as custom config, AVIF support etc.

Advanced Usage

If you'd like to use with binary, please consult to Use with Binary(Advanced) | WebP Server Documentation

spoiler alert: you may encounter issues with glibc and some dependency libraries.

For supervisor or detailed Nginx configuration, please read our documentation at https://docs.webp.sh/

WebP Cloud Services

We are currently building a new service called WebP Cloud Services, it now has three parts:

For detailed information, please visit WebP Cloud Services Website or WebP Cloud Services Docs.

Support us

If you find this project useful, please consider supporting us by becoming a sponsor, pay via Stripe, or try out our WebP Cloud!

USD(Card, Apple Pay and Google Pay)EUR(Card, Apple Pay and Google Pay)CNY(Card, Apple Pay, Google Pay and Alipay)
USDEURCNY

License

WebP Server is under the GPLv3. See the LICENSE file for details.