Self-Hosted Files

Filebrowser Custom Icon Colors - How To

This css colorizes some file types' icons, so different files can be distinguished more easily. It also changes some icons to make distinguishing them even more easy.

lq11cu3y5r581.png

How to use this

/* 
    filebrowser-css - a custom stylesheet for filebrowser
    that adds colors and changes some icons
    https://github.com/jniggemann/filebrowser-css

    Copyright (C) 2021-2022 Jan Niggemann
        With kind contributions of
        * Richard Asplin (https://github.com/richneptune)

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

*/


/* remove a bit of padding from the file list entries */
#listing.list .item {
    padding: 0.7em;
}

/* make folders yellow-ish */
#listing .item[data-dir=true] div i {
    color: #ffc84b;
}

/* packed files - colorize and change icon */
#listing .item[aria-label$=".7z"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".7z"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".7z"] .material-icons::before {
    content: "archive";
    visibility: visible;
}

#listing .item[aria-label$=".arj"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".arj"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".arj"] .material-icons::before {
    content: "archive";
    visibility: visible;
}

#listing .item[aria-label$=".zip"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".zip"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".zip"] .material-icons::before {
    content: "archive";
    visibility: visible;
}

#listing .item[aria-label$=".gz"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".gz"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".gz"] .material-icons::before {
    content: "archive";
    visibility: visible;
}

#listing .item[aria-label$=".tar"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".tar"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".tar"] .material-icons::before {
    content: "archive";
    visibility: visible;
}


#listing .item[aria-label$=".bz"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".bz"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".bz"] .material-icons::before {
    content: "archive";
    visibility: visible;
}

#listing .item[aria-label$=".bz2"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".bz2"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".bz2"] .material-icons::before {
    content: "archive";
    visibility: visible;
}

#listing .item[aria-label$=".xz"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".xz"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".xz"] .material-icons::before {
    content: "archive";
    visibility: visible;
}

#listing .item[aria-label$=".tbz"] div i {
    color: #a268a1;
}
#listing .item[aria-label$=".tbz"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".tbz"] .material-icons::before {
    content: "archive";
    visibility: visible;
}


/* office files */
/* PDF - colorize and change icon /*
/* Note: This is yellow because I use SumatraPDF */
#listing .item[aria-label$=".pdf"] div i {
    color: #FFEE00;
}
#listing .item[aria-label$=".pdf"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".pdf"] .material-icons::before {
    content: "picture_as_pdf";
    visibility: visible;
}

/* word processors - colorize and change icon */
/* Word */
#listing .item[aria-label$=".doc"] div i {
    color: #185ABD;
}
#listing .item[aria-label$=".doc"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".doc"] .material-icons::before {
    content: "description";
    visibility: visible;
}

#listing .item[aria-label$=".docx"] div i {
    color: #185ABD;
}
#listing .item[aria-label$=".docx"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".docx"] .material-icons::before {
    content: "description";
    visibility: visible;
}

/* OpenOffice Writer */
#listing .item[aria-label$=".odt"] div i {
    color: #185ABD;
}
#listing .item[aria-label$=".odt"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".odt"] .material-icons::before {
    content: "description";
    visibility: visible;
}

/* LibreOffice Writer */
#listing .item[aria-label$=".sxw"] div i {
    color: #185ABD;
}
#listing .item[aria-label$=".sxw"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".sxw"] .material-icons::before {
    content: "description";
    visibility: visible;
}


/* PowerPoint */
#listing .item[aria-label$=".ppt"] div i {
    color: #D35230;
}
#listing .item[aria-label$=".pptx"] div i {
    color: #D35230;
}
#listing .item[aria-label$=".pps"] div i {
    color: #D35230;
}
/* OpenOffice Impress */
#listing .item[aria-label$=".odp"] div i {
    color: #D35230;
}


