Frequently Asked Questions
General
What is QuoteNode?
QuoteNode is a self-hosted CRM and quoting platform for B2B and B2C sales teams. It provides customer management, professional offer creation, branded PDF generation, trackable public links, and sales analytics — all running on your own infrastructure.
Who is QuoteNode for?
QuoteNode is designed for freelancers, consultants, small agencies, and mid-size companies that create and send offers to clients. It is particularly suited for organizations that need data ownership, branded client-facing documents, and a structured sales workflow.
How is QuoteNode different from SaaS CRM platforms?
QuoteNode is self-hosted and single-tenant. Your data stays on your server. There is no shared database, no vendor lock-in, no monthly subscription fee, and no dependency on external services. You control the infrastructure, the backups, and the access perimeter.
Deployment & Infrastructure
What do I need to run QuoteNode?
A server with Docker Engine 24.0+, 2 GB RAM (4 GB recommended), and an SSD with at least 10 GB free. QuoteNode ships as Docker containers and is deployed using Docker Compose.
Can I run QuoteNode on my laptop for testing?
Yes. The Docker Compose setup works on any machine with Docker installed — Linux, macOS, or Windows (WSL2). This is how most users evaluate QuoteNode before deploying to production.
Does QuoteNode require internet access?
No. QuoteNode operates fully offline. No telemetry, no analytics callbacks, no external license server. The only outbound connections are those you explicitly configure (SMTP for email delivery, and optionally FX rate sources).
Can I deploy QuoteNode behind a corporate firewall?
Yes. QuoteNode is designed for air-gapped and restricted network environments. It has no external runtime dependencies.
What database does QuoteNode use?
PostgreSQL 16 or later. It is the only supported database engine. The PostgreSQL instance runs as a container alongside the application.
Licensing & Pricing
Is QuoteNode really free?
The Freelancer Edition is free forever with no credit card required. It includes all core features — offer creation, PDF generation, public links, customer management, and analytics — for up to 3 users. The only limitation is a “Powered by QuoteNode” badge on public offer pages and PDFs.
What does the paid license include?
Paid editions (Pro, Business, Enterprise) add higher user limits, white-label capability (remove the “Powered by” badge), advanced templates, priority support, and SLA guarantees. See the Pricing page for details.
How does licensing work technically?
QuoteNode uses Ed25519-signed license files verified entirely offline. No external server is contacted. Paid licenses are annual — if a license expires, all features continue to work normally. The only change is a “Powered by QuoteNode” badge on client-facing surfaces and a small reminder in the UI. No lockouts, no read-only mode, no disabled features.
What happens if I don’t renew my license?
Nothing breaks. Your instance keeps running with full functionality. The annual fee supports continued development — it is not a kill switch. When you are ready, renew to remove the badge. If you need to save money one year, that is fine.
Can I upgrade from Freelancer to Pro later?
Yes. You can upgrade at any time by applying a new license file. No data migration or reinstallation is required.
Offers & Workflow
How long does it take to create an offer?
Most offers can be created in 2-5 minutes. Select a customer, add products from your catalog (with automatic pricing rules), configure the template, and send. The system handles VAT calculations, currency conversion, and PDF generation automatically.
Can my clients view offers without creating an account?
Yes. Every offer can be shared via a public link. The client sees a fully branded, responsive page and can accept, reply, or decline — with no registration required.
Are offers tracked?
Yes. The system tracks when a client opens the public link, downloads the PDF, replies, accepts, or rejects. You see the open count, timestamps, and client country (via GeoIP) directly on the offer detail page.
Can I create offers in multiple currencies?
Yes. QuoteNode supports multiple currencies with automatic exchange rate conversion. You can set a different currency per offer. Pipeline reports convert all values to your base currency for unified reporting.
What happens when an offer expires?
The offer status changes to “Expired” and the public link shows an expiration notice. You can clone the expired offer with one click to create a new version with a fresh validity period.
Security
How is client data protected on public links?
Public links use 256-bit cryptographically random tokens. Only the SHA-256 hash is stored in the database. Links can be password-protected, rate-limited, and revoked at any time. Bot detection prevents automated abuse.
Does QuoteNode have an audit trail?
Yes. Every mutation in the system is recorded in an append-only audit log: who changed what, when, and from which IP address. The log is immutable — entries cannot be edited or deleted, even by administrators.
Does QuoteNode support two-factor authentication?
Yes. TOTP-based two-factor authentication is supported for all users and can be enforced for administrators.
Data & Backups
How are backups handled?
QuoteNode includes a built-in backup system. A dedicated backup worker runs a scheduled job (default: daily at 2:00 AM) that creates a full database dump and archives all uploaded files and generated PDFs. Backups are stored locally and optionally uploaded to remote storage via rclone.
Can I download a backup to my computer?
Yes. Administrators can download backup archives directly from the admin panel (Settings > Backup). Click the download button on any successful backup entry.
Can I encrypt my backups?
Yes. Set the BACKUP_GPG_RECIPIENT environment variable to a GPG key ID. Both the database dump and file archive will be encrypted before storage. This is recommended when storing backups on third-party cloud storage.
How do I restore from a backup?
Use the restore.sh script included in the repository. For an existing installation, run ./restore.sh backup-file.tar.gz. For a fresh server (disaster recovery), run ./restore.sh --fresh-install backup-file.tar.gz. The script handles database restoration, file recovery, and application startup automatically. See the Backup & Recovery wiki for the full guide.
What happens if I forget to back up?
If automatic backups are enabled (recommended), the system backs up daily without any action required. The admin panel displays a warning if no successful backup has been recorded in the last 48 hours. You can also trigger a manual backup at any time from the admin panel.
How long are backups kept?
By default, the 7 most recent successful backups are kept locally. Older files are deleted automatically after each successful backup. Remote backups (uploaded via rclone) follow your storage provider’s lifecycle policies.
Technical
What technology stack does QuoteNode use?
Backend: Java 25 with Spring Boot 4. Frontend: Vue 3 with Vite, PrimeVue 4, and Tailwind CSS 4. Database: PostgreSQL 16. PDF generation: Gotenberg (Chromium-based). Reverse proxy: Caddy 2 with automatic HTTPS.
How are database migrations handled?
QuoteNode uses Flyway for schema management. Migrations run automatically on backend startup. Existing migrations are never modified — schema changes are always additive.
Can I customize the offer PDF template?
Yes. The template system supports configurable columns (SKU, images, descriptions, discounts), multiple price display modes (NET/GROSS/full breakdown), product images, custom trading terms, and your company branding.
How does PDF generation work?
The backend renders an HTML document from the offer snapshot using Thymeleaf templates, then sends it to Gotenberg (a Chromium-based container) for conversion to a print-ready PDF. Small offers generate synchronously (under 3 seconds); large offers use async background processing with notification when ready.