Nano Press automates the full lifecycle of a self-hosted Frappe/ERPNext deployment—from connecting a fresh server to shipping production-ready sites. It wraps Ansible automation, server health checks, app management, and site provisioning into a guided workflow that lives inside your Frappe desk.
- Automates server preparation (Docker, Traefik, lets-encrypt) and ongoing health checks.
- Orchestrates benches, sites, and custom apps without leaving the Frappe UI.
- Logs every Ansible run for traceability and surfaces build/deploy notifications in-app and by email.
- Adds optional custom images so repeated deployments are significantly faster.
- Ships with onboarding guides and video walkthroughs so new operators can go live in minutes.
- Frappe/ERPNext bench where the
nano_pressapp is installed and enabled. - Target VM or bare-metal host (Ubuntu 20.04 LTS or newer recommended) with SSH access.
- User with
sudoprivileges on the target host. - Domain name (optional but required for HTTPS; Nano Press can provision a free
traefik.mesubdomain if you do not have one). - Open ports 22, 80, and 443 on the target network.
Docker, Docker Compose, Traefik, and other runtime dependencies are installed for you during the server preparation step.
- Install the app on your bench:
cd $PATH_TO_YOUR_BENCH bench get-app https://github.com/<your-org>/nano_press.git --branch develop bench install-app nano_press
- Log in to your desk as a system manager and open Nano Press from the workspace sidebar.
- Follow the guided onboarding shown below to connect a server, add apps, and launch your site.
| Step | What happens | Related doctypes | Watch the walkthrough |
|---|---|---|---|
| 1. Create a Server | Register the host, SSH credentials, and Traefik settings. Nano Press keeps the connection info and prepares the machine with Docker and dependencies. | Server |
Create a Server |
| 2. Verify Server Connection | Trigger an Ansible ping to confirm Nano Press can reach the host. | Server |
Verify Server Connection |
| 3. Add Frappe Apps | Add official or custom GitHub apps you want baked into your bench. Supports private repos via deploy keys. | Apps |
Add Frappe Apps |
| 4. Build Custom Image (optional) | Build a reusable Docker image that includes your chosen apps. Great for staging/prod parity or repeated rollouts. | Custom Image |
Build a Custom Image |
| 5. Deploy Server | Launch a Frappe site with your selected apps, configure domains/SSL, and receive email notifications when it is live. | Frappe Site |
Deploy Your Server |
- Default URL:
https://<site_url>(swap for your domain if SSL is configured). - Default credentials:
Administratorand the password set during deployment.
- Monitor builds: Track progress from the Build Log doctype; Nano Press also raises desk notifications and optional emails when a build or deploy completes.
- Review automation output: Each Ansible run is stored under
Ansible Logfor audit and troubleshooting. - Rerun preparation: If your server drifts, trigger the preparation playbook again from the Server dashboard to reinstall Docker or refresh Traefik certificates.
- Add more sites: Once the server is verified, you can deploy additional benches or sites without repeating the onboarding steps.
Nano Press uses pre-commit to keep Python, JS, and schema changes linted.
cd apps/nano_press
pre-commit installConfigured hooks include ruff, eslint, prettier, and pyupgrade. Run pre-commit run --all-files before opening a pull request.
GitHub Actions workflows (located under .github/workflows/) install the app on a test bench, run unit tests on pushes to develop, and execute security/static analysis via Frappe Semgrep rules and pip-audit on pull requests.
- Raise issues or feature requests via GitHub Discussions/Issues.
- Share deployment logs (redacted for secrets) when reporting problems.
- For enterprise onboarding or bespoke automation, reach out to the maintainers listed in the repository metadata.
MIT
