⚠️ CRITICAL WARNING: UNMAINTAINED PROJECT
Cherokee is no longer actively developed (last release: December 2013). Cherokee packages are NOT available in modern Linux repositories:
- Not in Debian 12+ (Bookworm, Trixie)
- Not in Ubuntu 22.04+ or 24.04
- Not in RHEL 8/9 or Fedora 38+
- PPA
ppa:cherokee-webserveris unmaintained (last update: 2016)This playbook builds Cherokee from source. For new deployments, consider Nginx, Caddy, or Apache.
- name: Install Cherokee from source
hosts: cherokee
become: true
vars:
cherokee_version: "1.2.103"
cherokee_src_dir: "/usr/local/src/cherokee"
cherokee_install_dir: "/usr"
cherokee_config_dir: "/etc/cherokee"
cherokee_data_dir: "/var/lib/cherokee"
cherokee_log_dir: "/var/log/cherokee"
tasks:
- name: Warn about unmaintained project
ansible.builtin.debug:
msg: |
⚠️ CHEROKEE IS UNMAINTAINED (last release: December 2013)
- Known OpenSSL 3 incompatibility
- Requires Python 2.7 (EOL)
- Build may fail on modern systems
- Consider Nginx, Caddy, or Apache for new deployments
- name: Install build dependencies (Debian/Ubuntu)
ansible.builtin.apt:
name:
- build-essential
- libtool
- libssl-dev
- libpcre3-dev
- zlib1g-dev
- python2.7
- git
state: present
update_cache: true
when: ansible_os_family == "Debian"
failed_when: false
register: apt_result
- name: Install build dependencies (RHEL family)
ansible.builtin.dnf:
name:
- gcc
- make
- libtool
- openssl-devel
- pcre-devel
- zlib-devel
- git
state: present
when: ansible_os_family == "RedHat"
failed_when: false
- name: Clone Cherokee source repository
ansible.builtin.git:
repo: "https://github.com/cherokee/webserver.git"
dest: "{{ cherokee_src_dir }}"
version: "master"
register: git_result
failed_when: false
- name: Configure Cherokee build
ansible.builtin.command:
cmd: "./configure --prefix={{ cherokee_install_dir }} --localstatedir={{ cherokee_data_dir }} --sysconfdir=/etc"
chdir: "{{ cherokee_src_dir }}"
register: configure_result
failed_when: false
changed_when: configure_result.rc == 0
- name: Build Cherokee
ansible.builtin.command:
cmd: "make"
chdir: "{{ cherokee_src_dir }}"
register: make_result
failed_when: false
changed_when: make_result.rc == 0
- name: Install Cherokee
ansible.builtin.command:
cmd: "make install"
chdir: "{{ cherokee_src_dir }}"
become: true
register: install_result
failed_when: false
changed_when: install_result.rc == 0
- name: Create configuration directory
ansible.builtin.file:
path: "{{ cherokee_config_dir }}"
state: directory
mode: "0755"
owner: root
group: root
- name: Create data directory
ansible.builtin.file:
path: "{{ cherokee_data_dir }}"
state: directory
mode: "0755"
owner: www-data
group: www-data
when: ansible_os_family == "Debian"
- name: Create log directory
ansible.builtin.file:
path: "{{ cherokee_log_dir }}"
state: directory
mode: "0755"
owner: www-data
group: adm
when: ansible_os_family == "Debian"
- name: Verify binary installation
ansible.builtin.command: "cherokee --version"
register: cherokee_version_check
changed_when: false
failed_when: false
- name: Display installation status
ansible.builtin.debug:
msg: >
Cherokee installation {{ 'SUCCEEDED' if cherokee_version_check.rc == 0 else 'FAILED' }}.
{{ cherokee_version_check.stdout | default('Build/install failed - check logs') }}
- name: Show build failure notice
ansible.builtin.debug:
msg: |
⚠️ BUILD MAY HAVE FAILED DUE TO:
- OpenSSL 3 incompatibility (requires OpenSSL 1.x)
- Python 2.7 unavailability
- Missing dependencies
Consider using the community Docker image instead:
ghcr.io/managedkaos/cherokee:main
when: cherokee_version_check.rc != 0
For modern systems where source build fails, use Docker:
- name: Deploy Cherokee via Docker
hosts: cherokee
become: true
vars:
cherokee_compose_dir: "/opt/cherokee"
tasks:
- name: Install Docker dependencies
ansible.builtin.package:
name:
- docker-ce
- docker-compose-plugin
state: present
- name: Create Cherokee compose directory
ansible.builtin.file:
path: "{{ cherokee_compose_dir }}"
state: directory
mode: "0755"
- name: Deploy Docker Compose file
ansible.builtin.copy:
dest: "{{ cherokee_compose_dir }}/docker-compose.yml"
mode: "0644"
content: |
services:
cherokee:
image: ghcr.io/managedkaos/cherokee:main
ports:
- "80:80"
- "443:443"
- "9090:9090"
volumes:
- ./config:/etc/cherokee
- ./www:/var/www
restart: unless-stopped
- name: Start Cherokee container
ansible.builtin.command: "docker compose up -d"
args:
chdir: "{{ cherokee_compose_dir }}"
register: compose_result
changed_when: "'Started' in compose_result.stdout or 'created' in compose_result.stdout"
ghcr.io/managedkaos/cherokee:main is the only viable option for modern systems.cherokee-admin -bhttp://SERVER_IP:9090⚠️ Security Warning: Cherokee has unresolved security vulnerabilities.
See Cherokee Security and Cherokee Hardening.
We develop tailored automation solutions for:
Let’s discuss your requirements: office@linux-server-admin.com | Contact