Installation#

You can install Angie by:

Binary Packages#

To install and update Angie using your distro’s package manager, add and set up the Angie package repository.

Supported Distributions#

Distro

Versions

Architectures

AlmaLinux

9,   8

x86-64, arm64

Alpine

3.19,   3.18,   3.17,   3.16

x86-64, arm64

ALT

10
8

x86-64, arm64
x86-64

Astra SE

4.7
1.7

arm64
x86-64

CentOS

9,   8,   7

x86-64, arm64

Debian

12,   11,   10

x86-64, arm64

FreeBSD

14

x86-64, arm64

FreeBSD

13

x86-64

openSUSE

15

x86-64, arm64

Oracle Linux

9,   8

x86-64, arm64

RED OS

7.3

x86-64, arm64

Rocky Linux

9,   8

x86-64, arm64

ROSA Chrome

12

x86-64, arm64

ROSA Fresh

12

x86-64

Ubuntu

22.04,   20.04

x86-64, arm64

Alma, CentOS, Oracle, RED OS, Rocky, ROSA#

  1. To add the repo, create a file named /etc/yum.repos.d/nginx.repo with the following contents:

    [angie]
    name=Angie repo
    baseurl=https://download.angie.software/angie/almalinux/$releasever/
    gpgcheck=1
    enabled=1
    gpgkey=https://angie.software/keys/angie-signing.gpg.asc
    
  2. Install the Angie package:

    $ sudo yum install -y angie
    
  3. (Optional) Install the dynamic module packages you need:

    $ sudo yum install -y <PACKAGE NAME>
    
  4. Start the service:

    $ sudo systemctl start angie
    
  5. To autostart Angie after server reboot:

    $ sudo systemctl enable angie
    

Alpine#

  1. Install the prerequisites for adding the Angie repo:

    $ sudo apk update
    $ sudo apk add curl ca-certificates
    
  2. Download the public key of the Angie repo for package verification:

    $ sudo curl -o /etc/apk/keys/angie-signing.rsa \
                https://angie.software/keys/angie-signing.rsa
    
  3. Add the Angie repo:

    $ echo "https://download.angie.software/angie/alpine/v$(egrep -o \
           '[0-9]+\.[0-9]+' /etc/alpine-release)/main" \
           | sudo tee -a /etc/apk/repositories > /dev/null
    
  4. Update the repo indexes:

    $ sudo apk update
    
  5. Install the Angie package:

    $ sudo apk add angie
    
  6. (Optional) Install the dynamic module packages you need:

    $ sudo apk add <PACKAGE NAME>
    
  7. Start the service:

    $ sudo service angie start
    
  8. To autostart Angie on server reboot:

    $ sudo rc-update add angie
    

ALT Linux#

  1. Create the /etc/ssl/angie directory:

    $ sudo mkdir -p /etc/ssl/angie/
    
  2. Install the prerequisites for adding the Angie repo:

    $ sudo apt-get update
    $ sudo apt-get install -y curl apt-https
    
  3. Download the public key of the Angie repo for package verification:

    $ sudo curl -o /etc/ssl/angie/angie-signing.gpg \
          https://angie.software/keys/angie-signing.gpg
    
  4. Import the downloaded key into the trusted key ring:

    $ sudo gpg --no-default-keyring \
          --keyring /usr/lib/alt-gpgkeys/pubring.gpg --import /etc/ssl/angie/angie-signing.gpg
    
  5. Save the key’s signature:

    $ echo 'simple-key "angie" {
              Fingerprint "EB8EAF3D4EF1B1ECF34865A2617AB978CB849A76";
              Name "Angie (Signing Key) <devops@tech.wbsrv.ru>";
      }' | sudo tee /etc/apt/vendors.list.d/angie.list > /dev/null
    
  6. Add the Angie repo:

    $ echo "rpm [angie] https://download.angie.software/angie/altlinux/10/ $(uname -m) main" \
        | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
    
  7. Update the repo indexes:

    $ sudo apt-get update
    
  8. Install the Angie package:

    $ sudo apt-get install -y angie
    
  9. (Optional) Install the dynamic module packages you need:

    $ sudo apt-get install -y <PACKAGE NAME>
    
  10. Start the service:

    $ sudo systemctl start angie
    
  11. To autostart Angie on server reboot:

    $ sudo systemctl enable angie
    

