Deployment guide

Frappe Wiki

Overview

Frappe Wiki is an open-source wiki and knowledge-base application built on the Frappe framework. It suits dynamic, text-heavy content such as product documentation, internal handbooks, runbooks and company policies. Authors get a rich block editor, a drag-and-drop page tree, wiki spaces, full revision history and a change-request approval workflow. Readers get a fast published site with full-text search.

The SecureAnyCloud image installs Wiki v3.0.0 on Frappe framework version-16 as a full production deployment. The entire headless install runs at build time, so there is no command-line bootstrap on first use. The first boot of every VM rotates the Frappe Administrator password, the site database password and the Frappe encryption key.

What you get:

  • Frappe Wiki v3.0.0 on Frappe framework version-16, served on port 80 by nginx in front of a gunicorn web worker.
  • Python 3.14 and Node.js 24, which Frappe version-16 and Wiki v3 both require.
  • MariaDB on loopback (Barracuda, utf8mb4 and large packets, per Frappe), tuned for a small VM.
  • Redis for cache, queue and socketio, with supervisor managing the Frappe web, worker, schedule and socketio processes. A node realtime process runs alongside the Python gunicorn web tier.
  • 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 SecureAnyCloud support.

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet and 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 heavier editing traffic.

In your NSG, allow inbound 22/tcp from your management network and 80/tcp for the wiki web interface. Front the wiki with TLS for public exposure, as Step 9 describes.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure portal, choose Create a resource, search the Marketplace for Frappe Wiki by SecureAnyCloud, 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 choose Review + create, followed by Create.

Step 2 - Deploy from the Azure CLI

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:frappe-wiki-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name frappe-wiki \
  --image sac1647283583153:frappe-wiki-ubuntu-24-04:default:latest \
  --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 frappe-wiki --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the wiki stack is running

On first boot the image rotates the Frappe encryption key, the site database password and the Administrator password. It also points the site at this VM's public IP and starts the production stack. Confirm that 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, socketio, worker and schedule processes.

Next, confirm that the Frappe web tier answers its health endpoint:

curl -s http://127.0.0.1/api/method/ping

Frappe returns {"message":"pong"}. The wiki editor app is served at /wiki-app:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/wiki-app

That returns 200. The application shell loads for anyone, and the wiki then requires a sign-in before it shows any content.

Finally, list the installed apps and versions, and confirm that MariaDB and Redis are bound to loopback only:

sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench --site wiki.localhost list-apps'

Step 5 - Retrieve the Administrator password

First boot generates the per-VM Administrator password and writes it to a root-only credentials file, along with the wiki URLs and login name:

sudo cat /root/frappe-wiki-credentials.txt

Because first boot generates these secrets, no two deployments share the same password, and the vendor default login is rejected.

You can prove this yourself. The per-VM password authenticates and common defaults do not:

PASS=$(sudo grep '^wiki.admin.pass=' /root/frappe-wiki-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 and the default returns 401.

Step 6 - Sign in to Frappe Wiki

Browse to http://<vm-public-ip>/wiki-app and sign in as Administrator with the password from Step 5.

After you sign in, the wiki app lists your wiki spaces. A space is a self-contained documentation site with its own route, page tree and permissions. The image ships one space named Wiki, published at the route docs.

Use New Space to add more. For example, create one space for public product documentation and another for an internal handbook.

Step 7 - Write and publish pages

Open a space to get the authoring view. The page tree is on the left, the block editor in the middle, and the page's route and publish state at the top.

The toolbar gives you headings, bold and italic, inline and block code, bullet, numbered and task lists, quotes, dividers, tables, links, images and video embeds. Drag pages in the tree to reorder or nest them. Every save is versioned, and Save publishes your change to the reader site.

Readers see the published page at the space route, with the page tree, a full-text search box and an automatic "On this page" table of contents:

Every page is also available as plain markdown, which is useful for scripts and AI agents. Because the space is private, sign in first and reuse that session:

PASS=$(sudo grep '^wiki.admin.pass=' /root/frappe-wiki-credentials.txt | cut -d= -f2-)
J=$(mktemp)
curl -s -o /dev/null -c "$J" http://127.0.0.1/api/method/login \
  --data-urlencode 'usr=Administrator' --data-urlencode "pwd=$PASS"
curl -s -b "$J" -H 'Accept: text/markdown' http://127.0.0.1/docs/welcome-to-frappe-wiki | head -5 rm -f "$J"

The response starts with a small metadata block giving the page title, its space, its public URL and the date it was last updated.

Step 8 - Choose who can read your wiki

Frappe Wiki ships private by default. A wiki space is readable only by signed-in users with access to that space, so an anonymous visitor gets a 404 instead of your content. That is the right default for an internal knowledge base. Confirm it:

curl -s -o /dev/null -w 'anonymous: %{http_code}\n' http://127.0.0.1/docs/welcome-to-frappe-wiki

To publish a space to the public internet instead, open the space in the wiki app and go to its settings (the gear icon in the space header). Add the Guest role to the space's role list. Anonymous visitors can then read every published page in that space, while editing still requires a sign-in.

Grant access to named teams the same way, by adding the roles that should be able to read or contribute.

Add editors as normal Frappe users. In the desk at http://<vm-public-ip>/app/user, create the user, then give them the roles your space requires.

Step 9 - Enabling HTTPS

Terminate TLS in front of the wiki for anything reachable from the internet. Start with a DNS record that already points at the VM:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d wiki.your-domain.com --agree-tos -m you@your-domain.com --redirect

Then tell Frappe its public URL so generated links are correct:

sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench --site wiki.localhost set-config host_name https://wiki.your-domain.com'
sudo systemctl restart supervisor

Certbot installs a systemd timer that renews the certificate automatically.

Step 10 - Maintenance

Check the wiki's own processes and logs:

sudo supervisorctl status

Back up the site. This writes a database dump plus the public and private files into the site's private/backups directory:

sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench --site wiki.localhost backup'

Keep the operating system patched. The image ships with unattended-upgrades enabled. You can apply everything pending at any time:

sudo apt-get update && sudo apt-get -y dist-upgrade

Troubleshooting

A page returns 401 when you are not signed in. This is the shipped default, because wiki spaces are private. Add the Guest role to the space (Step 8) to make it publicly readable.

The wiki does not respond after a reboot. Confirm that the four services are up with systemctl is-active mariadb redis-server supervisor nginx, then check the Frappe processes with sudo supervisorctl status. sudo systemctl restart supervisor restarts the web, worker, scheduler and socketio processes.

Links point at the wrong host. First boot writes the VM's public IP into the site's host_name. If you later put the wiki behind a DNS name or a load balancer, update it as shown in Step 9 and restart supervisor.

You need the Administrator password again. It is written only to /root/frappe-wiki-credentials.txt on that VM. If the password was changed and lost, reset it with sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench --site wiki.localhost set-admin-password <new-password>'.

Support

SecureAnyCloud provides 24/7 technical support for this image by email (sales@secureanycloud.com) and live chat. Support covers deployment, wiki space and permission configuration, upgrades, performance tuning and MariaDB administration.

Frappe and Frappe Wiki are trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

Deploy on Azure

Launch Frappe Wiki on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure