skip to content
walterra.dev
Table of Contents

I finally got Elasticsearch + Kibana running on my Synology DS925+ (got a beefy one with 32GB of RAM), but not the way I originally expected. I started with Container Manager on DSM, hit a hard wall, then moved the whole stack into a VM. This post is the short, honest version of what worked, what didn’t, and why.

The blocker: DSM kernel + seccomp

Elasticsearch 8/9 expects Linux seccomp support (CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER). Synology’s DSM kernel doesn’t ship with that enabled, so ES dies early with:

seccomp unavailable: CONFIG_SECCOMP not compiled into kernel

Elasticsearch 7.x still lets you disable the system call filter, but 8+ doesn’t. That’s why Docker on DSM isn’t a viable path for ES 9.x.

Decision: run ES inside a VM that has a standard Linux kernel.

VM plan

I used Synology Virtual Machine Manager and installed Ubuntu Server 22.04 LTS. The VM is a single host for both Elasticsearch and Kibana (Docker inside the VM).

Recommended VM settings (what I used):

  • 4 vCPU
  • 12–16 GB RAM
  • 10 TB virtual disk (I want a lot of headroom for Bluesky firehose + smart home data)
  • Bridged network (so it gets a normal LAN IP)
  • Graphics = VGA (the installer was invisible until I switched this)

The VGA tweak was the biggest “gotcha” — the installer wouldn’t render until I changed the graphics adapter.

Ubuntu install highlights

  • Attach the Ubuntu ISO (server edition) and boot from CD/DVD.
  • Enable OpenSSH server during install.
  • Use DHCP for network.
  • Use the full disk with LVM (default guided install).

Use the 10 TB disk properly (LVM)

The installer created / as ~100 GB and left the rest as free LVM space. That’s perfect: I mounted the remaining space at /srv/docker and pointed Docker there.

Terminal window
sudo lvcreate -l 100%FREE -n docker ubuntu-vg
sudo mkfs.ext4 /dev/ubuntu-vg/docker
sudo mkdir -p /srv/docker
sudo blkid /dev/ubuntu-vg/docker
# add to /etc/fstab
# UUID=<uuid> /srv/docker ext4 defaults 0 2
sudo nano /etc/fstab
sudo mount -a
df -h /srv/docker

Then configure Docker to store everything on that volume:

Terminal window
sudo mkdir -p /etc/docker
cat <<'EOF' | sudo tee /etc/docker/daemon.json
{
"data-root": "/srv/docker"
}
EOF
sudo systemctl restart docker

Docker + Elasticsearch 9.3 + Kibana

Inside the VM:

Terminal window
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/99-elasticsearch.conf
sudo sysctl --system

Then I copied my docker-compose.yml and .env into /srv/docker/elasticsearch and started the stack:

Terminal window
cd /srv/docker/elasticsearch
docker compose pull
docker compose up -d

One more fix: Elasticsearch couldn’t lock the data directory until I fixed permissions:

Terminal window
sudo mkdir -p /srv/docker/elasticsearch/elasticsearch/data
sudo chown -R 1000:1000 /srv/docker/elasticsearch/elasticsearch

After that, ES came up cleanly. Kibana needed a one‑time password set for kibana_system:

Terminal window
cd /srv/docker/elasticsearch
source .env
curl -X POST "http://localhost:9200/_security/user/kibana_system/_password" \
-H "Content-Type: application/json" \
-u elastic:$ELASTIC_PASSWORD \
-d '{"password": "'"$KIBANA_PASSWORD"'"}'
docker compose restart kibana

Access

Kibana is reachable at:

http://<vm-ip>:5601

Login with elastic + the password from .env.

What I learned

  • DSM isn’t the problem; the kernel is. ES 9.x is fine on a modern kernel — just not on DSM’s.
  • VGA graphics was the key to getting the installer to show.
  • LVM is your friend for large disks — keep / small and put Docker data on a big volume.
  • Permissions matter for the ES data path (1000:1000).

Most of this workflow was built with help from pi-coding-agent. Having the chat history + troubleshooting flow turned into a proper setup doc saved me a lot of time.

Next steps

  • Add a DHCP reservation for the VM IP so Kibana stays at a stable URL.
  • Consider snapshots in VMM before big ES upgrades.
  • Add a reverse proxy if I want HTTPS and a nicer hostname.

If you’re trying to run Elasticsearch on a Synology NAS, the VM route is the cleanest option right now. It’s a little extra setup, but it’s stable and keeps you on supported ES versions.