Hosting Your Own Media Streaming Service with Jellyfin and Traefik

What You’ll Need A server or virtual machine with Docker installed. Media files (movies, TV shows, music) stored on the server. A domain name (optional, but recommended for HTTPS setup). Basic knowledge of Docker and reverse proxies. Step 1: Install Docker (If Not Installed) Update the system packages: sudo apt update && sudo apt upgrade -y Install Docker: sudo apt install -y docker.io Enable Docker to start on boot: ...

2024-12-04 · 3 min

How to Build a Home DNS Server with Pi-hole for Network-Wide Ad Blocking

Are you tired of intrusive ads, tracking scripts, and sluggish internet performance caused by unnecessary network traffic? A Pi-hole DNS server can solve these problems by acting as a network-wide ad blocker and improving overall browsing speed. This blog post will walk you through the process of setting up Pi-hole at home, step by step. What You’ll Need A Raspberry Pi (recommended: Raspberry Pi 3 or newer) or any machine that can run Docker. MicroSD card (if using a Raspberry Pi). Home router with access to DNS settings. Basic understanding of Linux commands. Step 1: Install the Operating System If using a Raspberry Pi: ...

2024-12-04 · 3 min

How to Create a Media Server at Home with Plex and Jellyfin

Creating a home media server is one of the most rewarding homelab projects, allowing you to centralize and stream your media collection across all devices. Plex and Jellyfin are two popular tools for setting up a media server, each offering unique features. This guide walks you through installing and configuring both options so you can pick the one that works best for you. What You’ll Need A dedicated machine (e.g., Raspberry Pi, NAS, or a repurposed desktop/laptop). A storage device for your media files (e.g., HDDs, SSDs, or a NAS). A stable internet connection for remote access and metadata fetching. Basic knowledge of Linux commands (optional if using GUI-based installation). Step 1: Decide Between Plex and Jellyfin Plex Pros: Polished interface, remote streaming capabilities, wide device compatibility. Cons: Some features require a subscription (Plex Pass). Jellyfin Pros: 100% free and open source, privacy-focused, and customizable. Cons: Slightly less polished interface compared to Plex. Choose your preferred software based on these factors, or try both to see which suits your needs. ...

2024-12-04 · 4 min

How to Deploy Nextcloud for Private Cloud Storage in Your HomeLab

Nextcloud is an open-source platform for private cloud storage and collaboration. By hosting Nextcloud in your homelab, you can securely store files, manage calendars, and sync data across devices—all without relying on third-party services. This guide walks you through installing and configuring Nextcloud on your homelab server. What You’ll Need A server or virtual machine with at least: 2 GB RAM and 1 CPU (for small deployments). 20 GB of storage (or more for large file collections). Linux installed (Ubuntu 20.04 or newer is recommended). A static IP or domain name. Step 1: Update and Prepare Your Server Log into your server: ssh user@<server_ip> Update the system packages: sudo apt update && sudo apt upgrade -y Install necessary dependencies: sudo apt install -y apache2 mariadb-server libapache2-mod-php php php-mysql php-xml php-mbstring php-curl php-zip php-gd unzip Step 2: Set Up the Database Secure MariaDB: sudo mysql_secure_installation Follow the prompts to set a root password and remove unnecessary settings. ...

2024-12-04 · 3 min

Monitoring and Alerting in Your HomeLab with Prometheus and Grafana

What You’ll Need A server or virtual machine to run Prometheus and Grafana (recommended: 2 GB RAM, 2 CPUs). Docker installed (or native installation on Linux). Basic understanding of system metrics and networking. Step 1: Install Prometheus Create a Prometheus data directory: mkdir -p ~/prometheus/data Create a Prometheus configuration file: nano ~/prometheus/prometheus.yml Add the following content to scrape metrics from localhost: global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] Run Prometheus using Docker: ...

2024-12-04 · 3 min

Running a Home Surveillance System with ZoneMinder or Shinobi

What You’ll Need A server or virtual machine with sufficient resources (recommended: 8 GB RAM, 4 CPUs, and 1 TB of storage). IP cameras or USB webcams. A Linux distribution (e.g., Ubuntu 20.04 or newer). Basic knowledge of networking and Linux commands. Step 1: Decide Between ZoneMinder and Shinobi ZoneMinder A mature, feature-rich open-source surveillance system. Offers advanced features like PTZ (Pan-Tilt-Zoom), motion detection, and event-based recording. Suitable for users comfortable with a detailed configuration process. Shinobi ...

2024-12-04 · 3 min

Running a Pi-hole and Unbound Setup for Enhanced DNS Privacy

What You’ll Need A Raspberry Pi or server running Pi-hole. Basic knowledge of Linux commands. An active internet connection. Step 1: Update Your Pi-hole Installation Log into your Pi-hole server via SSH: ssh pi@<pi-hole_ip_address> Update Pi-hole to the latest version: pihole -up Ensure the system is up to date: sudo apt update && sudo apt upgrade -y Step 2: Install Unbound Install Unbound on your Pi-hole server: sudo apt install unbound -y Verify the installation: ...

2024-12-04 · 3 min

Running Docker Containers on a Raspberry Pi: A Step-by-Step Guide