Astra SE#

  1. Install the prerequisites for adding the Angie repo:

    $ sudo apt-get update
    $ sudo apt-get install -y ca-certificates curl lsb-release
    
  2. Download the public key of the Angie repo for package verification:

    $ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
                https://angie.software/keys/angie-signing.gpg
    
  3. Add the Angie repo:

    $ echo "deb https://download.angie.software/angie/astra-se/$(egrep -o \
           '[0-9]+.[0-9]+' /etc/astra_version) unstable main" \
           | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
    
  4. Update the repo indexes:

    $ sudo apt-get update
    
  5. (Optional) When running a Closed Software Environment (CSE), install the key package for Angie binary verification:

    $ sudo apt-get install -y angie-digsig-key
    

    Update the CSE:

    $ sudo update-initramfs -uk all
    

    Then restart the server:

    $ sudo shutdown -r now
    
  6. Install the Angie package:

    $ sudo apt-get install -y angie
    
  7. (Optional) Install the dynamic module packages you need:

    $ sudo apt-get install -y <PACKAGE NAME>
    

Debian, Ubuntu#

  1. Install the prerequisites for adding the Angie repo:

    $ sudo apt-get update
    $ sudo apt-get install -y ca-certificates curl lsb-release
    
  2. Download the public key of the Angie repo for package verification:

    $ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
                https://angie.software/keys/angie-signing.gpg
    
  3. Add the Angie repo:

    $ echo "deb https://download.angie.software/angie/debian/ `lsb_release -cs` main" \
           | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
    
  4. Update the repo indexes:

    $ sudo apt-get update
    
  5. Install the Angie package:

    $ sudo apt-get install -y angie
    
  6. (Optional) Install the dynamic module packages you need:

    $ sudo apt-get install -y <PACKAGE NAME>
    

FreeBSD#

  1. To add the Angie repo, create these directories:

    $ sudo mkdir -p /usr/local/etc/pkg/angie/ /usr/local/etc/pkg/repos/
    
  2. To configure the repo, create a file named /usr/local/etc/pkg/repos/angie.conf with the following contents:

    angie: {
       url: "https://download.angie.software/angie/freebsd/${VERSION_MAJOR}/${ARCH}",
       signature_type: "pubkey",
       pubkey: "/usr/local/etc/pkg/angie/angie-signing.rsa",
       enabled: yes
    }
    
  3. Download the public key of the Angie repo for package verification:

    $ sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
                https://angie.software/keys/angie-signing.gpg
    
  4. Update the repo indexes:

    $ sudo pkg update
    
  5. Install the Angie package:

    $ sudo pkg install -y angie
    
  6. (Optional) Install the dynamic module packages you need:

    $ sudo pkg install -y <PACKAGE NAME>
    
  7. Start the service:

    $ sudo service angie start
    
  8. To autostart Angie on server reboot:

    $ sudo sysrc angie_enable=YES
    

openSUSE#

  1. To add the repo, create a file named /etc/zypp/repos.d/angie.repo with the following contents:

    [angie]
    name=Angie repo
    baseurl=https://download.angie.software/angie/opensuse/$releasever_major/
    gpgcheck=1
    enabled=1
    gpgkey=https://angie.software/keys/angie-signing.gpg.asc
    
  2. Update the repo indexes:

    $ sudo zypper refresh
    
  3. Install the Angie package:

    $ sudo zypper install -y angie
    
  4. (Optional) Install the dynamic module packages you need:

    $ sudo zypper install -y <ИМЯ ПАКЕТА>
    
  5. Start the service:

    $ sudo systemctl start angie
    
  6. To autostart Angie after server reboot:

    $ sudo systemctl enable angie
    

Dynamic Modules#

To extend Angie’s basic functionality, you can add a variety of dynamic modules, available as ready-made packages from our repository.

Modules can also be built from source code; compile them against the corresponding Angie version.

Dynamic module packages distributed as part of Angie:

angie-module-image-filter

Adds a filter to transform .jpeg, .gif, .png, and .webp images.

angie-module-njs: http_js_module, stream_js_module

Enable using njs (a JavaScript subset) in Angie configuration in the http and stream contexts, respectively.

angie-module-perl

Enables writing location and variable handlers in Perl, and also invoking Perl from SSI.

angie-module-xslt

Adds a filter to transform XML responses with XSLT stylesheets.

We also build and publish in our repository the following third-party module packages:

angie-module-auth-jwt

Adds client JWT authentication.

angie-module-auth-ldap

Adds support for authentication against multiple LDAP servers.

angie-module-auth-spnego

Adds SPNEGO, GSSAPI support.

angie-module-brotli

Enables Brotli for dynamic and static response compression.

angie-module-cache_purge

Enables purging FastCGI, proxy, SCGI, and uWSGI cache contents.

angie-module-dav-ext

Extends WebDAV method support, adding PROPFIND and OPTIONS.

angie-module-echo

Enables echo, sleep, time, exec, and other shell-style commands in the configuration file.

angie-module-enhanced-memcached

Enhances the capabilities of the built-in http_memcached module.

angie-module-eval

Enables capturing subrequest response bodies in variables.

