Intro
Let's discover Hybr in less than 5 minutes.
What is Hybr?
Hybr is a self-hosted infrastructure manager designed to simplify the deployment and management of your personal digital services. Inspired by the principles of self-reliance and digital independence, Hybr provides an opinionated framework for running services securely and efficiently within your own private network.
I've tested Hybr on local machines and cloud-based VPS environments.
If you come across any issues, please let me know in GitHub Issues
Getting Started
This guide will walk you through installing Hybr on your system and setting up your first self-hosted service.
Prerequisites
- A Linux-based operating system (tested on Arch, but should work on Ubuntu, Debian, and its derivatives)
sudo
privileges (required for service installation)
Installation
The easiest way to install Hybr is by using the installation script:
Using curl:
curl -sSL https://hybr.dev/install.sh | bash
Using wget:
wget -qO- https://hybr.dev/install.sh | bash
This script automates the process of downloading and installing Hybr and its dependencies.
Installation Process Walkthrough
- Download and Execute the Script: The command downloads the
install.sh
script from hybr.dev and executes it using bash. - Dependency Check: The script first attempts to detect your system's package manager (apt-get, pacman, or xbps-install). It then checks if go, docker, docker-compose, and tailscale are already installed.
- Dependency Installation (if needed): If any of the required dependencies are missing, the script will prompt you to install them. If you confirm, the script will use your system's package manager to install the missing dependencies.
- Docker: Installs the Docker Engine and Docker Compose, which are essential for containerizing and managing your services.
- Go: Installs the Go programming language, which is required for building Hybr.
- Tailscale: installs tailscale which is used to setup the VPN.
- Hybr Installation: The script will:
- Fetch the latest version of Hybr from the GitHub releases.
- Download the appropriate binaries for your system architecture.
- Install the Hybr CLI and Web Console to
/usr/local/bin/
. - Create
/var/lib/hybr/
directory with required hybr configs.
- Service Initialization: The script runs
hybr init --forceDefaults
to start the service installation process, and force reset to the default configuration. - Web Console Setup: The script will also prompt you to run the web console. If you confirm it will run
hybr-console
which will start the service on :8080 and expose it to your tailscale network on${HOSTNAME}.${MAGIC_DNS}/_hybr
.
You're now ready to start managing your self-hosted services with Hybr!
Using Hybr
Once Hybr is installed, you can interact with it through the command-line interface (CLI) or the web console. The steps bellow assume you have accepted the default services.
Accessing your Services via Tailscale VPN
Hybr uses Tailscale to ensure secure access to your services within your private network. Make sure Tailscale is installed and active on any device you want to use to reach your Hybr services.
Accessing the Web Console
To access the web console, simply navigate to localhost:8080/_hybr
on the host machine for hybr, or use the machine's MagicDNS address: ${HOSTNAME}.${MAGIC_DNS}/_hybr
Viewing Service Information via Web Console
- Open the web console.
- You should see
tt-rss
andnextcloud
as available applications - Click on a service name in the sidebar.
- The "Service Info" tab displays key information about the selected service, such as its status, URL, and install date.
- Click Global URL you should see a redirected web page hosting the service.
Managing Services with the CLI
- List all installed services and their status:
hybr services
[nextcloud] ✅ running
[tt-rss] ✅ running
Usage:
hybr services [flags]
hybr services [command]
Available Commands:
components Show service components
info Show service information
logs Service logs
start Start the service
stop Stop the service
Flags:
-h, --help help for services
-s, --service string Name of the service
Use "hybr services [command] --help" for more information about a command.
- Show single service information
hybr services -s nextcloud info
[Name] nextcloud
[Status] ✅ running
[Global URL] https://{HOST}.{MAGIC_DNS}/
[Local URL] localhost:8281
[Install Date] Monday, 10-Mar-25 17:02:59 UTC
[Last Start Date] Monday, 10-Mar-25 17:02:59 UTC
- Show service components
hybr services -s nextcloud components
-----------------------------
Name Version Status
-----------------------------
db 10.11 ✅ running
redis alpine ✅ running
app latest ✅ running
- Read service logs
hybr services -s nextcloud logs
[nextcloud] app-1 | 172.19.0.1 - - [12/Mar/2025:13:25:23 +0000] "GET /index.php/apps/files/preview-service-worker.js HTTP/1.1" 200 2767 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0"
[nextcloud] app-1 | 172.19.0.1 - - [12/Mar/2025:13:25:24 +0000] "GET /index.php/apps/files/preview-service-worker.js HTTP/1.1" 200 2765 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0"
[nextcloud] app-1 | 172.19.0.1 - - [12/Mar/2025:13:25:25 +0000] "GET /index.php/apps/files/preview-service-worker.js HTTP/1.1" 200 2771 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0"
- Start/Stop services
hybr services -s nextcloud stop
[docker] Container nextcloud-app-1 Stopping
[docker] Container nextcloud-app-1 Stopped
[docker] Container nextcloud-app-1 Removing
[docker] Container nextcloud-app-1 Removed
[docker] Container nextcloud-db-1 Stopping
[docker] Container nextcloud-redis-1 Stopping
[docker] Container nextcloud-redis-1 Stopped
[docker] Container nextcloud-redis-1 Removing
[docker] Container nextcloud-redis-1 Removed
[docker] Container nextcloud-db-1 Stopped
[docker] Container nextcloud-db-1 Removing
[docker] Container nextcloud-db-1 Removed
[docker] Volume nextcloud_db Removing
[docker] Volume nextcloud_nextcloud Removing
[docker] Network nextcloud_default Removing
[docker] Volume nextcloud_db Removed
[docker] Network nextcloud_default Removed
[docker] Volume nextcloud_nextcloud Removed
Now if we check the service status we can see that it's stopped.
hybr services -s nextcloud
nextcloud 🛑 stopped
To start a service you can run:
hybr services -s nextcloud start
[docker] Network nextcloud_default Creating
[docker] Network nextcloud_default Created
[docker] Volume "nextcloud_nextcloud" Creating
[docker] Volume "nextcloud_nextcloud" Created
[docker] Volume "nextcloud_db" Creating
[docker] Volume "nextcloud_db" Created
[docker] Container nextcloud-redis-1 Creating
[docker] Container nextcloud-db-1 Creating
[docker] Container nextcloud-redis-1 Created
[docker] Container nextcloud-db-1 Created
[docker] Container nextcloud-app-1 Creating
[docker] Container nextcloud-app-1 Created
[docker] Container nextcloud-redis-1 Starting
[docker] Container nextcloud-db-1 Starting
[docker] Container nextcloud-redis-1 Started
[docker] Container nextcloud-db-1 Started
[docker] Container nextcloud-app-1 Starting
[docker] Container nextcloud-app-1 Started
Now if we check the service status we can see that it's running.
hybr services -s nextcloud
nextcloud ✅ running