- Notifications
You must be signed in to change notification settings - Fork179
Go version of WebP Server. A tool that will serve your JPG/PNG/BMP/SVGs as WebP/AVIF format with compression, on-the-fly.
License
webp-sh/webp_server_go
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 asimage/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.
We strongly recommend using Docker to run WebP Server Go because running it directly with the binary may encounter issues withglibc
and some dependency libraries, which can be quite tricky to resolve.
Make sure you've got Docker anddocker-compose
installed, create a directory and createdocker-compose.yml
file inside it like this:
version:'3'services:webp:image:webpsh/webp-server-go# image: ghcr.io/webp-sh/webp_server_gorestart:alwaysvolumes: -./path/to/pics:/opt/pics -./exhaust:/opt/exhaust -./metadata:/opt/metadataports: -127.0.0.1:3333:3333
Suppose your website and image has the following pattern.
Image Path | Website Path |
---|---|
/var/www/img.webp.sh/path/tsuki.jpg | https://img.webp.sh/path/tsuki.jpg |
Then
./path/to/pics
should be changed to/var/www/img.webp.sh
./exhaust
is cache folder for output images, by default it will be inexhaust
directory alongside withdocker-compose.yml
file, if you'd like to keep cached images in another folder, you can change./exhaust
to/some/other/path/to/exhaust
./metadata
is cache folder for images' metadata, by default it will be inmetadata
directory alongside withdocker-compose.yml
file
Start the container using:
docker-compose up -d
Now the server should be running on127.0.0.1:3333
, visitinghttp://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 toproxy_pass http://127.0.0.1:3333/;
, and your WebP Server is on-the-fly!
If you'd like to use a customizedconfig.json
, you can follow the steps inConfiguration | WebP Server Documentation to genereate one, and mount it into the container's/etc/config.json
, exampledocker-compose.yml
as follows:
version:'3'services:webp:image:webpsh/webp-server-go# image: ghcr.io/webp-sh/webp_server_gorestart:alwaysvolumes: -./path/to/pics:/opt/pics -./path/to/exhaust:/opt/exhaust -./path/to/metadata:/opt/metadata -./config.json:/etc/config.jsonports: -127.0.0.1:3333:3333
You can refer toConfiguration | WebP Server Documentation for more info, such as custom config, AVIF support etc.
If you'd like to use with binary, please consult toUse with Binary(Advanced) | WebP Server Documentation
spoiler alert: you may encounter issues with
glibc
and some dependency libraries.
Forsupervisor
or detailed Nginx configuration, please read our documentation athttps://docs.webp.sh/
We are currently building a new service calledWebP Cloud Services, it now has three parts:
- Public Service
- GitHub Avatar/Gravater reverse proxy with WebP optimization, for example, change
https://www.gravatar.com/avatar/09eba3a443a7ea91cf818f6b27607d66
tohttps://gravatar.webp.se/avatar/09eba3a443a7ea91cf818f6b27607d66
for rendering will get a smaller version of gravater, making your website faster - Totally free service and currently has a large number of users, this includes, but is not limited toCNX Software,Indienova
- GitHub Avatar/Gravater reverse proxy with WebP optimization, for example, change
- WebP Cloud
- No need to install WebP Server Go yourself, especially suitable for static websites.
- Image Conversion: WebP Cloud converts images to WebP/AVIF format, reducing size while maintaining quality for faster website loading.
- Example 1: Original image URL (https://yyets.dmesg.app/api/user/avatar/BennyThink) becomes compressed URL (https://vz4w427.webp.ee/api/user/avatar/Benny).
- Example 2: Original image URL (https://yyets.dmesg.app/api/user/avatar/BennyThink) becomes a thumbnail image using URL (https://vz4w427.webp.ee/api/user/avatar/BennyThink?width=200).
- Caching: WebP Cloud automatically caches served images, reducing traffic and bandwidth load on the origin server.
- Fly
We call this service Fly, with the aim of providing a public and free service that users can experience without registering on WebP Cloud.As this is a public service, some limitations compared to WebP Cloud are imposed:
- Fly supports a maximum original image size of 8MB, while WebP Cloud supports up to 80MB.
- Fly cache time is 1 day, while WebP Cloud has unlimited time (can be manually cleared at any time).
- It does not support parameters like
blur
,sharpen
for image processing. - And that’s it.
For detailed information, please visitWebP Cloud Services Website orWebP Cloud Services Docs.
If you find this project useful, please consider supportingus bybecoming a sponsor, pay via Stripe, ortry 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) |
---|---|---|
USD | EUR | CNY |
![]() | ![]() | ![]() |
WebP Server is under the GPLv3. See theLICENSE file for details.
About
Go version of WebP Server. A tool that will serve your JPG/PNG/BMP/SVGs as WebP/AVIF format with compression, on-the-fly.