{"id":2926,"date":"2025-01-03T18:05:28","date_gmt":"2025-01-03T23:05:28","guid":{"rendered":"https:\/\/www.thexyz.com\/blog\/?p=2926"},"modified":"2025-01-03T18:05:28","modified_gmt":"2025-01-03T23:05:28","slug":"building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud","status":"publish","type":"post","link":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/","title":{"rendered":"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud"},"content":{"rendered":"<h2 data-pm-slice=\"1 1 []\">Introduction<\/h2>\n<p>In a world where cloud storage services dominate, taking control of your own data has never been more empowering or cost-effective. Whether you&#8217;re a small business looking to reduce expenses, a tech enthusiast seeking a personal project, or an individual prioritizing data privacy, building your own storage server can be a game-changer.<\/p>\n<p>This detailed guide chronicles the process of setting up a dedicated storage server using a Dell PowerEdge T150, Ubuntu 24.04, and Nextcloud. From hardware selection to configuring software and ensuring security, this walkthrough provides the tools you need to create a scalable, secure, and private solution for managing your data. Say goodbye to expensive storage subscriptions and hello to complete control.<\/p>\n<h2><strong>Why Choose Linux Over Windows Server?<\/strong><\/h2>\n<p>For businesses and individuals managing IT infrastructure, the choice between <strong>Windows Server<\/strong> and <strong>Linux<\/strong> can have significant implications on cost, flexibility, and long-term scalability. While Windows Server offers familiarity and tight integration with Microsoft ecosystems, it comes with high licensing fees, additional costs for access, and a more restrictive environment.<\/p>\n<p>On the other hand, <strong>Linux<\/strong>, with distributions like <strong>Ubuntu<\/strong>, provides a <strong>free, open-source<\/strong>, and highly customizable alternative. Linux eliminates the need for costly licenses, supports a broad range of hardware, and offers powerful tools for security and remote access at no additional charge. This makes it particularly appealing to small businesses, developers, and privacy-conscious users.<\/p>\n<p>The table below compares the two options, highlighting why Linux often emerges as the more cost-effective, flexible, and secure choice for self-hosted solutions. Whether you&#8217;re looking to reduce expenses or gain more control over your infrastructure, Linux delivers on every front.<\/p>\n<h3><strong>Comparison of Windows Server vs. Ubuntu<\/strong><\/h3>\n<table>\n<thead>\n<tr>\n<th><strong>Feature<\/strong><\/th>\n<th><strong>Windows Server<\/strong><\/th>\n<th><strong>Ubuntu (Linux)<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Cost (Licensing)<\/strong><\/td>\n<td>&#8211; Standard Edition: $1,069+ (one-time)<\/td>\n<td>Free and open-source. Optional enterprise support (~$225\/year for Ubuntu Pro).<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>&#8211; Datacenter Edition: $6,155+ (one-time)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><strong>Client Access Licenses<\/strong><\/td>\n<td>Required ($38\u2013$199 per user\/device, one-time).<\/td>\n<td>Not required.<\/td>\n<\/tr>\n<tr>\n<td><strong>Remote Access<\/strong><\/td>\n<td>RDS CALs ($100\u2013$120 per user\/device, one-time).<\/td>\n<td>Free tools (e.g., xrdp, VNC, SSH with GUI).<\/td>\n<\/tr>\n<tr>\n<td><strong>Upgrades<\/strong><\/td>\n<td>Additional cost for new versions or via Software Assurance (~25\u201330% of license cost annually).<\/td>\n<td>Free upgrades.<\/td>\n<\/tr>\n<tr>\n<td><strong>Support<\/strong><\/td>\n<td>Paid (via Software Assurance or Microsoft support plans).<\/td>\n<td>Free community support or optional enterprise support (~$225\/year for Ubuntu Pro).<\/td>\n<\/tr>\n<tr>\n<td><strong>Ease of Use<\/strong><\/td>\n<td>User-friendly GUI, suitable for administrators familiar with Windows ecosystems.<\/td>\n<td>Command-line focused but offers GUIs like GNOME for desktop\/server administration.<\/td>\n<\/tr>\n<tr>\n<td><strong>Hardware Requirements<\/strong><\/td>\n<td>Higher system requirements for similar performance.<\/td>\n<td>Lightweight, can run efficiently on older hardware.<\/td>\n<\/tr>\n<tr>\n<td><strong>Security<\/strong><\/td>\n<td>Regular patches, but closed-source and telemetry are enabled by default.<\/td>\n<td>Open-source, strong community oversight, no telemetry.<\/td>\n<\/tr>\n<tr>\n<td><strong>Customization<\/strong><\/td>\n<td>Limited due to proprietary nature.<\/td>\n<td>Highly customizable with open-source software and configurations.<\/td>\n<\/tr>\n<tr>\n<td><strong>Ecosystem<\/strong><\/td>\n<td>Tight integration with Microsoft products (e.g., Active Directory, Office 365).<\/td>\n<td>Works well with a wide range of open-source tools and platforms (e.g., Apache, Samba).<\/td>\n<\/tr>\n<tr>\n<td><strong>Virtualization<\/strong><\/td>\n<td>Hyper-V included.<\/td>\n<td>Free tools (e.g., KVM, VirtualBox, Docker) available.<\/td>\n<\/tr>\n<tr>\n<td><strong>Backup Options<\/strong><\/td>\n<td>Built-in tools often require additional licenses or third-party software.<\/td>\n<td>Free options (e.g., rsync, Duplicati) and integration with open-source backup solutions.<\/td>\n<\/tr>\n<tr>\n<td><strong>Community Support<\/strong><\/td>\n<td>Limited, focused on enterprise users.<\/td>\n<td>Vibrant community with extensive forums, guides, and free resources.<\/td>\n<\/tr>\n<tr>\n<td><strong>Use Cases<\/strong><\/td>\n<td>Ideal for organizations invested in Microsoft products.<\/td>\n<td>Great for cost-conscious users, developers, and tech-savvy businesses.<\/td>\n<\/tr>\n<tr>\n<td><strong>Total Cost of Ownership<\/strong><\/td>\n<td>High: Includes CALs, RDS CALs, upgrades, and optional Software Assurance.<\/td>\n<td>Low: No licensing costs, free upgrades, and minimal additional expenses.<\/td>\n<\/tr>\n<tr>\n<td><strong>Cloud Integration<\/strong><\/td>\n<td>Seamless integration with Microsoft Azure.<\/td>\n<td>Compatible with all major cloud providers, including AWS, Google Cloud, and Azure.<\/td>\n<\/tr>\n<tr>\n<td><strong>Performance<\/strong><\/td>\n<td>Can be resource-intensive for similar tasks.<\/td>\n<td>Optimized for performance, especially on servers.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 data-pm-slice=\"1 3 []\">Things You Will Need<\/h2>\n<h3>Hardware:<\/h3>\n<ul data-spread=\"false\">\n<li><strong>Server, for this guide I chose the Dell PowerEdge T150 Server<\/strong>\n<ul data-spread=\"false\">\n<li>Intel Xeon E-2334 processor<\/li>\n<li>16GB ECC memory<\/li>\n<li>Two 960GB SSDs (configured in RAID 1 for redundancy)<\/li>\n<\/ul>\n<\/li>\n<li>Keyboard, monitor, and mouse for initial setup (optional if using remote management tools like iDRAC).<\/li>\n<\/ul>\n<h3>Software:<\/h3>\n<ul data-spread=\"false\">\n<li><strong>Ubuntu 24.04 LTS ISO<\/strong>: Download from the official <a href=\"https:\/\/ubuntu.com\/download\/server\" target=\"_blank\" rel=\"noopener\">Ubuntu website<\/a>.<\/li>\n<li><strong>Nextcloud<\/strong>: Installable with a click with a <a href=\"https:\/\/www.thexyz.com\/usage-based\">cPanel instance<\/a>.<\/li>\n<li>Tools like <a href=\"https:\/\/rufus.ie\/en\/\" target=\"_blank\" rel=\"noopener\">Rufus<\/a> (for creating bootable USB) or equivalent.<\/li>\n<\/ul>\n<h3>Network:<\/h3>\n<ul data-spread=\"false\">\n<li>A static IP address for the server.<\/li>\n<li>Internet access for downloading updates and packages.<\/li>\n<\/ul>\n<h3>Optional Tools:<\/h3>\n<ul data-spread=\"false\">\n<li>An additional external drive or backup solution for automated backups.<\/li>\n<li>Uninterrupted Power Supply (UPS) for power protection.<\/li>\n<\/ul>\n<div>\n<hr \/>\n<\/div>\n<h2>1. Choosing the Right Server<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2930\" src=\"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png\" alt=\"Dell t150\" width=\"809\" height=\"665\" srcset=\"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png 809w, https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min-300x247.png 300w, https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min-768x631.png 768w, https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min-610x501.png 610w\" sizes=\"(max-width: 809px) 100vw, 809px\" \/><\/p>\n<h3>Why the Dell PowerEdge T150?<\/h3>\n<p>The Dell PowerEdge T150 offers excellent value for small to medium-sized storage needs. It was chosen for its:<\/p>\n<ul data-spread=\"false\">\n<li><strong>Performance<\/strong>: Intel Xeon E-2334 processor and 16GB ECC memory.<\/li>\n<li><strong>Storage Capacity<\/strong>: Two 960GB SSDs with RAID 1 configuration for redundancy.<\/li>\n<li><strong>Flexibility<\/strong>: Room for expansion and compatibility with Linux operating systems.<\/li>\n<\/ul>\n<div>\n<hr \/>\n<\/div>\n<h2>2. Installing Ubuntu 24.04<\/h2>\n<h3>Step 1: Preparing Boot Media<\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li>Download the latest version of Ubuntu ISO.<\/li>\n<li>Create a bootable USB using <a href=\"https:\/\/rufus.ie\/\">Rufus<\/a> or <code>dd<\/code> on Linux:\n<pre><code>sudo dd if=ubuntu-24.04.iso of=\/dev\/sdX bs=4M status=progress<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Step 2: Installation<\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li>Boot from the USB on the T150.<\/li>\n<li>Follow the installation wizard:\n<ul data-spread=\"false\">\n<li>Configure language, timezone, and disk partitioning.<\/li>\n<li>Set up Logical Volume Management (LVM) for flexibility.<\/li>\n<li>Create an admin user account.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<div>\n<hr \/>\n<\/div>\n<h2>3. Configuring the Network<\/h2>\n<h3>Step 1: Assign a Static IP<\/h3>\n<p>Edit the Netplan configuration:<\/p>\n<pre><code>sudo nano \/etc\/netplan\/50-cloud-init.yaml<\/code><\/pre>\n<p>Example configuration:<\/p>\n<pre><code>network:\r\n    version: 2\r\n    ethernets:\r\n      eno8403:\r\n        dhcp4: false\r\n        addresses:\r\n          - 192.168.0.10\/24\r\n        gateway4: 192.168.0.1\r\n        nameservers:\r\n          addresses:\r\n            - 8.8.8.8\r\n            - 8.8.4.4<\/code><\/pre>\n<p>Apply the configuration:<\/p>\n<pre><code>sudo netplan apply<\/code><\/pre>\n<div>\n<hr \/>\n<\/div>\n<h2>4. Setting Up Nextcloud<\/h2>\n<h3>Step 1: Install Nextcloud<\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li>Use the Snap package for ease of installation:\n<pre><code>sudo snap install nextcloud<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Step 2: Configure External Storage<\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li>Create a storage mount point:\n<pre><code>sudo mkdir \/mnt\/nextcloud_data<\/code><\/pre>\n<\/li>\n<li>Mount additional storage:\n<pre><code>sudo mkfs.ext4 \/dev\/sdb1\r\n  sudo mount \/dev\/sdb1 \/mnt\/nextcloud_data<\/code><\/pre>\n<\/li>\n<li>Update <code>\/etc\/fstab<\/code> for persistent mounting:\n<pre><code>\/dev\/sdb1 \/mnt\/nextcloud_data ext4 defaults 0 0<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Step 3: Set Permissions<\/h3>\n<p>Ensure Nextcloud has access:<\/p>\n<pre><code>sudo chown -R www-data:www-data \/mnt\/nextcloud_data\r\n  sudo chmod -R 770 \/mnt\/nextcloud_data<\/code><\/pre>\n<div>\n<hr \/>\n<\/div>\n<h2><strong>5. Securing the Server<\/strong><\/h2>\n<h2><strong>Step 1: Configure SSH<\/strong><\/h2>\n<p>One of the first steps in securing your server is to change the default SSH port, which helps reduce the risk of automated attacks that target common ports (like port 22). By changing the SSH port and applying additional restrictions, you can significantly improve your server&#8217;s security.<\/p>\n<ol>\n<li>Open the SSH configuration file:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo nano \/etc\/ssh\/sshd_config<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>Update the following settings:\n<ul>\n<li>Disable root login:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-plaintext\">PermitRootLogin no<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>Disable password authentication (use SSH keys instead):\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-plaintext\">PasswordAuthentication no<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>Restrict SSH access to specific users:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-plaintext\">AllowUsers &lt;your-username&gt;<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>Change the default SSH port to <strong>3387<\/strong> (or a port of your choice):\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-plaintext\">Port 3387<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>Save the file and restart the SSH service:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo systemctl restart sshd<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<hr \/>\n<h2><strong>Step 2: Enable Firewall<\/strong><\/h2>\n<p>Next, configure the <strong>Uncomplicated Firewall (UFW)<\/strong> to allow traffic on your new SSH port and block unnecessary connections:<\/p>\n<ol>\n<li>Install UFW:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo apt install ufw -y<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>Allow only essential ports:\n<ul>\n<li>SSH on the new port (3387):\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo ufw allow 3387\/tcp<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>HTTP and HTTPS for web traffic:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo ufw allow http<br \/>\nsudo ufw allow https<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>Enable the firewall:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo ufw <span class=\"hljs-built_in\">enable<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<hr \/>\n<h2><strong>Step 3: Install Fail2Ban<\/strong><\/h2>\n<p>To further protect your server against brute-force attacks, use <strong>Fail2Ban<\/strong>, which blocks IP addresses that repeatedly fail to log in.<\/p>\n<ol>\n<li>Install Fail2Ban:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo apt install fail2ban -y<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>Configure SSH protection:\n<ul>\n<li>Edit or create the Fail2Ban jail configuration file:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo nano \/etc\/fail2ban\/jail.local<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<li>Add the following settings for SSH:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-plaintext\">[sshd]<br \/>\nenabled = true<br \/>\nport = 3387<br \/>\nlogpath = \/var\/log\/auth.log<br \/>\nbantime = 3600<br \/>\nmaxretry = 3<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>Save the file and restart Fail2Ban:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"sticky top-9 md:top-[5.75rem]\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">sudo systemctl restart fail2ban<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ol>\n<hr \/>\n<h3><strong>Why Change the Default SSH Port?<\/strong><\/h3>\n<p>Changing the default SSH port (from the commonly used port 22) helps obscure your server from bots and automated scripts that scan for open ports on default settings. Coupled with a strong firewall and brute-force protection, this step forms the foundation of a robust security strategy for your server.<\/p>\n<div>\n<hr \/>\n<\/div>\n<h2>6. Automating Backups<\/h2>\n<h3>Step 1: Install Rsync<\/h3>\n<p>Rsync is a robust tool for backups:<\/p>\n<pre><code>sudo apt install rsync -y<\/code><\/pre>\n<h3>Step 2: Create a Backup Script<\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li>Write a script to sync data to <code>\/mnt\/backup<\/code>:\n<pre><code>sudo nano \/usr\/local\/bin\/backup.sh<\/code><\/pre>\n<p>Example:<\/p>\n<pre><code>#!\/bin\/bash\r\n  rsync -av \/mnt\/nextcloud_data \/mnt\/backup<\/code><\/pre>\n<\/li>\n<li>Make the script executable:\n<pre><code>sudo chmod +x \/usr\/local\/bin\/backup.sh<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Step 3: Schedule with Cron<\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li>Open crontab:\n<pre><code>crontab -e<\/code><\/pre>\n<\/li>\n<li>Add a daily backup job:\n<pre><code>0 0 * * * \/usr\/local\/bin\/backup.sh<\/code><\/pre>\n<\/li>\n<\/ol>\n<div>\n<hr \/>\n<\/div>\n<h2>7. Monitoring and Maintenance<\/h2>\n<h3>Step 1: Install Monitoring Tools<\/h3>\n<p>Install tools like <code>htop<\/code> and <code>iotop<\/code>:<\/p>\n<pre><code>sudo apt install htop iotop sysstat -y<\/code><\/pre>\n<h3>Step 2: Regular Updates<\/h3>\n<p>Enable unattended upgrades:<\/p>\n<pre><code>sudo apt install unattended-upgrades -y\r\n  sudo dpkg-reconfigure unattended-upgrades<\/code><\/pre>\n<h3>Step 3: Conduct Security Audits<\/h3>\n<p>Install Lynis:<\/p>\n<pre><code>sudo apt install lynis -y\r\n  sudo lynis audit system<\/code><\/pre>\n<div>\n<hr \/>\n<\/div>\n<h2><strong>Why Host the Nextcloud Instance on a cPanel Server While Using an Ubuntu Server for Storage?<\/strong><\/h2>\n<p>When setting up a robust, secure, and scalable Nextcloud environment, it&#8217;s important to consider the separation of roles between the application layer and the storage backend. Here&#8217;s why we chose to host the Nextcloud instance on a <strong>cPanel server with Thexyz<\/strong> while using an <strong>Ubuntu server strictly for storage<\/strong>:<\/p>\n<hr \/>\n<h3><strong>1. Simplified Application Management with cPanel<\/strong><\/h3>\n<p>Hosting the Nextcloud instance on a cPanel server with Thexyz provides several benefits for managing the application layer:<\/p>\n<ul>\n<li><strong>User-Friendly Interface<\/strong>: cPanel simplifies tasks like domain management, email setup, SSL installation, and backups, making it easier for administrators to manage Nextcloud without diving deep into command-line configurations.<\/li>\n<li><strong>High Availability<\/strong>: Thexyz\u2019s cPanel hosting ensures that the Nextcloud application layer is always accessible with reliable uptime and performance.<\/li>\n<li><strong>Built-In Security<\/strong>: Thexyz offers enterprise-grade security features, including web application firewalls and DDoS protection, reducing the risk of vulnerabilities at the application level.<\/li>\n<li><strong>Automatic Updates<\/strong>: cPanel automates many Nextcloud updates, ensuring the application remains up-to-date without manual intervention.<\/li>\n<\/ul>\n<hr \/>\n<h3><strong>2. Dedicated Ubuntu Server for Storage<\/strong><\/h3>\n<p>Using a dedicated Ubuntu server as the storage backend allows us to separate the file storage infrastructure from the application layer, optimizing both performance and security:<\/p>\n<ul>\n<li><strong>Enhanced Performance<\/strong>: By offloading storage tasks to a separate server, the cPanel server running Nextcloud can dedicate its resources to application tasks like user authentication, file indexing, and web access.<\/li>\n<li><strong>Scalability<\/strong>: The Ubuntu server can be easily expanded with additional storage capacity, RAID configurations, or network storage solutions to meet growing data demands.<\/li>\n<li><strong>Improved Security<\/strong>: The dedicated storage server can be configured with strict access controls (e.g., SSH, firewalls, and Fail2Ban) to protect sensitive data. Only the cPanel server communicates directly with the storage backend.<\/li>\n<li><strong>Cost Efficiency<\/strong>: The Ubuntu server eliminates the need for expensive cloud storage subscriptions, offering a self-hosted and cost-effective alternative with complete control over data.<\/li>\n<\/ul>\n<hr \/>\n<h3><strong>3. Flexible Nextcloud Configuration<\/strong><\/h3>\n<p>Hosting Nextcloud on cPanel while leveraging Ubuntu for storage maximizes the flexibility of the setup:<\/p>\n<ul>\n<li><strong>External Storage Integration<\/strong>: Nextcloud seamlessly connects to the Ubuntu storage server via external storage plugins or protocols like WebDAV, SMB, or NFS.<\/li>\n<li><strong>Redundancy and Backups<\/strong>: Data on the Ubuntu server can be backed up independently, providing an additional layer of security and disaster recovery.<\/li>\n<li><strong>Workload Distribution<\/strong>: By separating the roles of application hosting and storage, each server is optimized for its specific function, improving overall reliability.<\/li>\n<\/ul>\n<hr \/>\n<h3><strong>4. Why Thexyz for cPanel Hosting?<\/strong><\/h3>\n<ul>\n<li><strong>Privacy-Focused Hosting<\/strong>: Thexyz provides secure and privacy-centric hosting, aligning perfectly with Nextcloud\u2019s mission of empowering users to take control of their data.<\/li>\n<li><strong>Renewable Energy<\/strong>: Hosting with Thexyz is environmentally responsible, as their services are powered by renewable energy.<\/li>\n<li><strong>Support and Expertise<\/strong>: Thexyz offers dedicated support, ensuring any issues with the cPanel-hosted Nextcloud instance are resolved quickly.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Introduction In a world where cloud storage services dominate, taking control of your own data has never been more empowering or cost-effective. Whether you&#8217;re a small business looking to reduce expenses, a tech enthusiast seeking a personal project, or an individual prioritizing data privacy, building your own storage server can be a game-changer. This detailed [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2930,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-2926","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","et-has-post-format-content","et_post_format-et-post-format-standard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud - Thexyz Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud - Thexyz Blog\" \/>\n<meta property=\"og:description\" content=\"Introduction In a world where cloud storage services dominate, taking control of your own data has never been more empowering or cost-effective. Whether you&#8217;re a small business looking to reduce expenses, a tech enthusiast seeking a personal project, or an individual prioritizing data privacy, building your own storage server can be a game-changer. This detailed [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/\" \/>\n<meta property=\"og:site_name\" content=\"Thexyz Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-03T23:05:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png\" \/>\n\t<meta property=\"og:image:width\" content=\"809\" \/>\n\t<meta property=\"og:image:height\" content=\"665\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Perry\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Perry\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/\"},\"author\":{\"name\":\"Perry\",\"@id\":\"https:\/\/www.thexyz.com\/blog\/#\/schema\/person\/e2c26bd981f75b2b1786ced1e9f2b223\"},\"headline\":\"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud\",\"datePublished\":\"2025-01-03T23:05:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/\"},\"wordCount\":1636,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png\",\"articleSection\":[\"How To\"],\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/\",\"url\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/\",\"name\":\"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud - Thexyz Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png\",\"datePublished\":\"2025-01-03T23:05:28+00:00\",\"author\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/#\/schema\/person\/e2c26bd981f75b2b1786ced1e9f2b223\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage\",\"url\":\"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png\",\"contentUrl\":\"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png\",\"width\":809,\"height\":665,\"caption\":\"Dell t150\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.thexyz.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.thexyz.com\/blog\/#website\",\"url\":\"https:\/\/www.thexyz.com\/blog\/\",\"name\":\"Thexyz Blog\",\"description\":\"Email and Domains\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.thexyz.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.thexyz.com\/blog\/#\/schema\/person\/e2c26bd981f75b2b1786ced1e9f2b223\",\"name\":\"Perry\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/6750a4725b2114d76de054f45ed548dbbe8401f36e08e35171b0c811dd77d316?s=96&d=monsterid&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6750a4725b2114d76de054f45ed548dbbe8401f36e08e35171b0c811dd77d316?s=96&d=monsterid&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6750a4725b2114d76de054f45ed548dbbe8401f36e08e35171b0c811dd77d316?s=96&d=monsterid&r=g\",\"caption\":\"Perry\"},\"description\":\"Perry is founder and a developer of Thexyz. I write code to fight for our human right to privacy. I am keen to create a cloud service which is so easy to use, respects user privacy and follows best security practices. We really deserve better.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/ptoone\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud - Thexyz Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/","og_locale":"en_US","og_type":"article","og_title":"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud - Thexyz Blog","og_description":"Introduction In a world where cloud storage services dominate, taking control of your own data has never been more empowering or cost-effective. Whether you&#8217;re a small business looking to reduce expenses, a tech enthusiast seeking a personal project, or an individual prioritizing data privacy, building your own storage server can be a game-changer. This detailed [&hellip;]","og_url":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/","og_site_name":"Thexyz Blog","article_published_time":"2025-01-03T23:05:28+00:00","og_image":[{"width":809,"height":665,"url":"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png","type":"image\/png"}],"author":"Perry","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Perry","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#article","isPartOf":{"@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/"},"author":{"name":"Perry","@id":"https:\/\/www.thexyz.com\/blog\/#\/schema\/person\/e2c26bd981f75b2b1786ced1e9f2b223"},"headline":"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud","datePublished":"2025-01-03T23:05:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/"},"wordCount":1636,"commentCount":0,"image":{"@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png","articleSection":["How To"],"inLanguage":"en-CA","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/","url":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/","name":"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud - Thexyz Blog","isPartOf":{"@id":"https:\/\/www.thexyz.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage"},"image":{"@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png","datePublished":"2025-01-03T23:05:28+00:00","author":{"@id":"https:\/\/www.thexyz.com\/blog\/#\/schema\/person\/e2c26bd981f75b2b1786ced1e9f2b223"},"breadcrumb":{"@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/"]}]},{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#primaryimage","url":"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png","contentUrl":"https:\/\/www.thexyz.com\/blog\/wp-content\/uploads\/t150office-min.png","width":809,"height":665,"caption":"Dell t150"},{"@type":"BreadcrumbList","@id":"https:\/\/www.thexyz.com\/blog\/building-a-custom-storage-server-with-the-poweredge-t150-ubuntu-and-nextcloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.thexyz.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building a custom Storage Server with the PowerEdge T150, Ubuntu, and Nextcloud"}]},{"@type":"WebSite","@id":"https:\/\/www.thexyz.com\/blog\/#website","url":"https:\/\/www.thexyz.com\/blog\/","name":"Thexyz Blog","description":"Email and Domains","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.thexyz.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":"Person","@id":"https:\/\/www.thexyz.com\/blog\/#\/schema\/person\/e2c26bd981f75b2b1786ced1e9f2b223","name":"Perry","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/secure.gravatar.com\/avatar\/6750a4725b2114d76de054f45ed548dbbe8401f36e08e35171b0c811dd77d316?s=96&d=monsterid&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6750a4725b2114d76de054f45ed548dbbe8401f36e08e35171b0c811dd77d316?s=96&d=monsterid&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6750a4725b2114d76de054f45ed548dbbe8401f36e08e35171b0c811dd77d316?s=96&d=monsterid&r=g","caption":"Perry"},"description":"Perry is founder and a developer of Thexyz. I write code to fight for our human right to privacy. I am keen to create a cloud service which is so easy to use, respects user privacy and follows best security practices. We really deserve better.","sameAs":["https:\/\/www.linkedin.com\/in\/ptoone\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/posts\/2926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/comments?post=2926"}],"version-history":[{"count":3,"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/posts\/2926\/revisions"}],"predecessor-version":[{"id":2931,"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/posts\/2926\/revisions\/2931"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/media\/2930"}],"wp:attachment":[{"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/media?parent=2926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/categories?post=2926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thexyz.com\/blog\/wp-json\/wp\/v2\/tags?post=2926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}