angie-module-geoip2: http_geoip2, stream_geoip2

Enables geodata lookup in the MaxMind GeoIP2 database.

angie-module-headers-more

Enables setting and clearing input and output headers.

angie-module-keyval

Enables variables created from key-value pairs.

angie-module-lua: http_lua_module, stream_lua_module

Enable using Lua in Angie configuration in the http and stream contexts, respectively.

angie-module-modsecurity

Adds a connector that enables ModSecurity rules.

Note

The package needs extra setup.

angie-module-ndk

Adds Nginx Development Kit (NDK) for module development.

angie-module-opentracing

Adds distributed tracing of Angie requests via OpenTracing; includes data export plugins for Zipkin and DataDog.

angie-module-postgres

Enables direct communication with PostgreSQL databases.

angie-module-redis2

Enables Redis 2.0 for HTTP upstreams.

angie-module-rtmp

Enables RTMP for live streaming and video on demand.

angie-module-set-misc

Adds various set_xxx directives to the rewrite module.

angie-module-subs

Enables regex string substitutions in the HTTP response body.

angie-module-testcookie

Enables robot mitigation using a cookie-based challenge-response mechanism.

angie-module-upload

Adds the multipart/form-data encoding (RFC 1867) for file upload, enabling resumable uploads.

angie-module-vod

Enables repackaging .mp4 files for HLS, HDS, MSS, and DASH streaming.

angie-module-zip

Enables assembling ZIP archives dynamically.

To use an installed module in the configuration, load it with the load_module directive.

Docker Images#

To run Angie in a Docker container, use an image from our registry:

docker.angie.software/angie
docker.angie.software/angie:latest
docker.angie.software/angie:1.4.1
docker.angie.software/angie:1.4.1-alpine
docker.angie.software/angie:1.4.1-centos
docker.angie.software/angie:1.4.1-debian
docker.angie.software/angie:1.4.1-oracle
docker.angie.software/angie:1.4.1-rocky
docker.angie.software/angie:1.4.1-ubuntu

To start a container with Angie at port 8080, enabling read-only access to the /var/www/ static file directory and the angie.conf file in the current working directory:

$ docker run --rm --name angie -v /var/www:/usr/share/angie/html:ro \
    -v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d docker.angie.software/angie:latest

$ curl -I localhost:8080

    HTTP/1.1 200 OK
    Server: Angie/1.4.1
    Date: Thu, 15 Feb 2024 10:42:54 GMT
    Content-Type: text/html
    Content-Length: 543
    Last-Modified: Thu, 15 Feb 2024 09:12:23 GMT
    Connection: keep-alive
    ETag: "64c3ccc7-21f"
    Accept-Ranges: bytes

Setups like this can be used for local development and configuration.

Also, you can build your own image based on a supported distro, adding the Angie layer with packages or source code. A couple of such Dockerfile examples:

Debian, using Angie packages#
FROM debian:12

LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"

ARG DEBIAN_FRONTEND=noninteractive

RUN set -x \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y \
          ca-certificates lsb-release curl \
     && curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
          https://angie.software/keys/angie-signing.gpg \
     && echo "deb https://download.angie.software/angie/debian/ `lsb_release \
           -cs` main" > /etc/apt/sources.list.d/angie.list \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y \
          angie angie-module-geoip2 angie-module-njs \
     && apt-get remove --auto-remove --purge -y lsb-release \
     && rm -Rf /var/lib/apt/lists \
          /etc/apt/sources.list.d/angie.list \
          /etc/apt/trusted.gpg.d/angie-signing.gpg \
     && ln -sf /dev/stdout /var/log/angie/access.log \
     && ln -sf /dev/stderr /var/log/angie/error.log

EXPOSE 80

CMD ["angie", "-g", "daemon off;"]
Alpine, using Angie packages#
FROM alpine:3.19

LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"

RUN set -x \
     && apk add --no-cache ca-certificates curl \
     && curl -o /etc/apk/keys/angie-signing.rsa https://angie.software/keys/angie-signing.rsa \
     && echo "https://download.angie.software/angie/alpine/v$(egrep -o \
          '[0-9]+\.[0-9]+' /etc/alpine-release)/main" >> /etc/apk/repositories \
     && apk add --no-cache angie angie-module-geoip2 angie-module-njs \
     && rm /etc/apk/keys/angie-signing.rsa \
     && ln -sf /dev/stdout /var/log/angie/access.log \
     && ln -sf /dev/stderr /var/log/angie/error.log

EXPOSE 80

CMD ["angie", "-g", "daemon off;"]

To build a myangie image in the Dockerfile’s directory and start a container in the same way as described above:

$ docker build -t myangie .
$ docker run --rm --name myangie -v /var/www:/usr/share/angie/html:ro \
    -v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d myangie