- Introduction
- 1. What this book is about and who it's for
- 2. How the book is structured
- 3. Setting expectations
- Why Self-Host?
- 4. Public Cloud Pitfalls
- 5. Problems with free tiers
- 6. Problems with "budget" DBs
- 7. My self-hosting journey
- The Foundations
- 8. Choosing Your Self-Hosting Setup
- 8.1. Why a Mini PC for Self Hosting
- 8.2. Why VMs for Self Hosting
- 9. Choosing your hardware
- 10. Choosing your OS
- 11. Setting up your Server
- 11.1. Server Hardening
- 11.2. SSH
- 11.3. Installing Docker and Docker Swarm
- 12. Section Recap
- Making It Public
- 13. Why not port-forward?
- 14. Cloudflare Tunnels
- 15. Setting up a Cloudflare account + Domain
- 16. Creating a Cloudflare Tunnel
- 17. Section Recap
- Hosting All the Things
- 18. Hello, Tunnel!
- 19. Introducing Our Sample App
- 20. Databases
- 20.1. Exposing for Local Access
- 21. APIs
- 22. Connecting Services with Docker Networking
- 23. Docker Swarm
- 23.1. Moving to Docker Swarm
- 24. Reverse Proxies
- 24.1. Using the Proxy
- 25. Object Storage
- Developer’s Playground
- 26. Deploying pet projects
- 26.1. CI/CD with GitHub Actions
- 26.2. Automating updates in Docker Swarm
- 26.3. Hosting frontends on Vercel
- 27. Dev & prod connections
- 28. Backups with rclone
- Beyond the Basics
- 29. Monitoring and logging
- 30. Caching
- 31. What else to host?
- Wrapping Up
- 32. Cost breakdown
- 33. Troubleshooting checklist
- 34. Templates and config
- 35. Links for further learning