For the full step-by-step with commands, screenshots, and copy-paste configs, see the original tutorial on hasto.pl:
👉 Installing Elasticsearch and Kibana on a VPS (5 Simple Steps)
Elasticsearch and Kibana (part of the ELK/Elastic Stack) give you powerful search, dashboards, and Application Performance Monitoring without committing to a heavy enterprise setup. If you’re considering a self-hosted stack on a small VPS, here’s a practical overview from a guy who’s seen teams get real value quickly—without turning it into a six-month project.
Why self-host at all?
- Cost control for side projects & small teams. A modest VPS can be enough for learning, prototyping, or light workloads.
- Hands-on learning. You’ll actually understand the moving parts: data, dashboards, access, and security.
- Flexibility. Tailor the stack to your needs, add integrations at your own pace, and keep your data close.
What you’ll need (plain-English checklist)
- VPS with ~8 GB RAM (room for both Elasticsearch and Kibana). Ubuntu is a common choice.
- Domain & HTTPS. Point DNS to your server and use Let’s Encrypt to secure traffic.
- Reverse proxy (e.g., Nginx). Terminates TLS, exposes friendly URLs (like kibana.yoursite.com).
- Basic hardening. Firewall rules, SSH hygiene, updates, and a plan for backups.
- Optional protection. Services like CrowdSec can add an extra safety net against noisy bots.
The simple architecture (conceptually)
- DNS points kibana.yoursite.com and elasticsearch.yoursite.com to your VPS.
- Nginx sits in front, handles HTTPS, and forwards traffic to local services.
- Elasticsearch & Kibana run on the VPS but listen only on localhost for safety.
- You log in to Kibana over HTTPS to explore data and dashboards.
Common pitfalls (and the easy fixes)
- Disk fills up silently. Plan storage up front; enable snapshots/backups and consider index lifecycle policies to auto-age old data.
- Memory pressure. Elasticsearch likes RAM. Keep other services lean and watch for OOM kills.
- Accidentally exposing ports. Don’t publish 9200/5601 directly to the internet—bind services to localhost and go through the reverse proxy.
- Weak credentials & missing encryption keys. Use strong passwords and generate Kibana encryption keys so features don’t break later.
- No alerting. Even a simple uptime check and “disk > 80%” alert saves headaches.
Getting value fast in Kibana (low-effort wins)
- Data in, quickly. For logs, Beats/agents or a lightweight shipper can get you started without custom dev work.
- Dashboards first. Start with a couple of high-signal views: error rates, latency percentiles, and top slow endpoints.
- Search made useful. Add saved searches for recurring questions (“last 24h errors”, “slowest queries”).
- APM when ready. Instrument one service to get real traces; expand gradually.
- Access hygiene. Create non-admin roles for everyday viewing to reduce risk.
When to scale—or not
- Good to keep self-hosting if your data volume is modest, the team is comfortable maintaining a VPS, and costs are predictable.
- Consider managed if your ingestion grows fast, you need multi-AZ HA, or you’d rather trade time for a service bill.
A tiny operations routine
- Weekly: system updates, glance at RAM/disk widgets in Kibana, check cert renewals.
- Monthly: prune old indices, verify snapshots/restores, review Nginx logs for anomalies.
- Quarterly: revisit sizing, access policies, and what data you truly need to keep.
Final thought
Spinning up Elasticsearch and Kibana on a VPS is a great way to learn and to deliver immediate value—especially for small apps, internal tools, or prototypes. Keep the footprint tight, protect the edges (TLS + reverse proxy + least privilege), and let dashboards guide your next steps.
For the full walkthrough with commands, configs, and screenshots, head to the original guide on hasto.pl:
👉 Installing Elasticsearch and Kibana on a VPS (5 Simple Steps)