Как мне настроить домашнее "облако"?

Если мы упростим концепцию "облачных вычислений" до ее самой базовой формы, мы могли бы сказать, что:

Облачные вычисления - это не что иное, как возможность запускать приложения и получать доступ к данным с компьютера (сервера) в одном месте из другого места через Интернет (с помощью веб-браузера или приложения, разработанного для использования в качестве "внешнего интерфейса", хотя это и непрактично, но возможно).

Итак, мой вопрос в том, что мне нужно сделать, чтобы иметь возможность запускать программы и получать доступ к данным на моем сервере дома из любой точки мира? ( только один пользователь, поэтому я думаю, что виртуализация не потребуется)

Я не хочу становиться экспертом по облачным вычислениям из-за вопроса в StackExchange, просто полностью понимаю принципы облачных вычислений и, возможно, настраиваю свое собственное облако дома.

Пожалуйста, не рекомендуйте такие вещи, как AWS, Azure, Dropbox, Google диск и т.д. Я не пытаюсь использовать облачное хранилище файлов или облачные сервисы от третьих сторон. Я пытаюсь понять, как работают облачные вычисления, не ища рекомендаций по сторонним решениям.

У меня есть некоторое представление о интерфейсной и серверной разработке, поэтому я мог бы написать свои собственные очень простые и сокращенные версии dropbox и/или все, что необходимо для доступа к файлам и запуска приложений, я просто не знаю, что еще потребуется для создания облака дома, которое максимально полно соответствует определению "облачных вычислений". Для этого упражнения приложения, которые я хочу запустить, - это приложения на C и C++ на моем домашнем сервере.