{
  "id": 9019601,
  "title": "Building FoxyInvoice — Chapter 6: Accounts, hosting, DNS, email — from zero to a domain",
  "url": "https://urgent.news/2026/09/21/building-foxyinvoice-chapter-6-accounts-hosting-dns-email-from-zero",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-21T21:48:31.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/seolith/building-foxyinvoice-chapter-6-accounts-hosting-dns-email-from-zero-to-a-domain-2bh5"
  },
  "original_language": "en",
  "account": "This chapter provides a detailed step-by-step guide to turning code on a laptop into a functional URL for the FoxyInvoice system. The process begins with buying a domain and setting up DNS records to point the domain at a VPS (Virtual Private Server) that will host the system. The author emphasizes the importance of ordering these steps correctly, as several depend on earlier ones being completed.\n\nNext, the chapter discusses setting up an email sending service using Amazon SES (Simple Email Service) SMTP and configuring DNS records to handle incoming mail. It also covers the use of object storage (S3-compatible) for storing PDF invoices and feedback attachments. The chapter then moves on to setting up Stripe for payments, both for single transactions and subscriptions.\n\nThe author then explains the role of Docker Compose in running the entire system on the VPS, with each service (Postgres, API, Worker, and Caddy) being run as a separate container. The chapter highlights issues with environment files and immutable configuration files, providing tips to avoid common pitfalls. For example, the Caddy web server is configured to automatically obtain TLS certificates using Let's Encrypt/ZeroSSL, eliminating the need for manual configuration.\n\nEmail configuration is covered in detail, with the use of AWS SES via SMTP credentials to relay transaction emails. The chapter also discusses configuring feedback emails to route replies back to the original sender, ensuring better communication with users.\n\nThe chapter then delves into storing invoice PDFs and feedback attachments in object storage, as well as processing payments via Stripe. The author stresses the importance of keeping secrets generated and never committed to the repository, using a script called generate-secrets.sh to create random passwords and keys during setup.\n\nFinally, the chapter provides a checklist for launching the system, covering all the necessary steps from domain registration to secret generation and Stripe webhook testing. The author concludes by encouraging readers to create their own domain and take advantage of a free upgrade offer for the first 6 months.",
  "summary": "This series is written in the open, from a real production system. This chapter is the step-by-step shopping list for turning code on a laptop into a URL someone else can type. [All chapters and diagrams live in the public repo.] This is the chapter people skip and then suffer: the accounts, the names, the records that turn code on your laptop into a URL someone else can type. It's step-by-step…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 2,
    "also_reported_by": [
      {
        "outlet": "Dev.to",
        "title": "Building FoxyInvoice — Chapter 0: We built an invoicing SaaS, and you can too",
        "url": "https://urgent.news/2026/09/19/building-foxyinvoice-chapter-0-we-built-an-invoicing-saas-and-you-can",
        "published": "2026-09-19T12:21:33.000Z"
      }
    ]
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}