/* Excel */
#listing .item[aria-label$=".xls"] div i {
    color: #107C41;
}
#listing .item[aria-label$=".xlsx"] div i {
    color: #107C41;
}
#listing .item[aria-label$=".ods"] div i {
    color: #107C41;
}
#listing .item[aria-label$=".sxc"] div i {
    color: #107C41;
}
#listing .item[aria-label$=".wri"] div i {
    color: #336eff;
}


/* sound files - colorize */
#listing .item[data-type=audio] div i {
    color: #F47900;
}

/* video files - colorize */
#listing .item[data-type=video] div i {
    color: #F47900;
}

/* text files - change icon*/
#listing .item[aria-label$=".txt"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".txt"] .material-icons::before {
    content: "description";
    visibility: visible;
}
#listing .item[aria-label$=".md"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".md"] .material-icons::before {
    content: "description";
    visibility: visible;
}

/* various other files*/
/* iCal - change icon*/
#listing .item[aria-label$=".ics"] .material-icons {
    visibility: hidden;
}
#listing .item[aria-label$=".ics"] .material-icons::before {
    content: "event";
    visibility: visible;
}

You can also set this on the commandline.

Since no one else showed exactly how to do this, I will be kind and explain it for you. Since I am using a docker image of Filebrowser, it uses the 'srv' directory as the volume mount for the file directory.

filebrowser-docker-compose.png

I created a new folder in my root Filebrowser called custom then placed the custom.ss file there.

filebrowser-custom-branding-dir-gif.gif

It's important to leave the trailing slash so the path can call and append the custom.css file.

filebrowser-custom-branding-dir.png

Once you save this path, you might need to clear your browser cache to see the changes.

Comprehensive Guide: Setting up Tailscale for Self-Hosting

Step 1: Install Tailscale Server

Step 2: Obtain Public and Private Keys

Step 3: Configure Clients

Step 4: Join the Network

Step 5: Advanced Configuration (Optional)

Tips:

Further Resources:

Note: This guide provides a basic overview of the process. For more advanced configurations and specific scenarios, refer to the official Tailscale documentation and resources.

Comprehensive Guide: Setting up DynDNS Updater for Cloudflare

Step 1: Choose a Dynamic DNS Provider

Step 2: Install and Configure DynDNS Updater

Step 3: Configure Cloudflare DNS Records

Step 4: Obtain Dynamic IP Address

Step 5: Update DynDNS Record

Step 6: Automate the Process

Tips:

Further Resources:

Note: This guide provides a basic overview of the process. For more advanced configurations and specific scenarios, refer to the official DynDNS and Cloudflare documentation.

Understanding Prometheus: A Time Series Database for Monitoring


Monitoring and logging are crucial components in ensuring the smooth functioning of applications and systems. One such tool that has gained immense popularity in recent years is Prometheus, a time series database designed specifically for monitoring. In this article, we will delve into what Prometheus is, how it works, and its implementation with Grafana.

What is Prometheus?

Prometheus is an open-source time series database that was originally developed by SoundCloud. It is designed to collect metrics from applications and systems, storing them in a time series format for later querying and analysis. The primary goal of Prometheus is to provide a scalable and flexible solution for monitoring and logging, allowing users to track the performance and behavior of their applications over time.

How Does Prometheus Work?

Prometheus operates on the concept of scraping metrics from targets (applications or systems) at regular intervals. These targets are configured using YAML files, which define the scrape interval, job name, and other relevant details. The Prometheus server then scrapes these targets, collecting metrics such as CPU usage, memory consumption, and network traffic.

Once collected, these metrics are stored in a time series format within the Prometheus database. This allows for efficient querying and analysis of historical data. Prometheus also includes support for alerting and notification features, enabling users to set thresholds for specific metrics and receive alerts when those thresholds are exceeded.

Implementation with Grafana

Grafana is an open-source platform that provides visualization tools for monitoring and logging data. By combining Prometheus with Grafana, users can create a comprehensive monitoring solution that offers real-time insights into their applications and systems.

