Posts Taged docker

Arcane: The Modern Docker Management Dashboard You Need for Your Home Lab

Arcane: The Modern Docker Management Dashboard You Need for Your Home Lab

Hi everyone! I’m Dimitri Bellini, and welcome back to my channel, Quadrata, where we dedicate ourselves to the open-source world and the technology that drives it.

As I always say, I like this tech, but you must like it too. That’s why I appreciate every comment you leave—it helps us build a community and discover solutions that might be outside my usual visual spectrum. This week, we are stepping away from our usual comfortable spaces (like Komodo or Portainer) to test a new, sleek solution for managing containers.

It’s called Arcane. It is designed to be a modern Docker management dashboard, and frankly, it brings some very interesting features to the table, especially for home lab enthusiasts.

What is Arcane?

Arcane is a completely open-source solution manageable entirely through a web interface. It allows us to handle containers, images, volumes, and networking—everything we are used to doing with other tools, but with a fresh approach.

While I know many of us use Portainer, we have to admit it can sometimes be a little hostile or limited in specific areas. Arcane positions itself as a valid, lightweight alternative focusing on UI/UX and performance. It is built with SvelteKit and Go, offering a snappy experience compared to legacy tools.

Key Features That Caught My Eye

  • Real-Time Monitoring (CPU & GPU): Unlike many basic dashboards, Arcane provides real-time graphs for CPU, memory, disk space, and network usage. A standout feature is its native support for GPU monitoring, which is fantastic if you are running AI workloads.
  • GitOps Workflow: This is a game-changer. You can integrate directly with GitHub. If you have your Docker Compose definitions in a repository, Arcane can sync with them. This means what you write in Git is reflected in your deployment automatically.
  • Template Registries: It supports template registries, allowing you or the community to create lists of Docker Compose templates for one-click deployments.
  • Remote Agents (Clustering): Arcane isn’t just for the local machine. You can manage multiple nodes (remote Docker hosts) from a single dashboard. It’s not a shared-resource cluster in the enterprise sense, but it allows centralized management of a “plethora of nodes.”
  • Security: It comes with OpenID Connect (OIDC) and Single Sign-On (SSO) support out of the box.

How to Install Arcane

Deploying Arcane is straightforward. You can check their official documentation at getarcane.app, but here is the quick rundown of how I set it up.

1. Preparation

First, you need a directory for persistent data:

mkdir -p /opt/arcane/data

2. Generate Security Keys

This is a crucial step. You need to generate encryption keys and a JWT secret before running the main container:

docker run --rm ghcr.io/getarcaneapp/arcane:latest /app/arcane generate secret

Make sure to save the output (ENCRYPTION_KEY and JWT_SECRET) as you will need them for the next step.

3. The Docker Compose File

You can write your own Compose file, or use their handy Compose Generator on their website to create one tailored to your needs. A basic configuration looks something like this:

version: "3.8"
services:
arcane:
image: ghcr.io/getarcaneapp/arcane:latest
container_name: arcane
restart: always
ports:
- "3552:3552"
environment:
- PUID=1000
- PGID=1000
- APP_URL=http://YOUR_IP:3552
- ENCRYPTION_KEY=your_generated_key
- JWT_SECRET=your_generated_secret
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/arcane/data:/app/data

Simply run docker compose up -d, and you are ready to go.

A Look Inside the Dashboard

Once you log in, the dashboard is visually pleasing and rich in information. As someone who comes from a storage background, I often complain that Docker solutions neglect disk usage visibility. Arcane, however, puts CPU, memory, and disk space front and center.

Managing Resources

The interface gives you a clear view of your active containers, images, and volumes. A feature I particularly love is the Prune System. We all have that habit of installing containers, stopping them, and forgetting about them until our disk is full. Arcane makes it easy to “prune” and delete all the unused pieces attached to your containers to free up space.

Projects and Stacks

