One of the first goals for Fjordtek was setting up a basic cloud environment for clients to use. Security in mind, the network connections must be encrypted and trusted which is why self-signed certificates were out of question, not talking about plain HTTP connections.
Table of Contents
Selected cloud services
Basically, two open-source cloud environments were deployed: Apache CloudStack and Nextcloud. OpenStack was tested and successfully deployed but I ended up to CloudStack instead.
Basic server needs
Fundamental need for each network-based service is physical or virtual server(s), either your own or one(s) running in a datacenter (with loadbalancer).
On a traditional configuration, a single or multiple physical servers with a working WAN connection lay out the basic frame for your network services.
From this starting point, I started building up my single node Nextcloud & CloudStack servers.
Rather than focusing on very technical configuration details, I focus more on my general Nextcloud & CloudStack setup on this post. In full scale, these platforms offer great possibilities for both clients & system administrators.
Server stack overview
On my very limited computer pool, I ended up using two computers as servers. One desktop computer (case: Zalman GS1000 Full Tower), and one laptop computer. Why? Keep reading, reasons are explained below.
Nextcloud server
Requirements for Nextcloud server are quite low. In a very limited environment, you can use a Raspberry Pi to run it. However, I though a larger server (in terms of storage capacity & overall speed) would better fit my requirements.
Physical setup
The physical Nextcloud setup consists of the following main components for a single node:
Component | Model | Count |
---|---|---|
PSU | SeaSonic SS-HM700 Active PFC F3 | 1 |
Motherboard | Asus M5A99X EVO R2.0 | 1 |
CPU | AMD FX-8350 | 1 |
Case fan 120mm | Noctua NF-S12-1200 & - | 2 |
RAM | Kingston KVR13N9S8/4 (4GB) | 1 |
6.0GB/s SATA cable | - | 6 |
eSATA cable | - | 2 |
USB stick | Kingston DataTraveler 4GB | 3 |
MicroSD card | Samsung 64GB Micro SDXC EVO Plus card | 1 |
MicroSD to SD adapter | Samsung - | 1 |
SD to USB adapter | Eye-Fi USB Card Reader | 1 |
1.5TB HDD | Seagate ST31500341AS | 4 |
3.0TB HDD | Seagate ST3000DM001 | 1 |
4.0TB HDD | Seagate ST4000DM000 | 2 |
6.0TB HDD | Western Digital Red WD60EFRX | 1 |
Cat5e ethernet cable (Full duplex) | - | 1 |
Headless setup: No GPU card or integrated GPU |
Bootloader & filesystem
A custom operating system partition layout is used on this server configuration. syslinux
bootloader is installed on a 4GB Kingston 2.0 USB stick, which fires up operating system on Micro SDXC card. This was done mainly to circumvent limits of the motherboard (Asus M5A99X EVO R2.0) which doesn't support directly booting up an operating system from a SD card. Initial RAM disk image (initramfs) was customized to support SD cards on initial booting phase. This was necessary modification unless alternative fallback image was used as a default boot option (fallback image preloads all drivers). If not done, SD card and partitions in it couldn't be found in the initial booting phase, thus failing the whole boot process.
Due to it's minimal size, little overhead and configurability, I installed headless Arch Linux operating system on this server.
Update
Issues with the bootloader + SD card
After having run the server couple of weeks now, I have noticed that operating system fails to reboot occasionally with USB bootloader + SD card configuration. I have decided to replace the SD card with proper SSD mass media as a long-term solution.
Storage
Nextcloud installation & configuration
Nextcloud installation is quite trivial by following valuable resources such as Nextcloud official documentation and ArchWiki - Nextcloud. The basic installation can be done under an hour, and depending on your server/network environment + needs, more advanced configuration steps must be taken in.
My Nextcloud installation is fully integrated with pre-existing SSO and OpenLDAP user authentication solution. Additionally, storage shown above is fully integrated in my Nextcloud installation.
CloudStack server
CloudStack requires a hypervisor-capable computer. CPU of this computer must provide support either for AMD-V or for Intel VT-x hardware virtualization solution. Other hardware requirements include minimum of 4GB of RAM & a lot of storage capacity (depends on whether you install CloudStack management server on the same computer). Official requirements are listed on official Apache documentation.
I have many computers available. However, basically my primary laptop was the only one which provided hardware virtualization capabilities required by CloudStack. Thus, I ended up installing CloudStack on my laptop, using a 2.5” 500GB hard disk (Seagate ST9500420ASG).
Physical setup
The physical CloudStack setup consists of the following main components for a single node (Clevo N950TP6 laptop):
Component | Model | Count |
---|---|---|
CPU | Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz (Desktop processor) | 1 |
GPU | Intel UHD Graphics 630 + Nvidia GeForce GTX 1060 6GB GDDR5 | 1 |
RAM | G.Skill F4-2400C16D-32GRS (16GB) | 1 |
Storage | Seagate ST9500420ASG, 500GB | 1 |
NIC | Ethernet, Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI-E controller | 1 |
NIC | Wireless, Intel AC-9260 (disabled) | 1 |
Cat5e ethernet cable (Full duplex) | - | 1 |
Filesystem
CloudStack was installed on a basic CentOS 7 (18.10) operating system using Minimal ISO.
Although the laptop has two GPUs, neither of those were actively used since the server was operated via SSH connection from another Linux computer.
Cloudstack installation & configuration
no-content-available
Update:
Cloud test runs
Small-scale tests were carried out for the deployed cloud platforms.
In the pictures below are some general insights about these tests.