Nano Press automates your Frappe/ERPNext deployment from zero to production. Connect your server, pick your version, add official or custom GitHub apps, set your domain, and launch β all in one smooth workflow. Built for quick proof-of-concepts, but powerful enough for real-world use.
This guide will walk you through deploying a Frappe/ERPNext server using Nano Press, from server setup to production deployment.
Before starting, ensure you have:
- A Frappe/ERPNext instance with Nano Press app installed
- A Linux server (Ubuntu 20.04+ recommended) with SSH access
- sudo access on the target server
- A domain name (optional, for SSL setup)
First, ensure your server meets the minimum requirements:
- OS: Ubuntu 20.04 LTS or later
- RAM: Minimum 4GB (8GB recommended for production)
- Storage: Minimum 20GB available space
- Network: Open ports 22 (SSH), 80 (HTTP), 443 (HTTPS)
Note: Docker and Docker Compose will be automatically installed during the server preparation process. No manual installation is required.
- Click on Server in the sidebar
- Click New to add a new server
Fill in the server configuration:
- Domain Name: Enter your server's domain or hostname (e.g.,
mycompany.com
orserver1.example.com
) - Server IP: Enter the public IP address of your server
- SSH User: Usually
root
(default) - SSH Port: Usually
22
(default)
- Click Save to create the server record
- Click Verify Server to test the SSH connection
- Important: Copy the public key displayed in the verification log
- Add this public key to your server's authorized keys:
# SSH into your server
ssh root@your-server-ip
# Add the public key to authorized_keys
echo "YOUR_PUBLIC_KEY_HERE" >> ~/.ssh/authorized_keys
# Set proper permissions
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
- Wait for the verification process to complete
Note: The verification process will:
- Test SSH connectivity
- Require the public key to be added to authorized_keys for successful verification
If you want to install custom apps beyond ERPNext:
- Go to Apps Doctype
- Click New to add a new app
- Configure the app details:
- App Name: Name of the app
- Repository URL: GitHub repository URL
- Branch: Branch to install from (e.g.,
develop
,main
) - Is Private: Check if it's a private repository
- PAT Token: Personal Access Token for private repos
For faster deployments and better performance, you can build a custom Docker image with your apps pre-installed:
- Go to Custom Image Doctype
- Click New to create a new custom image
- Configure the image details:
- Server: Choose the server to which this image to be build on.
- Verion: Choose the Framwork version.
- Image name: Keep a valid image name to be used.
- Apps to Include: Select the apps you want pre-installed
- Build Configuration: Set build parameters
The build process may take up to 30 minutes depending on the number of apps selected:
- Monitor the build progress in the Build Log section
- You will receive a system notification when the image build is complete
- Wait for the build status to change to "Built"
- The custom image will be available for deployment
Note: Custom images significantly reduce deployment time for subsequent deployments with the same app configuration. The system will notify you when the build process is finished, so you don't need to continuously monitor the progress.
- Go to Frappe Site Doctype
- Click New to create a new deployment
- Select your verified server from the dropdown
- The server name will be automatically fetched from the server configuration
Fill in the deployment configuration:
Basic Settings:
- Site Name: Choose a unique site name (e.g.,
mycompany
) - Admin Password: Set the admin password (or leave blank for auto-generation)
- Docker Image: By default,
frappe/erpnext:v15.76.0
will be used (contains only ERPNext)
Custom Image Configuration:
- Is Custom: Check this if you want to install additional apps
- Custom Image: Select the custom image you built earlier
- Apps Section: Will be automatically populated with all apps used to build the custom image
SSL Configuration (Optional):
- Enable SSL: Check to enable HTTPS
- Traefik Domain: Your domain name (e.g.,
erp.mycompany.com
) - Mandatory if SSL is enabled - Traefik Email: Email for Let's Encrypt certificates - Mandatory if SSL is enabled
- Traefik Password: Password for Traefik dashboard
- Review all settings
- Click Prepare for Deployment
- This process will:
- Install Docker and Docker Compose if they don't exist
- Install the Frappe Docker repository
- Override the
pwd.yml
file with your deployment details - Set up the deployment environment
- Once the status changes to "Ready to Deploy"
- Click Deploy to start the deployment process
- This will execute
docker compose up
on your server
- Wait for the deployment to complete (5-10 minutes depending on apps)
- You'll see a Visit Site button appear
- Click Visit Site to access your Frappe/ERPNext instance
Important Notes:
- For Production: Configure your domain name to point to your server IP
- For Local Development: Don't use SSL and map your IP to hostname in
/etc/hosts
file - Access Details:
- URL:
http://your-server-ip:8000
(orhttps://your-domain
if SSL enabled) - Username:
Administrator
- Password: The password you set during deployment
- URL:
The deployment process will:
- Prepare Environment: Install Docker, Docker Compose, and Frappe repository
- Initialize: Set up Docker containers and networks
- Install Frappe: Install Frappe framework
- Install ERPNext: Install ERPNext application
- Install Custom Apps: Install any additional apps (if using custom image)
- Configure SSL: Set up HTTPS if enabled
- Finalize: Complete setup and start services
You can monitor progress in the Deployment Log section.
- Not Deployed: Initial state
- Ready to Deploy: After "Prepare for Deployment" is complete
- Deploying: During the deployment process
- Deployed: Successfully completed
- Failed: If deployment encounters errors
Once deployment is complete and status shows "Deployed":
- Click the Visit Site button to access your Frappe/ERPNext instance
- URL:
http://your-server-ip:8000
(orhttps://your-domain
if SSL enabled) - Username:
Administrator
- Password: The password you set during deployment
Your Frappe/ERPNext instance is now ready for use! You can access it through your web browser and begin configuring your business.
You can install this app using the bench CLI:
cd $PATH_TO_YOUR_BENCH
bench get-app $URL_OF_THIS_REPO --branch develop
bench install-app nano_press
This app uses pre-commit
for code formatting and linting. Please install pre-commit and enable it for this repository:
cd apps/nano_press
pre-commit install
Pre-commit is configured to use the following tools for checking and formatting your code:
- ruff
- eslint
- prettier
- pyupgrade
This app can use GitHub Actions for CI. The following workflows are configured:
- CI: Installs this app and runs unit tests on every push to
develop
branch. - Linters: Runs Frappe Semgrep Rules and pip-audit on every pull request.
mit