Handle Large File Uploads on a VPS (Nginx, PHP, Node, Timeouts)
Allow big uploads without errors: Nginx body size and timeouts, PHP limits, Node.js streaming, Cloudflare limits, tus resumable and presigned S3 uploads.
Blog
Stacks, databases, deployment and marketing for websites you host yourself.
Allow big uploads without errors: Nginx body size and timeouts, PHP limits, Node.js streaming, Cloudflare limits, tus resumable and presigned S3 uploads.
Use Supervisor to keep workers, bots and scripts running: program configs, autorestart, logs and rotation, supervisorctl commands and groups.
Load-test sites and APIs with k6: install, scripts, virtual users and ramping stages, latency and error thresholds, realistic scenarios and reading results.
Fix 413 Request Entity Too Large in Nginx with client_max_body_size: where to set it, matching PHP and app limits, Docker and proxy setups, and safe values.
HTTP caching explained: Cache-Control directives, max-age vs s-maxage, immutable hashed assets, ETag revalidation, no-cache vs no-store, Nginx configs, tests.
Speed up PHP with OPcache: how it works, production settings, memory and file limits, validate_timestamps and deploys, preloading, JIT, and status checks.
Email on your own domain: hosted mailboxes vs a self-hosted VPS mail server, MX, SPF, DKIM and DMARC records, sending from apps, deliverability, and costs.
Is domain age a ranking factor? What Google says, why older sites often rank better, expired and aged domains, registration length, and what to do instead.
Run a Spring Boot app in production on a VPS: build the jar, Java runtime, systemd service, external config, memory flags, Nginx and updates.
Host landing pages on your own VPS: static vs builder pages, Nginx setup, HTTPS, speed for ad Quality Score, forms without a backend, analytics and A/B tests.
Set up Nginx server blocks (virtual hosts) to serve several domains from one VPS: config files, default server, HTTPS per site, permissions and debugging.
Shrink CSS and JS: minification vs compression, esbuild, Vite, Lightning CSS and Terser, removing unused CSS, code splitting, source maps, and pitfalls.
Run several HTTPS sites on one VPS and IP with Nginx: SNI, a server block per domain, Certbot or SAN certificates, renewals, and wrong-certificate fixes.
Self-host a Next.js app on a VPS: standalone output, build and run with PM2 or Docker, Nginx reverse proxy with caching for static assets, HTTPS and updates.
Install Apache, MariaDB and PHP on Ubuntu, Debian, AlmaLinux or Rocky Linux, configure a virtual host with PHP-FPM, enable HTTPS and verify everything works.
A data-driven content pruning process: score pages with Search Console data, then keep, improve, merge, redirect or remove them correctly.
Deploy a front end, API and database on one VPS with Docker Compose, Nginx and HTTPS, then automate releases and rollbacks with GitHub Actions.
Self-host a Nuxt 3 app: build with Nitro, run .output/server with PM2 or systemd, runtime environment variables, Nginx asset caching or static mode.
Pick a good domain name: brandable vs keyword names, TLD choice, length and spelling, trademark checks, registrar tips, privacy, renewal and security.
Install PostgreSQL on Ubuntu, Debian, AlmaLinux or Rocky, create roles, configure authentication and remote access, tune memory and back up.
Install Node.js LTS on a Linux VPS, run your app with systemd or PM2, put Nginx in front with HTTPS, and deploy updates safely.
Install PHP-FPM and a MySQL-compatible database on Ubuntu or Debian, connect them to Nginx, tune php.ini and test the setup.
What Jamstack means today: pre-rendered pages, CDNs and APIs, pros and cons versus traditional servers, hosting on a VPS, rebuilds, and hybrid rendering.
Deploy a Laravel app to an Ubuntu VPS: PHP extensions, Composer, .env, permissions, Nginx, queues with Supervisor, the scheduler and HTTPS.