Author
Mark van Eijk
Mark is the founder of Rocketeers and has been building web applications and hosting infrastructure for over a decade. He writes about self-hosting, server management, DNS, and web performance.
169 articles
- Nov 2024 Enable JIT in PHP 8.x OPcache
- Nov 2024 Detect Googlebot visits using nginx
- Nov 2024 Use nginx try_files to make your site static
- Nov 2024 Log bot requests in nginx
- Oct 2024 Improving PHP performance
- Jul 2026 Use the OpenAI API in Laravel
- Jul 2026 Track AI bots visiting your website
- Jul 2026 Fix the OpenAI API rate limit (429) error
- Jul 2026 Self-host an LLM on your own server
- Jul 2026 Run DeepSeek locally
- Jul 2026 Run a local LLM with Ollama
- Jun 2026 What is Cloudflare?
- Jun 2026 How to host your own website
- Jun 2026 Tools to validate your website
- Jun 2026 How to install multiple PHP versions on the same server
- Jun 2026 How to install Certbot
- Jun 2026 How to install Nginx on Ubuntu
- Jun 2026 How to install Node.js on Ubuntu
- Jun 2026 Website launch checklist
- Jun 2026 Why do you need Cloudflare?
- Jun 2026 How to install MySQL on Ubuntu
- Jun 2026 How to renew SSL certificates automatically
- Jun 2026 How to install PHP on Ubuntu
- Jun 2026 Important PHP config options
- Jun 2026 403 Forbidden in nginx
- Jun 2026 How to enable and configure OPcache for faster PHP
- Jun 2026 A complete guide to caching in Laravel
- Jun 2026 How to send GET and POST requests with curl
- Jun 2026 ERR_TOO_MANY_REDIRECTS (redirect loop)
- Jun 2026 git stash pop vs apply: save and restore changes
- Jun 2026 Address already in use (port already bound)
- Jun 2026 npm ci vs npm install: when to use which
- Jun 2026 How to generate a CSR with OpenSSL
- Jun 2026 How to delete a local (and remote) Git branch
- Jun 2026 CORS error: No Access-Control-Allow-Origin header
- Jun 2026 No application encryption key has been specified
- Jun 2026 MySQL max_allowed_packet: packet too large
- Jun 2026 How database indexing works (with MySQL examples)
- Jun 2026 curl (60) SSL certificate problem: unable to get local issuer certificate
- Jun 2026 Essential Linux command line basics for developers
- Jun 2026 NET::ERR_CERT_AUTHORITY_INVALID
- Jun 2026 What is an SSH key
- Jun 2026 nginx rewrite or internal redirection cycle
- Jun 2026 docker compose up: options and common flags
- Jun 2026 How to search file contents with grep
- Jun 2026 SSL handshake failed in nginx (ERR_SSL_PROTOCOL_ERROR)
- Jun 2026 PHP file upload exceeds upload_max_filesize
- Jun 2026 Redis connection refused in Laravel
- Jun 2026 MySQL 1071: Specified key was too long (Laravel migration)
- Jun 2026 The complete guide to the curl command
- Jun 2026 504 Gateway Timeout in nginx
- Jun 2026 Your connection is not private
- Jun 2026 MySQL ERROR 1205: Lock wait timeout exceeded
- Jun 2026 Getting started with the AWS CLI
- Jun 2026 500 Internal Server Error in Laravel
- Jun 2026 CSRF token mismatch in Laravel
- Jun 2026 How to check your Ubuntu version from the command line
- Jun 2026 Brotli vs Gzip: which compression should you use?
- Jun 2026 MySQL ERROR 1040: Too many connections
- Jun 2026 How to checkout a Git tag
- Jun 2026 What port does SSH use (and how to change it)
- Jun 2026 MySQL ERROR 1698: Access denied for user 'root'@'localhost'
- Jun 2026 How to copy files over SSH with scp
- Jun 2026 nginx: upstream sent too big header
- Jun 2026 How to generate a self-signed certificate with OpenSSL
- Jun 2026 How to create and extract tar archives in Linux
- Jun 2026 No space left on device on Ubuntu
- Jun 2026 Vite manifest not found in Laravel
- Jun 2026 How to optimize MySQL performance
- Jun 2026 Git fatal: refusing to merge unrelated histories
- Jun 2026 Convert SSL certificate formats with OpenSSL
- Jun 2026 git reset --hard explained (soft vs mixed vs hard)
- Jun 2026 How to generate an SSH key
- Jun 2026 How to clear the Redis cache
- Jun 2026 docker exec: run a command in a running container
- Jun 2026 SSH Permission denied (publickey)
- Jun 2026 Laravel failed to open stream: Permission denied
- Jun 2026 How to check SSL certificate expiration
- Jun 2026 How to run a command on a remote server over SSH
- Jun 2026 How to change the SSH port on Ubuntu
- Jun 2026 Fix: Cannot connect to the Docker daemon at unix:///var/run/docker.sock
- Jun 2026 How to connect to a server with the ssh command
- Jun 2026 How to enable Gzip and Brotli compression in Nginx
- Jun 2026 PHP Warning: Undefined array key
- Jun 2026 How to make a script executable with chmod +x
- Jun 2026 SQLSTATE[23000] 1062 Duplicate entry
- Jun 2026 PHP Fatal error: Allowed memory size exhausted
- Jun 2026 502 Bad Gateway in nginx
- Jun 2026 PHP: Call to a member function on null
- Jun 2026 Target class does not exist in Laravel
- Jun 2026 How to change file permissions with chmod
- Jun 2026 How to find your IP address from the Linux command line
- Jun 2026 How to rename a Git branch (local and remote)
- Jun 2026 MySQL ERROR 2006: server has gone away
- Jun 2026 How to improve Laravel performance
- Jun 2026 MySQL ERROR 1064: SQL syntax error
- Jun 2026 How to configure rate limiting in nginx
- Jun 2026 How to sync files and directories with rsync
- Jun 2026 PHP Fatal error: Class "X" not found
- Jun 2026 How to install the Xcode Command Line Tools on macOS
- Jun 2026 GitHub Permission denied (publickey)
- Jun 2026 How to find files in Linux with the find command
- Jun 2026 503 Service Unavailable
- Jun 2026 Git fatal: not a git repository
- Jun 2026 Composer out of memory (allowed memory size exhausted)
- Jun 2026 PHP Maximum execution time of N seconds exceeded
- Jun 2026 How to update Ubuntu from the command line
- Jun 2026 What is an SSL certificate chain
- Jun 2026 SQLSTATE[HY000] [1045] Access denied for user
- Jun 2026 How to remove untracked files in Git (git clean)
- Jun 2026 How to find and optimize slow MySQL queries
- Jun 2026 Git: Updates were rejected (non-fast-forward)
- Jun 2026 SQLSTATE[42S02] Base table or view not found
- Jun 2026 SQLSTATE[HY000] [2002] Connection refused
- Jun 2026 How to increase the PHP memory limit
- Jun 2026 How to kill the process running on a port in Linux
- Jun 2026 How to generate SSH keys with ssh-keygen
- Jun 2026 How to clean up Docker with prune (images, volumes, system)
- Jun 2026 How to forward ports with SSH tunneling
- Feb 2026 How to setup OpenClaw securely on your own VPS
- Sep 2024 How to get A+ grade SSL using Cloudflare
- Sep 2024 How to rename a MySQL database
- Sep 2024 How many CPU cores on Ubuntu
- Sep 2024 How much RAM memory on Ubuntu
- May 2024 Import MySQL database without timezone difference
- Mar 2024 Zero downtime deployments using PHP-FPM and nginx
- Mar 2024 Environment variables in Laravel
- Feb 2024 419 Page Expired error in Laravel
- Feb 2024 How to clear cache in Laravel
- Feb 2024 How to check Ubuntu version
- Jan 2024 413 Request Entity Too Large in nginx
- Jan 2024 Configure Content Security Policy with nonce using nginx
- Dec 2023 Server Side Includes (SSI) in nginx
- Dec 2023 How to install PostgreSQL with pgvector on Ubuntu
- Nov 2023 How to install Composer packages locally
- Oct 2023 Complete list of Laravel events
- Sep 2023 Error in the HTTP2 framing layer
- Apr 2023 Laravel Valet
- Mar 2023 Install PHP memcached extension on macOS
- Mar 2023 Creating an encrypted cookie value in Laravel
- Jan 2023 How to upgrade MySQL 5.7 to 8.0 on Ubuntu
- Jan 2023 Backup MySQL databases in separate files
- Jan 2023 Backup MySQL databases in single file
- Jan 2023 Backup MySQL databases except system databases in a single file
- Dec 2022 Best practices for sending email
- Dec 2022 Improving email deliverability
- Dec 2022 How to optimize web application security
- Dec 2022 Disable CSRF in Laravel
- Nov 2022 Change casing of file or directory in Git
- Nov 2022 Logging in Laravel
- Nov 2022 How to check which Laravel version of your app is using
- Nov 2022 How to run PHP files
- Oct 2022 Argument list too long (Bash: /bin/rm)
- Sep 2022 Removing tracked files in Git that should have been ignored
- Sep 2022 Disable cookies in Laravel
- Aug 2022 Importing database in MySQL using command line
- Aug 2022 Export MySQL database using command line
- Aug 2022 Disable unnecessary and unused PHP versions (FPM pools)
- Aug 2022 Reclaim disk space on Ubuntu server
- Aug 2022 Stream MySQL backup directly to S3 bucket
- Aug 2022 How to measure TTFB (Time To First Byte)
- Aug 2022 How to use different PHP versions with Laravel Valet
- Aug 2022 How to add Swap Space on Ubuntu servers
- Aug 2022 How to optimize server performance
- Aug 2022 How to optimize website performance
- Aug 2022 How to get top processes with highest memory usage
- Aug 2022 How to get top processes with highest CPU usage
- Aug 2022 How to extract the certificate from a PFX file
- Aug 2022 How to extract private key from PFX file