Invoice Ninja 发票系统搭建教程
Invoice Ninja 是一款功能全面的开源发票和账单管理系统,适合自由职业者和中小企业使用。它提供专业的发票模板、客户管理、在线支付集成、费用追踪和财务报表等功能。自托管版本免费且不限客户数量。本教程将在搬瓦工 VPS 上通过 Docker 部署 Invoice Ninja。
一、Invoice Ninja 核心功能
- 发票管理:创建专业发票,支持多种模板和自定义品牌标识,自动编号和税率计算。
- 报价单:创建报价单发送给客户,客户批准后一键转为正式发票。
- 在线支付:集成 Stripe、PayPal、Alipay 等 45+ 种支付网关,客户可以在线支付发票。
- 循环发票:设置定期发送的循环发票,适合订阅制和周期性服务。
- 费用追踪:记录业务支出,关联到项目和客户,方便成本核算。
- 时间追踪:内置计时器记录工作时间,时间条目可直接转为发票项目。
- 财务报表:收入报表、费用报表、利润报表和税务报表,全面掌控财务状况。
二、环境准备
- 操作系统:Ubuntu 20.04+(推荐 Ubuntu 22.04)。
- 内存:至少 1GB RAM,推荐 2GB。
- 磁盘:至少 10GB 可用空间。
- Docker:已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
购买搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 折扣。
三、Docker Compose 部署
3.1 创建项目目录
mkdir -p /opt/invoiceninja && cd /opt/invoiceninja
3.2 创建环境变量文件
cat > .env <<'EOF'
APP_URL=http://your-domain.com
APP_KEY=base64:$(openssl rand -base64 32)
APP_DEBUG=false
REQUIRE_HTTPS=false
DB_HOST=db
DB_PORT=3306
DB_DATABASE=invoiceninja
DB_USERNAME=invoiceninja
DB_PASSWORD=your_db_password
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your-email@example.com
MAIL_PASSWORD=your-email-password
MAIL_FROM_ADDRESS=noreply@example.com
MAIL_FROM_NAME="Invoice Ninja"
EOF
实际使用时请生成真正的 APP_KEY:
echo "base64:$(openssl rand -base64 32)"
3.3 创建 Docker Compose 文件
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
invoiceninja:
image: invoiceninja/invoiceninja:latest
container_name: invoiceninja
restart: always
ports:
- "8080:80"
env_file:
- .env
volumes:
- invoiceninja_public:/var/www/app/public
- invoiceninja_storage:/var/www/app/storage
depends_on:
- db
db:
image: mysql:8.0
container_name: invoiceninja-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: invoiceninja
MYSQL_USER: invoiceninja
MYSQL_PASSWORD: your_db_password
volumes:
- mysql_data:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
volumes:
invoiceninja_public:
invoiceninja_storage:
mysql_data:
EOF
3.4 启动服务
docker compose up -d
docker compose logs -f invoiceninja
访问 http://你的服务器IP:8080 完成初始设置向导。
四、Nginx 反向代理
cat > /etc/nginx/sites-available/invoiceninja <<'EOF'
server {
listen 80;
server_name invoice.example.com;
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/invoiceninja /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d invoice.example.com
五、使用 Invoice Ninja
5.1 公司设置
首先完善公司信息,包括名称、地址、Logo 和税号等。在设置中配置发票编号规则、默认税率和付款条件。Invoice Ninja 支持多币种,适合国际业务。
5.2 创建发票
进入发票页面点击创建,选择客户,添加产品或服务项目(名称、数量、单价),系统自动计算小计、税费和总金额。选择发票模板预览效果,确认无误后通过邮件发送给客户。客户收到邮件后可以在线查看发票并直接支付。
5.3 支付网关配置
在设置中配置支付网关。以 Stripe 为例,输入 API 密钥即可启用信用卡在线支付。客户在发票页面点击"Pay Now"按钮,选择支付方式完成付款。支付完成后发票状态自动更新为"已支付"。
5.4 循环发票
对于需要定期收款的服务,创建循环发票。设置频率(每月、每季度、每年等)和起止日期,系统会自动在指定时间生成并发送发票。
六、备份与升级
# 备份数据库
docker exec invoiceninja-db mysqldump -u invoiceninja -pyour_db_password invoiceninja > /opt/invoiceninja/backup_$(date +%Y%m%d).sql
# 升级
cd /opt/invoiceninja
docker compose pull
docker compose down
docker compose up -d
总结
Invoice Ninja 是自由职业者和小企业管理发票的绝佳选择。同类工具还有 Crater,功能更简洁。购买搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 折扣。更多教程请访问 搬瓦工VPS中文网。