In the “Projects” section, you can define your containers using Compose files. You can edit the environment variables on the fly, redeploy, pull new images, or destroy stacks with a click. The logs are easily accessible, and there is a built-in web shell to enter the container directly from your browser.

If you are syncing from Git, the file is read-only in the dashboard (as it should be for a true GitOps flow), but you can still tune the environment variables locally.

Final Verdict

Is Arcane ready for a massive enterprise environment? Perhaps not yet. But for a Home Lab or a small team environment, it is fantastic. It is faster than some of the older competitors, looks better, and the integration with Git simplifies the workflow significantly.

The project is very active on GitHub with frequent releases, which is a great sign. I highly recommend you give it a try and let me know what you think in the comments.

Does this replace Portainer for you? Is it too simple or just right? Let’s discuss!


Connect with me:

See you next week, bye from Dimitri!

Read More
Copyparty: The Lightweight, Powerful File Server You Didn’t Know You Needed

Copyparty: The Lightweight, Powerful File Server You Didn’t Know You Needed

Good morning, everyone, and welcome back to Quadrata! This is my corner of the internet dedicated to the open-source world and the IT solutions that I—and hopefully you—find exciting. If you enjoy this kind of content, don’t forget to leave a like on the video and subscribe to the channel!

This week, we’re diving back into the world of open-source solutions. I stumbled upon a truly stunning tool in the file-sharing space that has a wonderful nostalgic feel, reminiscent of the BBS days of the 90s. It’s called Copyparty, and its charm lies not just in its retro vibe but in its incredible versatility. You can install it almost anywhere, making it a fantastic utility to have in your toolkit.

So, let’s take a closer look together.

What Exactly is Copyparty?

At its core, Copyparty is a web file server that allows you to share and exchange files. What makes it special is that it’s all contained within a single Python file. This makes it incredibly lightweight and portable. While you can run it directly, I prefer using it inside a Docker container for easier management and deployment.

But why use it? The answer is simplicity and performance. If you’ve ever needed to quickly move files between your PC and your NAS, or share a large file with a friend without jumping through hoops, Copyparty could be the perfect, high-performing solution for you.

A Surprising Number of Features in a Tiny Package

I was genuinely impressed by the sheer number of features packed into this tool. It’s highly customizable and offers much more than simple file transfers. Here’s a condensed list of its most interesting capabilities:

  • Smart Uploads & Downloads: When you upload a large file, Copyparty can intelligently split it into smaller chunks. This maximizes your bandwidth and, more importantly, allows for resumable transfers. If your connection drops halfway through, you can pick up right where you left off.
  • File Deduplication: To save precious disk space, Copyparty uses file hashes to identify and avoid storing duplicate files.
  • On-the-fly Compression: You can have files automatically zipped and compressed on the fly, which is another great space-saving feature.
  • Batch Renaming & Tagging: If you have a large collection of photos or, like in the old days, a folder full of MP3s, you can quickly rename them based on a specific pattern.
  • Extensive Protocol Support: It’s not just limited to HTTP. Copyparty supports a whole suite of protocols, including WebDAV, FTPS, TFTP, and Samba, making it a complete hub for file communication.
  • Truly Cross-Platform: It runs virtually everywhere: Linux, macOS, Windows, Android, and even on a Raspberry Pi, thanks to its optimized nature. Yes, you can install it directly on your phone!
  • Built-in Media Tools: Copyparty includes a surprisingly nice music player that can read metadata from your audio files (like BPM and duration) and a compact image browser for viewing your photos.
  • Powerful Command Line (CLI): For those who need to automate or optimize file transfers, there’s a full-featured command-line interface.

Tailor It to Your Needs: Configuration and Security

One of Copyparty’s greatest strengths is its customizability via a single configuration file, copyparty.conf. Here, you can enable or disable features, block connections from specific IP ranges, set upload limits based on disk space, and even change the UI theme.

