How to Deploy FlowiseAI with Docker on ARM Servers

Rezumat

Deploying Docker applications on ARM-based Ubuntu servers can present challenges. One common issue is the „no matching manifest for linux/arm64/v8 in the manifest list entries” error. This guide provides a solution to this problem using the deployment of the FlowiseAI app as an example.

Step 1: Install Docker with ARM Support

Docker has made strides towards ARM compatibility. Install Docker on your ARM-based Ubuntu server using the following command:

First, you need to install Docker. Foolow this official guide to install Docker on Ubuntu or other systems.

Step 2: Use Docker Buildx for Multi-Architecture Images

Docker Buildx is a CLI plugin that extends the Docker command with full support for the features provided by the Moby BuildKit builder toolkit. It allows you to build multi-CPU architecture Docker images. Use the following command to install Docker Buildx and build your Docker images:

DOCKER_BUILDKIT=1 docker buildx build --platform linux/arm64 -t flowiseai/flowise .

More information about Docker Buildx can be found in this Docker blog.

Step 3: Deploy the FlowiseAI App

With the Docker image built for the ARM architecture, deploy the FlowiseAI app using the following commands:

git clone https://github.com/FlowiseAI/Flowise.git
cd Flowise && cd docker
sudo nano .env

In the .env file, specify the PORT.

You can also specify FLOWISE_USERNAME and FLOWISE_PASSWORD for app-level authorization if needed. After editing, press Ctrl + X to exit, and Y to save the file. Then, run Docker Compose:

sudo docker compose up -d

The app should now be viewable at „Your Public IPv4 DNS”:3000. For example: 176.63.19.226:3000

Step 4: Set Up a Reverse Proxy with SSL

Setting up a reverse proxy with SSL for secure access is essential. For this, use Nginx and Certbot. Here are the commands to install Nginx, configure a server block for your domain, set up a DNS record, and install Certbot for HTTPS (SSL):

sudo apt update
sudo apt install nginx
sudo ufw allow 'Nginx HTTP'
systemctl status nginx
sudo nano /etc/nginx/sites-available/your_domain

In the new file, replace your_domain with your own domain name and insert the following:

server {
    listen 80;
    listen [::]:80;
    server_name your_domain; #Example: demo.flowiseai.com
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_cache_bypass $http_upgrade;
    }
}

Save and exit, then run:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
apt install python3.10-venv
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
sudo certbot --nginx

To enable Certbot to automatically renew the certificates, add a cron job:

echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

This guide provides a solution to deploying Docker applications, like FlowiseAI, on ARM-based Ubuntu servers. By following these steps, you can overcome common issues and set up a secure and accessible application.

Leave a Reply

Your email address will not be published. Required fields are marked *