How to install zammad on almalinux vpsThis article provides a guide on how to install Zammad on AlmaLinux VPS.

If you’re looking to run a robust open-source helpdesk on your AlmaLinux VPS, Zammad is a great pick. It’s modern, feature-packed, and supports everything from ticketing to chat and reporting. This guide will walk you through installing Zammad step by step.

What is Zammad?

Zammad is an open-source helpdesk and customer support system designed to help teams manage communication with customers across multiple channels. It provides a central place for handling tickets, emails, chats, phone calls, social media messages (like Twitter and Facebook), and more.

Key Features of Zammad:

  • Ticketing System: Centralized management of support requests (tickets).
  • Multi-Channel Support: Integrates with email, web forms, chat, Twitter, Facebook, and phone systems.
  • User Roles & Permissions: Granular control over what users and agents can access.
  • Full-Text Search: Fast and intuitive search across all tickets and customer data.
  • Knowledge Base: Built-in self-service portal to reduce repetitive tickets.
  • Time Tracking: Keep track of how much time is spent on tickets.
  • API Access: REST API for integrations and automations.
  • Modern UI: Built with a responsive, user-friendly interface.
  • Self-hosted or Cloud: Available as a self-hosted app (great for privacy) or through Zammad’s cloud offering.

Ideal Use Cases:

  • IT support desks
  • Customer service teams
  • Managed service providers
  • Web hosting companies
  • Any business needing structured support workflows

🛠️ Requirements

Before you begin, make sure you have:

  • AlmaLinux 8 or AlmaLinux 9 VPS
  • Root or sudo access
  • At least 2 GB RAM (4 GB+ recommended)
  • A domain name (optional, but useful for production)
  • SELinux disabled or in permissive mode (Zammad doesn’t play nice with enforcing mode)

Launch 100% ssd almalinux vps from $2. 49/mo!

How to Install Zammad on AlmaLinux VPS