For user management, you have a couple of options. You can use a simple user/password file or integrate with an external Identity Provider (IDP). The permission system is also very granular. Using a system of flags (like RW for read/write, MDA, etc.), you can define exactly what each user can do on specific paths. It might seem a bit “primordial” compared to modern web GUIs, but for a compact solution, it’s incredibly fast and effective to manage.

How to Install Copyparty with Docker

As I mentioned, my preferred method is using Docker. Copyparty’s developers provide a straightforward Docker Compose file that makes getting started a breeze. I use a GUI tool like Portainer to manage my containers, which simplifies the process even further.

Here’s a look at a basic docker-compose.yml structure:


services:
copyparty:
image: 9001/copyparty
ports:
- "3923:3923"
volumes:
# Volume for configuration file (copyparty.conf)
- /path/to/your/config:/cfg
# Volume for the files you want to share
- /path/to/your/data:/mnt
# ... other docker-specific configurations

In this setup, I’ve defined two key volumes:

  1. A volume for the configuration, where the copyparty.conf file lives.
  2. A mount point for the actual data I want to share or upload to.

Once you run docker-compose up -d, your service will be up and running!

A Walkthrough of the Web Interface

The official GitHub page has a wealth of information and even a live demo, but let me show you my installation. The interface has a fantastic vintage feel, but it’s packed with functionality.

Uploading and Sharing

Uploading a file is as simple as dragging and dropping. First, Copyparty hashes the file to check for duplicates. Then, it begins streaming the upload in a highly optimized way. Once uploaded, you’ll see details like the IP address it was uploaded from and the timestamp.

Sharing is just as easy. You can select a file, create a share link with a custom name, set a password, and even define an expiration date. It generates both a URL and a QR code, making it incredibly convenient to share with others.

Management and Media

The UI includes several helpful tools:

  • Control Center: See active clients, current uploads/downloads, and active shares.
  • Recent Uploads (Extinguisher Icon): Quickly view the latest files added to your share, which is useful for moderation in a multi-user environment.
  • Advanced Search (Lens Icon): A powerful search tool with a wide array of filters to find exactly what you’re looking for.
  • Settings (Gear Icon): Customize the UI, change the language, and tweak how files are displayed.

And don’t forget the built-in media player and image gallery, which turn your file share into a simple media server.

Monitoring

For advanced users, Copyparty can even export its metrics, allowing you to monitor its performance and status with tools like Zabbix. This is a testament to its professional-grade design.

Final Thoughts: Is Copyparty Right for You?

I think Copyparty is a fantastic and interesting product. It’s a very nice solution to try, especially because it’s so lightweight and can be installed almost anywhere. There are many situations where a fast, simple, and self-hosted file-sharing tool is exactly what you need.

Its blend of retro simplicity and modern, powerful features makes it a unique and valuable tool in the open-source world.

That’s all for this week! I’m always eager to hear your thoughts. Have you used Copyparty before? Or do you use another solution that you find more interesting? Let me know in the comments below—perhaps we can discuss it in a future video!

A big greeting from me, Dimitri, and see you next week. Bye everyone!


Follow my work and join the community:

Read More
Taming Your Containers: A Deep Dive into Komodo, the Ultimate Open-Source Management GUI

Taming Your Containers: A Deep Dive into Komodo, the Ultimate Open-Source Management GUI

Hello everyone, Dimitri Bellini here, and welcome back to Quadrata, my corner of the internet dedicated to the world of open-source and IT. If you’re like me, you love the power and flexibility of containers. But let’s be honest, managing numerous containers and multiple hosts purely through the command line can quickly become overwhelming. It’s easy to lose track of what’s running, which services need attention, and how your host resources are holding up.

This week, I stumbled upon a solution that genuinely changed my mood and simplified my workflow: Komodo. It’s an open-source container management platform that is so well-made, I just had to share it with you.

What is Komodo?

At its core, Komodo is an open-source graphical user interface (GUI) designed for the management of containers like Docker, Podman, and others. It provides a centralized dashboard to deploy, monitor, and manage all your containerized applications, whether they are running locally or on remote hosts. The goal is to give you back control and visibility, turning a complex mess of shell commands into a streamlined, intuitive experience.

