/webp_server_go

Go version of WebP Server. A tool that will serve your JPG/PNGs as WebP format with compression, on-the-fly.

Primary LanguageGoGNU General Public License v3.0GPL-3.0

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

Documentation | Website

This is a Server based on Golang, which allows you to serve WebP images on the fly. It will convert jpg,jpeg,png files by default, this can be customized by editing the config.json..

  • currently supported image format: JPEG, PNG, BMP, GIF(static image for now)

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

For Safari and Opera users, the original image will be used. We've now support Safari/Chrome/Firefox on iOS 14/iPadOS 14

Simple Usage Steps(with Binary)

1. Prepare the environment

If you'd like to run binary directly on your machine, you need to install libaom:

libaom is for AVIF support, you can install it by apt install libaom-dev on Ubuntu, yum install libaom-devel on CentOS.

Without this library, you may encounter error like this: libaom.so.3: cannot open shared object file: No such file or directory

If you are using Intel Mac, you can install it by brew install aom

If you are using Apple Silicon, you need to brew install aom && export CPATH=/opt/homebrew/opt/aom/include/;LIBRARY_PATH=/opt/homebrew/opt/aom/lib/, more references can be found at 在M1 Mac下开发WebP Server Go | 土豆不好吃.

If you don't like to hassle around with your system, so do us, why not have a try using Docker? >> Docker | WebP Server Documentation

2. Download the binary

Download the webp-server-linux-amd64 from Releases page.

3. Dump config file

./webp-server-linux-amd64 -dump-config > config.json

The default config.json may look like this.

{
  "HOST": "127.0.0.1",
  "PORT": "3333",
  "QUALITY": "80",
  "IMG_PATH": "/path/to/pics",
  "EXHAUST_PATH": "/path/to/exhaust",
  "ALLOWED_TYPES": ["jpg","png","jpeg","bmp"],
  "ENABLE_AVIF": false
}

AVIF support is disabled by default as converting images to AVIF is CPU consuming.

Config Example

In the following example, the image path and website URL.

Image Path Website Path
/var/www/img.webp.sh/path/tsuki.jpg https://img.webp.sh/path/tsuki.jpg

The IMG_PATH inside config.json should be like:

IMG_PATH
/var/www/img.webp.sh

EXHAUST_PATH is cache folder for output webp images, with EXHAUST_PATH set to /var/cache/webp in the example above, your webp image will be saved at /var/cache/webp/pics/tsuki.jpg.1582558990.webp.

3. Run

./webp-server-linux-amd64 --config=/path/to/config.json

4. Nginx proxy_pass

Let Nginx to proxy_pass http://localhost:3333/;, and your WebP Server is on-the-fly.

Advanced Usage

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

Support us

If you find this project useful, please consider supporting us becoming a sponsor or using Stripe

USD(Card, Apple Pay and Google Pay) SEK(Card, Apple Pay and Google Pay) CNY(Card, Apple Pay, Google Pay and Alipay)
USD SEK CNY

License

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