Install OpenMediaVault, keep the base system boring, and use the web UI for users, shares, updates, and storage basics.
Shape
The setup is simple: OMV for the base system, NVMe drives for local storage, Docker containers for services, and Cloudflare tunnels for a few public routes.
Steps
Add the NVMe drives, format them cleanly, mount them in OMV, and separate app data from general file storage.
Run services in containers. Keep each service in its own folder with a small compose file and predictable volume paths.
Use Watchtower for simple container updates. Keep it conservative, and avoid making the server clever for no reason.
Use Cloudflare tunnels to point hostnames at different local containers. Expose only what needs to be reachable.
Map
A simple route map for services behind the tunnel.
OMV
Base system, disks, shares, and local administration.
Docker
Small services with local volumes on mounted storage.
service-a.example.com
Hostname to one local container and port.
service-b.example.com
Another hostname to another local container and port.