Skip to content

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

License

Notifications You must be signed in to change notification settings

MuWinds/webp_server_go

 
 

Repository files navigation

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

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 supported Safari/Chrome/Firefox on iOS 14/iPadOS 14

Simple Usage Steps(with Binary)

Note: There is a potential memory leak problem with this server and remains unsolved, we recommend using Docker to mitigate this problem. Related discussion: webp-sh#75

1. Prepare the environment

If you are using version after 0.6.0

Install libvips on your machine, more info here

  • Ubuntu apt install libvips-dev
  • macOS brew install vips pkg-config

If you are using version before 0.6.0

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","gif"],
  "ENABLE_AVIF": false,
  "ENABLE_EXTRA_PARAMS": false
}

ENABLE_AVIF means AVIF support, it's disabled by default as converting images to AVIF is CPU consuming.

ENABLE_EXTRA_PARAMS means whether to enable Extra Parameters, basically it allows you to do some transform on images like https://img.webp.sh/path/tsuki.jpg?width=20, you can find more info on Extra Parameters page.

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 https://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 by becoming a sponsor or Stripe

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

License

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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 95.8%
  • Makefile 1.8%
  • Dockerfile 1.7%
  • Shell 0.7%