Frappe Education
Overview
Frappe Education is an open source student information and school management application built on the Frappe framework and ERPNext. It covers the academic lifecycle: admissions and student applicants, student records and guardians, academic years and terms, programs and courses, program enrollment, student groups and instructors, course scheduling, attendance, assessment plans and results, and fee structures, fee schedules and collection.
Frappe Education declares ERPNext as a required application, so this image ships the complete ERPNext suite alongside it. The SecureAnyCloud image installs the whole stack as a full production deployment: MariaDB, Redis, a Python gunicorn web tier, background workers and a scheduler managed by supervisor, and nginx on port 80.
The entire headless install runs at build time, so there is no command-line bootstrap on first use. The ERPNext setup wizard is already complete, so the desk opens straight to work rather than a setup screen. The first boot of every VM rotates the Frappe Administrator password, the site database password and the Frappe encryption key. No student, guardian or fee data is seeded, so your records are yours to enter.
What you get:
- Frappe Education v16.1.0 on ERPNext v16.31.1 and 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 requires.
- MariaDB on loopback (Barracuda / utf8mb4 / large packets per Frappe), tuned for a small VM.
- Redis for cache, queue and socketio, with supervisor managing the Frappe web, worker and schedule processes.
- A neutral starter company with a standard chart of accounts, so ERPNext-scoped features such as fees and accounting work the moment you sign in.
- A unique Administrator password, site database password and Frappe encryption key generated on first boot, with no default login.
nginx.service,supervisor.service,mariadb.serviceandredis-server.serviceas systemd units, enabled and active.- 24/7 SecureAnyCloud support.
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region.
Standard_B4ms (4 vCPU / 16 GiB RAM) is the recommended size. It matches SecureAnyCloud's ERPNext image, because this appliance contains ERPNext. The stack is memory-tuned and runs on a Standard_B2s (2 vCPU / 4 GiB RAM) for evaluation. Choose B4ms or larger for production workloads and multiple concurrent users.
In the NSG, allow inbound 22/tcp from your management network and 80/tcp for the web interface. Front the site 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, and search the Marketplace for Frappe Education by SecureAnyCloud. Select Create.
On the Basics tab, 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 select Review + create and 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-education-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name frappe-education \
--image sac1647283583153:frappe-education-ubuntu-24-04:default:latest \
--size Standard_B4ms \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_rsa.pub \
--public-ip-sku StandardThen open the web port:
az vm open-port --resource-group <your-rg> --name frappe-education --port 80 --priority 900Step 3 - Connect to your VM
ssh azureuser@<vm-ip>Step 4 - Confirm the education stack is running
All four services should report active:
systemctl is-active mariadb redis-server supervisor nginxFrappe answers an unauthenticated health check, and both applications are installed on the site. Run:
curl -s http://127.0.0.1/api/method/pingStep 5 - Retrieve the Administrator password
Every VM generates its own Administrator password on first boot and writes it to a root-only file. Nothing is shared between deployments, and there is no default login.
sudo cat /root/frappe-education-credentials.txtThe file is readable only by root:
sudo stat -c '%a %U:%G %n' /root/frappe-education-credentials.txtThe per-VM password authenticates, and published vendor defaults are rejected. A real Program and Course round trip proves that the education module works:
Step 6 - Sign in to Frappe Education
Browse to http://<vm-ip>/ and sign in as Administrator with the password from Step 5.
After you sign in, the site root takes you straight to the Frappe desk. The setup wizard is already complete, so there is no setup screen to work through.
Step 7 - Set up your company
The image ships a neutral starter company named Demo Company with a standard chart of accounts, so ERPNext-scoped features such as fee structures and collection are usable immediately. It contains no transactional data.
For production use, either rename it or create your own:
- Rename: Go to
http://<vm-ip>/app/company, open Demo Company, and use Menu -> Rename to set your own legal entity name and abbreviation. Then set your country, default currency and fiscal year on the same form. - Create a new company: From the same list, choose Add Company. Fill in the name, abbreviation, default currency and country, and pick a chart of accounts template. Set the new company as the default in Global Defaults.
Step 8 - Explore the Education workspace
Open the Education workspace at http://<vm-ip>/app/education. It gathers the module's day-to-day tools in one place: students, programs, courses, student groups, instructors, program enrollment, attendance, assessment and fees.
Step 9 - Create a program and a course
A Program is a course of study (for example a grade, class or degree) that students enroll in. A Course is a subject taught within it.
Go to http://<vm-ip>/app/program, choose Add Program, give it a name and save. Then go to http://<vm-ip>/app/course, choose Add Course, give it a name and save.
You can attach courses to a program from the program form. From there, build student groups, schedule classes and record assessments.
Step 10 - Verify the education module from the command line
The image ships a self-test that creates a real Program and Course, reads both back, and removes them again. It is the same check SecureAnyCloud runs against the published image, and it is safe to run at any time. Run:
sudo /usr/local/sbin/frappe-education-selftest.shStep 11 - Enabling HTTPS
The image serves plain HTTP on port 80. For anything beyond evaluation, terminate TLS in front of the site. Install Certbot and issue a certificate for a DNS name that points at the VM:
sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d school.your-domain.exampleThen set Frappe's public URL so that generated links use HTTPS:
sudo -u frappe -H bash -lc "cd /opt/frappe/frappe-bench && bench --site education.localhost set-config host_name 'https://school.your-domain.example'"
sudo systemctl restart supervisorOpen 443/tcp in the NSG, and restrict 80/tcp to the redirect only.
Step 12 - Maintenance
Check the Frappe process tree:
sudo supervisorctl statusBack up the site (database plus files). Backups are written to the site's private/backups directory:
sudo -u frappe -H bash -lc "cd /opt/frappe/frappe-bench && bench --site education.localhost backup"Keep the operating system patched:
sudo apt-get update && sudo apt-get -y upgradeRestart the application tier after configuration changes:
sudo systemctl restart supervisor && sudo systemctl reload nginxTroubleshooting
The site does not respond on port 80. Confirm that nginx and supervisor are active with systemctl is-active nginx supervisor. Then check the Frappe processes with sudo supervisorctl status. Confirm that the NSG allows inbound 80/tcp.
Sign-in fails. Read the password again with sudo cat /root/frappe-education-credentials.txt. The username is Administrator. There is no default password in this image. Each VM generates its own on first boot.
First boot did not complete. Inspect the one-shot service with sudo systemctl status frappe-education-firstboot.service and sudo journalctl -u frappe-education-firstboot.service.
A fee document will not save. Fee documents are company-scoped and post to the general ledger, so the fee structure must reference a valid company and income account. Open the fee structure and confirm that its company and account fields point at your chart of accounts.
Compliance and data protection. You are responsible for your own regulatory posture for the student data you enter into this system. SecureAnyCloud makes no compliance claims on your behalf.
Support
SecureAnyCloud provides 24/7 support for this image by email at sales@secureanycloud.com and via live chat, with a one hour average response time for critical issues.
Frappe, ERPNext and Frappe Education are trademarks of their respective holders. Use of these names does not imply any affiliation with or endorsement by them.
Deploy on Azure
Launch Frappe Education 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