Key Features That Make Komodo Shine

  • Unified Dashboard: Get a bird’s-eye view of all your hosts and the containers running on them. Komodo elegantly displays resource usage (CPU, RAM, Disk Space), operating system details, and more, all in one place.
  • Multi-Host Management: Komodo uses a core-periphery architecture. You install the main Komodo instance on one server and a lightweight agent on any other hosts you want to manage. This allows you to control a “cluster” of machines from a single, clean web interface.
  • Effortless Deployments: You can deploy applications (which Komodo calls “stacks”) directly from Docker Compose files. Whether you paste the code into the UI, point to files on the server, or link a Git repository, Komodo handles the rest.
  • Automation and CI/CD: Komodo includes features for building images directly from your source code repositories and creating automated deployment procedures that can be triggered by webhooks.
  • Advanced User Management: You can create multiple users and groups, and even integrate with external authentication providers like GitHub, Google, or any OIDC provider.

How Does Komodo Compare to the Competition?

Many of you are probably familiar with Portainer. It has been a fantastic solution for years, but its focus has shifted towards Kubernetes, and the free Community Edition has become somewhat limited compared to its commercial offerings. Portainer pioneered the agent-based multi-host model, which Komodo has adopted and refined.

On the other end of the spectrum is Dockge, a much simpler tool focused on managing Docker Compose files on a single host. It’s a great, lightweight option, but Komodo offers a far more comprehensive suite of features for those managing a more complex environment.

Getting Started with Komodo: A Step-by-Step Guide

One of the best things about Komodo is how easy it is to set up. All you need is a machine with Docker installed.

1. Installation