To install Zammad on AlmaLinux VPS, follow the steps below:

  1. Update the System

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo dnf update -y sudo dnf install epel-release nano -y sudo dnf install imlib2 -y
    sudo dnf update -y sudo dnf install epel-release nano -y sudo dnf install imlib2 -y
    sudo dnf update -y sudo dnf install epel-release nano -y sudo dnf install imlib2 -y
  2. Set Hostname (Optional but Recommended)

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    hostnamectl set-hostname support.yourdomain.com
    hostnamectl set-hostname support.yourdomain.com
    hostnamectl set-hostname support.yourdomain.com

    Add your IP and hostname to /etc/hosts:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo nano /etc/hosts
    sudo nano /etc/hosts
    sudo nano /etc/hosts

    Example entry:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    127.0.0.1 support.yourdomain.com support
    127.0.0.1 support.yourdomain.com support
    127.0.0.1 support.yourdomain.com support
  3. Disable SELinux (or set to permissive)

    Check status:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sestatus
    sestatus
    sestatus

    If enforcing, set to permissive:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo setenforce 0
    sudo setenforce 0
    sudo setenforce 0

    To make it permanent:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo nano /etc/selinux/config
    sudo nano /etc/selinux/config
    sudo nano /etc/selinux/config

    Change:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    SELINUX=permissive
    SELINUX=permissive
    SELINUX=permissive

    Reboot if needed.

  4. Add Dependencies

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo dnf install postgresql nginx nodejs redis memcached sqlite-devel libyaml libyaml-devel -y curl -fsSL https://get.pnpm.io/install.sh | sh -
    sudo dnf install postgresql nginx nodejs redis memcached sqlite-devel libyaml libyaml-devel -y curl -fsSL https://get.pnpm.io/install.sh | sh -
    sudo dnf install postgresql nginx nodejs redis memcached sqlite-devel libyaml libyaml-devel -y curl -fsSL https://get.pnpm.io/install.sh | sh -
  5. Add Elasticsearch

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo tee /etc/yum.repos.d/elasticsearch.repo << EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
    sudo tee /etc/yum.repos.d/elasticsearch.repo << EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
    sudo tee /etc/yum.repos.d/elasticsearch.repo << EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF

    Install Elasticsearch:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo dnf install java-11-openjdk-devel -y rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo dnf install elasticsearch -y
    sudo dnf install java-11-openjdk-devel -y rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo dnf install elasticsearch -y
    sudo dnf install java-11-openjdk-devel -y rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo dnf install elasticsearch -y

    Configure Elasticsearch:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo nano /etc/elasticsearch/elasticsearch.yml
    sudo nano /etc/elasticsearch/elasticsearch.yml
    sudo nano /etc/elasticsearch/elasticsearch.yml

    Add the following:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    cluster.name: es-almalinux node.name: es-node network.host: 127.0.0.1
    cluster.name: es-almalinux node.name: es-node network.host: 127.0.0.1
    cluster.name: es-almalinux node.name: es-node network.host: 127.0.0.1

    Start and enable Elasticsearch:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo systemctl daemon-reload sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
    sudo systemctl daemon-reload sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
    sudo systemctl daemon-reload sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
  6. Add Zammad Repository

    Zammad provides its own YUM repo:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo rpm --import https://dl.packager.io/srv/zammad/zammad/key sudo wget -O /etc/yum.repos.d/zammad.repo \ https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo
    sudo rpm --import https://dl.packager.io/srv/zammad/zammad/key sudo wget -O /etc/yum.repos.d/zammad.repo \ https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo
    sudo rpm --import https://dl.packager.io/srv/zammad/zammad/key sudo wget -O /etc/yum.repos.d/zammad.repo \ https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo

    (Replace /el/8.repo with /el/9.repo if you’re using AlmaLinux 9.)

  7. Install Zammad

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo dnf install zammad -y
    sudo chmod -R 755 /opt/zammad/public/
    sudo dnf install zammad -y sudo chmod -R 755 /opt/zammad/public/
    sudo dnf install zammad -y
    sudo chmod -R 755 /opt/zammad/public/
    

    This will install:

    • Zammad app
    • Nginx (as web server)
    • PostgreSQL (as database)
    • Elasticsearch (for search functionality)
    • Systemd services
  8. Start and Enable Services

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo systemctl enable --now zammad sudo systemctl enable --now elasticsearch sudo systemctl enable --now nginx
    sudo systemctl enable --now zammad sudo systemctl enable --now elasticsearch sudo systemctl enable --now nginx
    sudo systemctl enable --now zammad sudo systemctl enable --now elasticsearch sudo systemctl enable --now nginx
  9. Configure Firewall

    Open required ports:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
    sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
    sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
  10. Access Zammad Web Installer

    Open your browser and go to:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    http://your-server-ip/
    http://your-server-ip/
    http://your-server-ip/
    

    Or:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    http://support.yourdomain.com/
    http://support.yourdomain.com/
    http://support.yourdomain.com/
    

    Access zammad web interfaceFollow the web-based setup wizard to:

    • Create an admin user
    • Configure email (for ticketing)
    • Connect Slack or chat (optional)
    • Set branding
  11. Secure with SSL (Recommended)

    Install Certbot:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo dnf install certbot python3-certbot-nginx -y
    sudo dnf install certbot python3-certbot-nginx -y
    sudo dnf install certbot python3-certbot-nginx -y

    Edit Nginx configuration:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo nano /etc/nginx/nginx.conf
    sudo nano /etc/nginx/nginx.conf
    sudo nano /etc/nginx/nginx.conf

    Configure ServerName directive:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    server { server_name support.yourdomain.com; root /usr/share/nginx/html;
    server { server_name support.yourdomain.com; root /usr/share/nginx/html;
     server { server_name support.yourdomain.com; root /usr/share/nginx/html;

    Run Certbot:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    sudo certbot --nginx -d support.yourdomain.com
    sudo certbot --nginx -d support.yourdomain.com
    sudo certbot --nginx -d support.yourdomain.com

    Follow the prompts to get your free Let’s Encrypt SSL cert.

    Set up auto-renewal:

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    echo "0 3 * * * root certbot renew --quiet" | sudo tee -a /etc/crontab
    echo "0 3 * * * root certbot renew --quiet" | sudo tee -a /etc/crontab
    echo "0 3 * * * root certbot renew --quiet" | sudo tee -a /etc/crontab
  12. You’re Done 🎉

    Zammad should now be fully operational. Log into the admin interface and start customizing workflows, email templates, triggers, and user roles.

Launch 100% ssd almalinux vps from $2. 49/mo!

✅ Tips

  • Keep Zammad and your server updated.
  • Set up regular backups (use zammad run rake for exporting data).
  • Monitor logs (/var/log/zammad/) for issues.

Troubleshooting

Port 9200 not open? Elasticsearch might not be running. Restart it:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo systemctl restart elasticsearch
sudo systemctl restart elasticsearch
sudo systemctl restart elasticsearch

Permission issues? Run:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo zammad run rake zammad:permissions:reset
sudo zammad run rake zammad:permissions:reset
sudo zammad run rake zammad:permissions:reset

Got questions or hit an issue? Drop a comment or check out Zammad’s docs—they’re well-written and active.

Conclusion

You now know how to install Zammad on AlmaLinux VPS.

Share this:
Avatar of editorial staff

Editorial Staff

Rad Web Hosting is a leading provider of web hosting, Cloud VPS, and Dedicated Servers in Dallas, TX.
lg