To implement Prometheus with Grafana, follow these steps:

  1. Install Prometheus: Download and install the Prometheus server on your chosen platform.
  2. Configure Targets: Define targets for Prometheus to scrape metrics from using YAML files.
  3. Create a Data Source in Grafana: In Grafana, create a new data source by selecting "Prometheus" as the type. Enter the URL of your Prometheus server and configure any additional settings as needed.
  4. Visualize Metrics: Use Grafana's dashboard features to visualize Prometheus metrics, creating panels for CPU usage, memory consumption, network traffic, or other relevant metrics.

Benefits of Using Prometheus with Grafana

The combination of Prometheus and Grafana offers numerous benefits, including:

Prometheus is a powerful time series database designed specifically for monitoring applications and systems. By implementing Prometheus with Grafana, users can create comprehensive monitoring solutions that offer real-time insights into their infrastructure. Whether you're looking to monitor CPU usage, memory consumption, or network traffic, the combination of Prometheus and Grafana provides a scalable, flexible, and customizable solution for all your monitoring needs.

The World of Self-Hosting: Exploring Alternative Options to Nextcloud

As the popularity of cloud storage services continues to grow, many users are looking for alternative options that allow them to maintain control over their data. One such option is self-hosting a cloud storage solution, which provides a secure and private environment for storing and sharing files. In this article, we'll explore some Nextcloud alternatives that can be used for self-hosting, as well as provide guidance on how they can be utilized.

1. ownCloud

ownCloud is one of the most well-known open-source cloud storage solutions available. Developed by Frank Karlitschek and others, ownCloud allows users to create a private cloud storage solution that can be accessed from anywhere. With ownCloud, you can store and share files, collaborate with others, and even integrate third-party apps.

ownCloud is highly customizable, allowing you to tailor the installation to your specific needs. You can also extend its functionality by adding plugins and themes. One of the most significant advantages of ownCloud is its scalability, making it an excellent choice for large-scale deployments.

2. Pydio

Pydio (formerly known as AjaXplorer) is another popular open-source cloud storage solution that offers a high degree of customization. Developed by Alexandre Morin, Pydio provides a robust set of features for storing and sharing files, including collaboration tools and version control.

Pydio's architecture is designed to be highly scalable, making it an excellent choice for large-scale deployments. It also supports multiple protocols, such as FTP, SFTP, and WebDAV, allowing you to integrate it with other storage solutions.

3. Seafile

Seafile is a cloud storage solution that focuses on collaboration and file sharing. Developed by Seafile Ltd., this open-source platform provides a high degree of customization and scalability.

One of the key features of Seafile is its ability to handle large files and folders, making it an excellent choice for teams working with multimedia content. It also includes advanced version control and collaboration tools, allowing multiple users to work together on projects.

4. FileRun

FileRun is a modern, open-source cloud storage solution that focuses on simplicity and ease of use. Developed by FileRun Inc., this platform provides a user-friendly interface for storing and sharing files, as well as collaborating with others.

One of the unique features of FileRun is its focus on mobile app support. The platform includes native apps for Android and iOS devices, allowing users to access their files from anywhere. It also includes advanced security features, such as end-to-end encryption and two-factor authentication.

5. Yandex Disk

Yandex Disk is a cloud storage solution developed by Yandex, one of the largest technology companies in Russia. This platform provides a free, open-source alternative to commercial cloud storage solutions.

One of the key features of Yandex Disk is its focus on simplicity and ease of use. The platform includes a user-friendly interface for storing and sharing files, as well as collaborating with others. It also supports advanced file management features, such as version control and folder organization.

Guidance on Using Nextcloud Alternatives

When selecting a Nextcloud alternative for self-hosting, it's essential to consider the specific needs of your use case. Here are some general guidelines to keep in mind:

  1. Scalability: If you anticipate storing large amounts of data or expect a high volume of users, look for platforms that prioritize scalability.
  2. Customization: If you need to tailor the platform to your specific requirements, consider options with a high degree of customization.
  3. Security: If security is a top concern, look for platforms that prioritize encryption and two-factor authentication.
  4. Collaboration: If collaboration is a key aspect of your use case, consider platforms that include advanced version control and sharing features.

