Notes & guides
Blog
Posts about software, Java, Spring, and community.
$ ssh deploy@server $ systemctl status app $ journalctl -u app -f $ df -h
Linux Networking and Troubleshooting Commands: curl, ss, dig, tcpdump
Finding out step by step why a service can't be reached — ip, ping, dig, curl, ss, traceroute/mtr, nc, tcpdump and firewall commands.
$ cat notes.md # Java · Spring · DevOps
Redis Basics and Caching
Data types with redis-cli (string, hash, list, set, sorted set), TTLs, the cache-aside pattern, Spring Boot and Node.js integration, persistence and monitoring commands.
$ cat notes.md # Java · Spring · DevOps
PostgreSQL and psql Basics
Connecting with psql, meta-commands (\l, \dt, \d), users and privileges, backup/restore, query analysis and day-to-day maintenance commands.
$ javac Main.java $ java Main Hello, World!
What's New in Java 21: Virtual Threads, Records and Pattern Matching
The Java 21 LTS features that change day-to-day code the most — virtual threads, records, switch pattern matching, record patterns, sealed classes and sequenced collections.
$ ssh deploy@server $ systemctl status app $ journalctl -u app -f $ df -h
SSH Config, Key Management and Tunneling
Generating ed25519 keys, ssh-agent, shortcuts with ~/.ssh/config, jump hosts, port forwarding (-L, -R, -D) and server-side hardening.
$ ssh deploy@server $ systemctl status app $ journalctl -u app -f $ df -h
Writing a Linux Service with systemd
Running an app as a systemd service — unit files, restart policies, environment variables, reading logs with journalctl, and scheduled jobs with timers.
$ git switch -c feature/x $ git add -p $ git commit -m "fix: …" $ git push -u origin HEAD
CI/CD with GitHub Actions — Build, Test and Deploy to Your Server
A step-by-step GitHub Actions workflow that builds and tests on every push and deploys to your own server over SSH when changes land on main.
$ sudo nginx -t $ sudo certbot --nginx \ -d sukrucakmak.com $ systemctl reload nginx ✓ https://
Setting Up an Nginx Reverse Proxy with Let's Encrypt SSL
Putting a Node.js or Spring Boot app behind Nginx, getting a free SSL certificate with Certbot, and setting up automatic renewal.
$ docker compose up -d $ docker compose ps api running :8080 db healthy :5432 redis running :6379
Running Multiple Services with Docker Compose
Bringing up an app, a database and a cache from a single compose.yaml — services, networks, volumes, healthchecks, env files and everyday commands.