Applications Azure

Raven on Ubuntu 24.04 on Azure User Guide

| Product: Raven on Ubuntu 24.04 LTS on Azure

Overview

Raven is a self-hosted, open-source team-messaging application built on the Frappe framework - a private, Slack-style alternative you fully control. It gives teams workspaces, public and private channels, direct messages, threaded conversations, reactions and @-mentions, file and image sharing, pinned messages and link previews, plus an AI-bot layer for building assistants inside channels. The cloudimg image installs Raven v2.8.11 on Frappe framework version-15 as a full production deployment - MariaDB, Redis, a Python gunicorn web tier plus a node realtime (socket.io) process, background workers and a scheduler managed by supervisor, and nginx on port 80 - runs the entire headless install at build time so there is no command-line bootstrap on first use, and rotates the Frappe Administrator password, the site database password and the Frappe encryption key on the first boot of every VM. Backed by 24/7 cloudimg support.

What is included:

  • Raven v2.8.11 on Frappe framework version-15, served on port 80 by nginx in front of a gunicorn web worker
  • A node socket.io realtime process for live messaging, plus Frappe background workers and a scheduler managed by supervisor
  • MariaDB on loopback (Barracuda / utf8mb4 / large packets per Frappe), tuned for a small VM
  • Redis for cache, queue and socket.io
  • A unique Administrator password, site database password and Frappe encryption key generated on first boot, with no default login
  • nginx.service, supervisor.service, mariadb.service and redis-server.service as systemd units, enabled and active
  • 24/7 cloudimg support

Prerequisites

An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is the supported minimum; choose a larger size such as Standard_B2ms or Standard_D2s_v3 for larger teams or higher message volume. NSG inbound: allow 22/tcp from your management network and 80/tcp for the Raven web interface (front with TLS for public exposure - see Enabling HTTPS).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Raven by cloudimg, and select Create. On Basics pick your subscription, resource group, region and size; under Administrator account choose SSH public key and paste your key; under Inbound port rules allow SSH (22) and HTTP (80). Then Review + create -> Create.

Step 2 - Deploy from the Azure CLI

az vm create \
  --resource-group <your-rg> \
  --name raven \
  --image <marketplace-image-urn> \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard

az vm open-port --resource-group <your-rg> --name raven --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the Raven stack is running

On first boot the image rotates the Frappe encryption key, the site database password and the Administrator password, points the site at this VM's public IP, and starts the production stack. Confirm all four systemd services are active:

systemctl is-active mariadb redis-server supervisor nginx

All four services report active, and supervisor runs the Frappe web, socket.io, worker and schedule processes.

Raven service status on Ubuntu 24.04

Confirm the Frappe web tier answers its health endpoint, and check the exact installed apps and versions - Frappe framework version-15 and Raven v2.8.11:

curl -s http://127.0.0.1/api/method/ping
sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench --site raven.localhost list-apps'

Frappe returns {"message":"pong"}, and MariaDB (3306) and Redis (6379) listen only on loopback while nginx serves port 80.

Raven health check and installed apps

Step 5 - Retrieve the Administrator password

The per-VM Administrator password is generated on first boot and written to a root-only credentials file, along with the site URL and login name:

sudo cat /root/raven-credentials.txt

Per-VM Raven credentials file

Because these secrets are generated on first boot, no two deployments share the same password, and the vendor default logins are rejected while the per-VM password authenticates:

PASS=$(sudo grep '^raven.admin.pass=' /root/raven-credentials.txt | cut -d= -f2-)
curl -s -o /dev/null -w 'per-VM password: %{http_code}\n' http://127.0.0.1/api/method/login \
  --data-urlencode 'usr=Administrator' --data-urlencode "pwd=$PASS"
curl -s -o /dev/null -w 'default "admin": %{http_code}\n' http://127.0.0.1/api/method/login \
  --data-urlencode 'usr=Administrator' --data-urlencode 'pwd=admin'

The per-VM password returns 200; the default returns 401.

Raven secure-by-default login check

Step 6 - Sign in to Raven

Browse to http://<vm-public-ip>/raven and sign in as Administrator with the password from Step 5. Change this password after your first sign-in, from your Frappe user settings.

Raven sign-in page

Step 7 - Choose your workspace

After signing in you land on your workspaces. Select a workspace to open it and reveal the channel sidebar. From here you can browse channels, threads and saved messages, and use the + controls to create new channels or invite members. Create additional public or private workspaces to separate teams or projects.

Raven workspace and channel sidebar

Step 8 - Send messages in a channel

Open a channel from the sidebar to see its conversation. Messages show the author, timestamp and content in a threaded timeline, and the composer at the bottom supports rich text, code blocks, emoji, mentions, file attachments and polls. Type a message and press Enter to post it; other members see it in real time over socket.io.

A Raven channel conversation

Use the formatting toolbar and the emoji, mention and attachment controls in the composer to send formatted messages, react to posts, start threads, and share files with your team.

The Raven message composer with emoji and formatting

From the settings menu you can also manage workspace members and roles, control who can create channels, connect the AI-bot layer, and configure notifications.

Enabling HTTPS

For public exposure, front Raven with TLS. Point a DNS A record at the VM's public IP, then issue a certificate with Certbot and the nginx plugin (run interactively):

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

Certbot edits the Frappe nginx site in place and sets up automatic renewal. Allow 443/tcp in your NSG. Real-time messaging over socket.io works through the same nginx front end.

Maintenance

The OS keeps receiving security updates through unattended-upgrades. Raven and the framework can be updated with bench as the frappe user (sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench update'); review the Raven release notes before applying a major version upgrade. Take a snapshot of the OS disk before any upgrade.

Support

This image is published and supported by cloudimg. Frappe is a trademark of Frappe Technologies Pvt. Ltd.; cloudimg is not affiliated with or endorsed by the Frappe project. For assistance, contact cloudimg support.