By considering these factors and selecting the right Nextcloud alternative for self-hosting, you can create a private cloud storage solution that meets your specific needs and provides a secure environment for storing and sharing files.

Choosing the Right Media Server: Plex vs. Jellyfin

When it comes to hosting a media server, two popular options are Plex and Jellyfin. Both platforms offer unique features and advantages that can help you create a personalized entertainment experience. In this article, we'll delve into the key differences between Plex and Jellyfin, helping you decide which one is best for your needs.

Plex: The Comprehensive Media Server

Plex has established itself as a leading media server solution with its extensive device support, advanced features, and cloud syncing capabilities. Here are some of the key pros and cons to consider:

Pros:

Cons:

Jellyfin: The Lightweight Media Server

Jellyfin is a free and open-source media server solution that offers a more lightweight alternative to Plex. Here are some of the key pros and cons to consider:

Pros:

Cons:

Choosing Between Plex and Jellyfin

When deciding between Plex and Jellyfin, consider the following questions:

  1. Do you prioritize having a wide range of device support? If so, Plex might be the better choice for you.
  2. Are advanced features like live TV streaming and DVR capabilities important to you? If yes, Plex is likely the way to go.
  3. Are you willing to pay for a subscription to unlock additional features in Plex? Or do you prefer the free and open-source nature of Jellyfin?

Ultimately, if you value a wide range of device support, advanced features, and cloud syncing, Plex might be the better choice for you. However, if you're looking for a lightweight, easy-to-use, and completely free media server solution, Jellyfin is an excellent option.

Both Plex and Jellyfin offer unique strengths and weaknesses that can help you create a personalized entertainment experience. By considering your needs and preferences, you can make an informed decision about which media server solution is best for you.

Radarr/Sonarr Permission issues on Windows

If you are running Radarr or Sonarr on Windows but find you are getting permission issues, try this.

First, open up your search bar and type in "services" - this will take you to the Services window on your Windows machine. From there, navigate over to Radarr and right-click on it. In the context menu that pops up, select "Properties". This will bring up the Properties window for Radarr.

Next, click on the Log On tab at the top of the window. You should see a list of available users here - simply select the one you're currently logged in as on your Windows machine. Once you've done this, Radarr should now be able to use your current login credentials and you'll be all set! You may need to restart Radarr for permissions to take effect.

My Journey into Self-Hosting: A Raspberry Pi Tale

Hey there fellow tech enthusiasts! Today, I want to share with you my own exciting journey into the world of self-hosting and how a little device called the Raspberry Pi played an essential role in it.

As someone who spends most of their time online, I've always been concerned about data privacy and the control I have over my digital life. So, when I discovered that I could set up my own self-hosted services using a Raspberry Pi, I was intrigued. This compact, yet powerful single-board computer offered the perfect opportunity to take matters into my own hands.

pi-4-1.jpg

The learning process was challenging at times, but it was incredibly rewarding. With each hurdle overcome and each service successfully set up, I felt a sense of accomplishment that I had never experienced before. I found myself gaining a deeper understanding of how the digital world works, which in turn empowered me to customize my online experience to fit my needs perfectly.

One of the best parts about self-hosting with a Raspberry Pi is that it allowed me to enjoy improved data privacy. Gone were the days of relying on third-party services whose intentions may not have aligned with mine. With my own servers, I could ensure that my data stayed safe and secure, giving me peace of mind.

Another benefit I discovered during this journey was the ability to create tailored solutions for unique problems. When you use off-the-shelf services, you're often limited by their features and capabilities. But with self-hosting, I could design my own tools from scratch, ensuring they were a perfect fit for my requirements.

In closing, if you're looking to take control of your digital destiny, I wholeheartedly recommend diving into the world of self-hosting with a Raspberry Pi. It offers an unparalleled learning experience and empowers you to customize your online life to fit your exact needs. Plus, there's something incredibly satisfying about setting up and maintaining your own servers!