Docker containers are lightweight and portable, making them a great tool for running applications in your homelab. A Raspberry Pi is an ideal low-cost, low-power device for hosting Docker containers. This guide will walk you through setting up Docker on a Raspberry Pi and deploying your first container. What You’ll Need A Raspberry Pi (recommended: Raspberry Pi 3, 4, or newer). MicroSD card with Raspberry Pi OS Lite installed. A stable internet connection. Basic knowledge of Linux commands. Step 1: Update and Prepare Your Raspberry Pi Log into your Raspberry Pi via SSH: ssh pi@<raspberry_pi_ip_address> Update and upgrade the system packages: sudo apt update && sudo apt upgrade -y Install prerequisite packages: sudo apt install -y apt-transport-https ca-certificates curl software-properties-common Step 2: Install Docker on the Raspberry Pi Download the official Docker installation script: curl -fsSL https://get.docker.com -o get-docker.sh Run the installation script: sudo sh get-docker.sh Add your user to the docker group (replace pi with your username if different): sudo usermod -aG docker pi Log out and back in to apply the changes. ...

2024-12-04 · 3 min

Securing Your HomeLab: Best Practices for Firewall and VPN Setup

Running a homelab introduces exciting possibilities, but it also opens potential security vulnerabilities. Securing your homelab with a firewall and VPN ensures safe access to your systems and protects your network from unauthorized intrusions. In this guide, we’ll explore best practices for setting up a secure firewall and VPN for your homelab. What You’ll Need A dedicated router or a device to run firewall software (e.g., pfSense, OPNSense). VPN software or hardware (e.g., WireGuard, OpenVPN). Basic networking knowledge for configuring IPs and port forwarding. Step 1: Set Up a Dedicated Firewall Option 1: Install pfSense Download pfSense: Get the latest ISO from the pfSense download page. Create a Bootable USB Drive: Use Rufus or similar tools to flash the ISO onto a USB drive. Install pfSense on Your Firewall Device: Boot from the USB drive and follow the installation wizard. Initial Configuration: Access the pfSense web interface at http://192.168.1.1. Configure the WAN (internet) and LAN (internal network) interfaces. Option 2: Install OPNSense OPNSense is a robust alternative to pfSense. The installation steps are nearly identical. ...

2024-12-04 · 3 min

Self-Hosting GitLab: A Guide to Version Control in Your HomeLab

Self-hosting GitLab in your homelab allows you to manage code repositories, CI/CD pipelines, and collaborative development projects in a secure, private environment. This guide walks you through installing and configuring GitLab on your homelab server. What You’ll Need A server or virtual machine with at least: 4 GB RAM and 2 CPUs (recommended for smaller deployments). 20 GB of storage (more for large repositories or CI/CD). A Linux-based OS (Ubuntu 20.04 or newer is recommended). A static IP or domain name (for remote access). Step 1: Update and Prepare Your Server Log into your server: ssh user@<server_ip> Update the system packages: sudo apt update && sudo apt upgrade -y Install dependencies: sudo apt install -y curl openssh-server ca-certificates Step 2: Install GitLab Add the GitLab repository: curl -s [https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh](https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh) | sudo bash Install GitLab: Replace <your-domain> with your server’s domain or IP: sudo EXTERNAL_URL="http://<your-domain>" apt install -y gitlab-ee Run the GitLab reconfiguration script: sudo gitlab-ctl reconfigure Step 3: Access the GitLab Web Interface Open your web browser and go to http://<your-domain>. Set a password for the default root user on the first login. Log in using the root username and your new password. Step 4: Configure GitLab Set up email notifications: Edit the /etc/gitlab/gitlab.rb file and configure SMTP settings. Reconfigure GitLab: sudo gitlab-ctl reconfigure Create a new project: Navigate to the Projects tab in the web interface. Click New Project and follow the wizard to create your repository. Step 5: Connect to Your Repository Clone the repository to your local machine: git clone http://<your-domain>/<namespace>/<repository>.git Push your code to the repository: cd <repository> git add . git commit -m "Initial commit" git push origin main Step 6: Enable SSL (Optional) Install Certbot for Let’s Encrypt: sudo apt install -y certbot Generate an SSL certificate: sudo certbot certonly --standalone -d <your-domain> Update GitLab configuration: Edit /etc/gitlab/gitlab.rb: external_url "https://<your-domain>" nginx['ssl_certificate'] = "/etc/letsencrypt/live/<your-domain>/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/<your-domain>/privkey.pem" Reconfigure GitLab: sudo gitlab-ctl reconfigure Step 7: Configure CI/CD Pipelines (Optional) Add a .gitlab-ci.yml file to your repository root: yaml stages: - build build-job: stage: build script: - echo "Hello, World!" Commit and push the file: git add .gitlab-ci.yml git commit -m "Add CI/CD pipeline" git push origin main 2. Check the CI/CD > Pipelines section in the GitLab web interface to monitor the job.: FAQs Q: Is GitLab free to use? A: Yes, GitLab offers a free tier with all essential features for self-hosting. Paid tiers include advanced features like enhanced security and analytics. ...

2024-12-04 · 3 min