The official documentation makes this incredibly simple (https://komo.do/docs/setup/mongo). The installation is, fittingly, container-based.

  1. Create a dedicated directory for your Komodo installation.
  2. Download the docker-compose.yml and .env files provided on the official Komodo website. Komodo uses a database to store its configuration, giving you the choice between MongoDB (the long-standing default) or Ferretdb (a Postgres-based alternative). For a simple start, the default files work perfectly.
  3. Run the following command in your terminal:
    docker-compose --env-file ./.env up -d

And that’s it! Komodo, its agent (periphery), and its database will start up as containers on your machine.

2. First-Time Setup

Once the containers are running, navigate to your server’s IP address on port 9120 (e.g., http://YOUR_SERVER_IP:9120). The first time you access the UI, it will prompt you to create an administrator account. Simply enter your desired username and password, and you’ll be logged into the main dashboard.

Exploring the Komodo Dashboard and Deploying an App

The dashboard is clean and intuitive. You’ll see your server(s) listed. The host where you installed Komodo is automatically added. You can easily add more remote hosts by installing the Komodo agent on them using a simple command provided in the UI.

Deploying Your First Stack (Draw.io)

Let’s deploy a simple application to see Komodo in action. A stack is essentially a project defined by a Docker Compose file.

  1. From the main dashboard, navigate to Stacks and click New Stack.
  2. Give your stack a name, for example, drawio-app.
  3. Click Configure. Select the server you want to deploy to.
  4. For the source, choose UI Defined. This allows you to paste your compose file directly.
  5. In the Compose file editor, paste the configuration for a Draw.io container. Here’s a simple example:
    services:
    drawio:
    image: jgraph/drawio
    ports:
    - "8080:8080"
    - "8443:8443"
    restart: unless-stopped

  6. Click Save and then Update.
  7. The stack is now defined, but not yet running. Click the Deploy button and confirm. Komodo will pull the image and start your container.

You can now see your running service, view its logs, and access the application by clicking the port link—all from within the Komodo UI. It’s incredibly slick!

Modifying a Stack

Need to change a port or an environment variable? It’s just as easy. Simply edit the compose file in the UI, save it, and hit Redeploy. Komodo will gracefully stop the old container and start the new one with the updated configuration.

Final Thoughts

I have to say, I’m thoroughly impressed with Komodo. It strikes a perfect balance between simplicity and power. It provides the deep visibility and control that power users need without a steep learning curve. The interface is polished, the feature set is rich, and the fact that it’s a thriving open-source project makes it even better.

I’ll definitely be adopting Komodo to manage the entropy on my own servers. It’s a fantastic piece of software that I can wholeheartedly recommend to anyone working with containers.

But that’s my take. What do you think? Have you tried Komodo, or do you use another tool for managing your containers? I’d love to hear your thoughts and suggestions in the comments below. Your ideas might even inspire a future video!

That’s all for today. A big salute from me, Dimitri, and I’ll see you next week!


Don’t forget to subscribe to my YouTube channel for more open-source content:

Quadrata on YouTube

Join our community on Telegram:

ZabbixItalia Telegram Channel

Read More
Unlock Your Servers from Anywhere: A Deep Dive into Apache Guacamole

Unlock Your Servers from Anywhere: A Deep Dive into Apache Guacamole

Good morning everyone, Dimitri Bellini here! Welcome back to Quadrata, my channel dedicated to the open-source world and the IT that I love—and that you, my viewers, clearly enjoy too.

In this post, we’re diving into a tool that’s a bit esoteric but incredibly powerful, something I first used years ago and have recently had the chance to rediscover: Apache Guacamole. No, it’s not a recipe for your next party; it’s a fantastic open-source tool that allows you to connect to your applications, shells, and servers using nothing more than a web browser.

What is Apache Guacamole?

At its core, Guacamole is a clientless remote desktop gateway. This means you can access your remote machines—whether they use RDP, SSH, VNC, or even Telnet—directly from Chrome, Firefox, or any modern HTML5 browser. Imagine needing to access a server while you’re away from your primary workstation. Instead of fumbling with VPNs and installing specific client software, you can just open a browser on your laptop, tablet, or even your phone and get full access. It’s a game-changer for convenience and accessibility.

The architecture is straightforward but robust. Your browser communicates with a web application (running on Tomcat), which in turn talks to the Guacamole daemon (`guacd`). This daemon acts as a translator, establishing the connection to your target machine using its native protocol (like RDP or SSH) and streaming the display back to your browser as simple HTML5.

Key Features That Make Guacamole Stand Out

Guacamole isn’t just a simple proxy; it’s packed with enterprise-grade features that make it suitable for a wide range of use cases:

  • Broad Protocol Support: It natively supports VNC, RDP, SSH, and Telnet, covering most of your remote access needs.
  • Advanced Authentication: You can integrate it with various authentication systems, including Active Directory, LDAP, and even Two-Factor Authentication (2FA), to secure access.
  • Granular Permissions: As an administrator, you can define exactly which users or groups can access which connections.
  • Centralized Logging & Screen Recording: This is a huge feature for security and compliance. Guacamole can log all activity and even record entire user sessions as videos, providing a complete audit trail of who did what and when.
  • Screen Sharing: Need to collaborate on a problem? You can share your active session with a colleague by simply sending them a link. You can both work in the same shell or desktop environment simultaneously.

Surprising Powerhouse: Where You’ve Already Seen Guacamole

While it might not be a household name, you’ve likely used Guacamole without even realizing it. It’s the powerful engine behind several major commercial products, including:

  • Microsoft Azure Bastion
  • FortiGate SSL Web VPN
  • CyberArk PSM Gateway

The fact that these major security and cloud companies build their products on top of Guacamole is a massive testament to its stability and power.

Getting Started: Installation with Docker

The easiest and most recommended way to get Guacamole up and running is with Docker. In the past, this meant compiling various components, but today, it’s a much simpler process. You’ll need three containers:

  1. guacamole/guacd: The native daemon that handles the protocol translations.
  2. guacamole/guacamole: The web application front-end.
  3. A Database: PostgreSQL or MySQL to store user and connection configurations.

Important Note: I found that the official docker-compose.yml file in the documentation can be problematic. The following method is based on a community-provided configuration that works flawlessly with the latest versions.

Step 1: Create a Directory and Initialize the Database

First, create a directory for your Guacamole configuration and data. Then, run the following command to have Guacamole’s container initialize the database schema for you. This script will pull the necessary SQL files and set up the initial database structure.


mkdir guacamole-data
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > guacamole-data/initdb.sql

Step 2: Create Your Docker Compose File

Inside your main directory, create a file named docker-compose.yml. This file will define the three services we need to run.


services:
guacd:
container_name: guacd
image: guacamole/guacd
volumes:
- /opt/guacamole/drive:/drive:rw
- /opt/guacamole/record:/record:rw
networks:
- guacamole
restart: always

guacdb:
container_name: guacdb
image: postgres:15.2-alpine
environment:
PGDATA: /var/lib/postgresql/data/guacamole
POSTGRES_DB: guacamole_db
POSTGRES_USER: guacamole_user
POSTGRES_PASSWORD: guacpass
volumes:
- /opt/guacamole/db-init:/docker-entrypoint-initdb.d:z
- /opt/guacamole/data:/var/lib/postgresql/data:Z
networks:
- guacamole
restart: always

guacamole:
container_name: guac-guacamole
image: guacamole/guacamole
depends_on:
- guacd
- guacdb
environment:
GUACD_HOSTNAME: guacd
POSTGRESQL_HOSTNAME: guacdb
POSTGRESQL_DATABASE: guacamole_db
POSTGRESQL_USER: guacamole_user
POSTGRESQL_PASSWORD: guacpass
RECORDING_SEARCH_PATH: /record
# uncomment if you're behind a reverse proxy
# REMOTE_IP_VALVE_ENABLED: true
# uncomment to disable brute-force protection entirely
# BAN_ENABLED: false
# https://guacamole.apache.org/doc/gug/guacamole-docker.html#running-guacamole-behind-a-proxy
volumes:
- /opt/guacamole/record:/record:rw
networks:
- guacamole
ports:
- 8080:8080/tcp
restart: always

networks:
guacamole:
name: guacamole

Be sure to change YourStrongPasswordHere to a secure password!

Step 3: Launch Guacamole

Now, from your terminal in the same directory, simply run:


docker-compose up -d

Docker will pull the images and start the three containers. In a minute or two, your Guacamole instance will be ready!

Your First Connection: A Quick Walkthrough

Once it’s running, open your browser and navigate to http://YOUR_SERVER_IP:8080/guacamole/.

The default login credentials are:

  • Username: guacadmin
  • Password: guacadmin

After logging in, head to Settings > Connections to add your first remote machine. Click “New Connection” and fill out the details. For an SSH connection, you’ll set the protocol to SSH and enter the hostname/IP, username, and password. For Windows RDP, you’ll do the same but may also need to check the “Ignore Server Certificate” box under the Parameters section if you’re using a self-signed certificate.

Once saved, your new connection will appear on your home screen. Just click it, and you’ll be dropped right into your remote session, all within your browser tab. You can have multiple sessions open at once and switch between them like browser tabs. To access features like the clipboard or file transfers, use the Ctrl+Alt+Shift key combination to open the Guacamole side menu.

A True Game-Changer for Remote Access

As you can see, Apache Guacamole is an incredibly versatile and powerful tool. Whether you’re a system administrator who needs a centralized access point, a developer working remotely, or a company looking to enhance security with a bastion host and session recording, it’s a solution that is both elegant and effective.

I highly recommend giving it a try. It’s one of those open-source gems that can fundamentally improve your workflow.

What are your thoughts? Have you used Guacamole or a similar tool before? Let me know in the comments below! And if you found this guide helpful, don’t forget to share it.


Thank you for reading! For more content on open-source and IT, make sure to subscribe to the channel.

YouTube Channel: Quadrata

Join our community on Telegram: ZabbixItalia Telegram Channel

See you in the next one!

Read More