Flectra 3.0
Overview
Flectra is a comprehensive open-source ERP and CRM suite for growing businesses. It is developed as a community fork of Odoo and published under the LGPL-3.0 licence. It brings the full business suite together in one application: a CRM with a sales pipeline, sales quotations and orders, invoicing and full double-entry accounting, inventory and warehouse management, purchasing, projects, a point of sale, human resources, and an integrated website and eCommerce module. Unlike the community edition of the project it forked from, Flectra ships the complete suite with no core features held back behind a paid tier and no licence key to activate.
This SecureAnyCloud image installs Flectra 3.0 from its LGPL-3.0 source into a dedicated Python virtual environment. Flectra runs behind nginx, with a PostgreSQL 16 database, and the image is locked down for use as a marketplace appliance. Flectra is bound to loopback 127.0.0.1:8069 (HTTP) and 127.0.0.1:8072 (live chat / websocket) and is never exposed directly. nginx on port 80 is the only way in, plus an unauthenticated /healthz endpoint for load balancer probes.
The image is secure by default. The Odoo-family default admin/admin login and the database master password are never present in the image. On the first boot of every VM, a fresh PostgreSQL password, a fresh database master password and a unique random administrator password are generated and written to a root-only file. Demonstration data is preloaded, so the CRM pipeline, sales orders and accounting are populated out of the box. The image is backed by 24/7 SecureAnyCloud support.
Flectra is not affiliated with or endorsed by Odoo S.A.
What you get:
- Flectra 3.0 installed from source in a dedicated Python virtual environment and running as the
flectrasystemd service - The full Flectra web suite on
:80, fronted by nginx, with Flectra bound to loopback only - A PostgreSQL 16 database on loopback that holds the ERP, with a per-VM database password generated on first boot
- Preloaded demonstration data (CRM opportunities, sales orders, products, customer invoices), so the suite is populated on first boot
- No default account:
admin/adminnever ships, the administrator is created on first boot with a unique random password, and the database master password is generated per VM and never baked into the image proxy_modeand a per-VM base URL, so sign-in works on the public IP address or a custom domain- An unauthenticated
/healthzendpoint for Azure Load Balancer health probes postgresql.service,flectra.serviceandnginx.serviceas 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 a comfortable starting point. In the NSG, allow inbound 22/tcp from your management network, 80/tcp for the web application, and 443/tcp if you add TLS.
Flectra serves plain HTTP on port 80. For production use, terminate TLS in front of it with your own domain and restrict access to trusted IP ranges (see Maintenance).
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Flectra by SecureAnyCloud, and 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:flectra-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name flectra \
--image sac1647283583153:flectra-ubuntu-24-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardOpen port 80 to your network so that you can reach the web interface:
az vm open-port --resource-group <your-rg> --name flectra --port 80Step 3 - Connect to your VM
ssh azureuser@<vm-public-ip>Step 4 - Confirm the services are running
systemctl is-active postgresql flectra nginxAll three report active. Flectra runs on the loopback addresses 127.0.0.1:8069 (HTTP) and 127.0.0.1:8072 (websocket). nginx fronts it on port 80, and PostgreSQL is bound to loopback. The application is never bound to a public interface, so nginx is the only way in. Check the listeners with:
ss -tln | grep -E '127.0.0.1:8069|:80 ' || trueStep 5 - Retrieve your admin and master passwords
Flectra uses a web login. The username is admin. On the first boot of your VM, a unique password is generated, along with a database master password that gates database management. Both are written to a root-only file. Read it with:
sudo cat /root/flectra-credentials.txt 2>/dev/null || echo '(generated on first boot; run this on your own VM)'This file contains FLECTRA_ADMIN_USER, FLECTRA_ADMIN_PASSWORD, FLECTRA_MASTER_PASSWORD, FLECTRA_DB and the FLECTRA_URL to open in a browser. The file is mode 0600 root:root. Neither the default admin/admin login nor a default master password ever exists in the image, so no shared or default credential is present.
Store the passwords somewhere safe, and change the admin password after your first sign-in (see Maintenance).
Step 6 - Confirm the health endpoint
nginx serves an unauthenticated health endpoint for load balancers and probes:
curl -s http://localhost/healthzIt returns ok. This endpoint never requires authentication, so you can use it for an Azure Load Balancer health probe.
Step 7 - Confirm the default login is rejected
The Odoo-family default admin/admin is deliberately removed from this image. You can verify this. An authentication attempt with admin/admin is rejected (no user id is returned), while the login page itself stays reachable so that you can sign in with your per-VM password:
echo "login page: $(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1/web/login)"
DEFAULT_UID=$(curl -s -m 20 -H 'Content-Type: application/json' -X POST \
--data '{"jsonrpc":"2.0","params":{"db":"flectra","login":"admin","password":"admin"}}' \
http://127.0.0.1/web/session/authenticate \
| python3 -c 'import sys,json;r=(json.load(sys.stdin).get("result") or {});print(r.get("uid"))' 2>/dev/null || echo None)
echo "admin/admin -> uid ${DEFAULT_UID} (None or False means rejected)"It prints login page: 200 and admin/admin -> uid None, which confirms that the default credential does not work. Sign in instead with admin and the FLECTRA_ADMIN_PASSWORD from Step 5.
Step 8 - Confirm the installed version and demo data
Flectra 3.0 runs on Python in a dedicated virtual environment. Confirm the runtime and that the demonstration data loaded:
/opt/flectra/venv/bin/python --version sudo -u postgres psql -d flectra -tAc "select 'CRM leads: '||count(*) from crm_lead"
sudo -u postgres psql -d flectra -tAc "select 'Sales orders: '||count(*) from sale_order"
sudo -u postgres psql -d flectra -tAc "select 'Customer invoices: '||count(*) from account_move where move_type='out_invoice'"It reports Python 3.12 and populated CRM, Sales and Accounting data, so the suite is not empty on first boot.
Step 9 - Sign in to Flectra
Browse to http://<vm-public-ip>/. Flectra shows its sign-in page. Enter admin and the FLECTRA_ADMIN_PASSWORD from Step 5, then select Log in.
Step 10 - Explore the CRM pipeline
Open the CRM app. The pipeline is preloaded with demonstration opportunities across the New, Qualified, Proposition and Won stages. Each opportunity has an expected revenue, tags, a priority and a next activity, so you can see how the sales pipeline looks and works before you add your own leads.
Step 11 - Review sales orders
Open the Sales app. The demonstration data includes sales orders with customers, salespeople, amounts and invoicing status, so quotations, orders and the order-to-invoice flow are ready to explore.
Step 12 - Review accounting and invoices
Open the Accounting app. Flectra ships full double-entry accounting in the community edition, and the demonstration data includes posted customer invoices with amounts, due dates and payment status. Use this app to manage invoicing, bills, payments and the chart of accounts.
Step 13 - Build your business
The image ships demonstration data so that the suite is not empty. When you are ready, use the Apps menu to install additional modules (Inventory, Purchase, Project, Website, Point of Sale, HR). Then use each app to configure your own company, products, customers and chart of accounts.
To start from clean data, create a new database from the database manager using your FLECTRA_MASTER_PASSWORD, or remove the demonstration records from within each app. See the Flectra documentation for how to configure the suite for your business.
Maintenance
- Passwords: the administrator password and the database master password are generated on first boot and stored in
/root/flectra-credentials.txt(mode0600 root:root). Change the admin password in Flectra under the user preferences. Change the master password by editingadmin_passwdin/etc/flectra/flectra.confand then runningsudo systemctl restart flectra. - Restrict access: Flectra serves plain HTTP on port 80. For production, restrict access to trusted IP ranges in your Network Security Group, and front Flectra with TLS terminating on
:443(for example, certbot with your own domain).proxy_modeis already enabled, so Flectra honours theX-Forwarded-*headers from nginx. - Loopback binding: Flectra is bound to
127.0.0.1:8069and127.0.0.1:8072in/etc/flectra/flectra.conf, so nginx is the only path in. Keep it that way, and do not changehttp_interfaceto a public interface. - Database: the ERP lives in the
flectraPostgreSQL database on loopback. Back it up withsudo -u postgres pg_dump flectra > flectra.sql, together with the filestore under/var/lib/flectra. The database password is generated on first boot and held in/etc/flectra/flectra.conf(mode0640 root:flectra). - Configuration: application settings are read from
/etc/flectra/flectra.conf. Restart withsudo systemctl restart flectraafter you edit it.workersis set to a conservative value that fits aStandard_B2s. Raise it on a larger VM for more concurrency. - Upgrades: Flectra is installed from its
3.0source branch under/opt/flectra/src. To take the latest 3.0 fixes, update the checkout and restart the service. - Security patches: unattended-upgrades remains enabled, so the OS continues to receive security updates automatically.
Support
SecureAnyCloud provides 24/7 expert support for this image. Email sales@secureanycloud.com.
Deploy on Azure
Launch Flectra 3.0 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