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中文网

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。