Overview

YunoHost is a Debian-based server操作系统 designed to make self-hosting accessible to everyone. It provides a web admin panel that lets you install and manage applications like Nextcloud, WordPress, Matrix, email, and more — without needing to be a Linux expert.

If you’ve ever wanted to self-host your email, calendar, contacts, and files but found the barrier too high, YunoHost is the answer.

Prerequisites:


What YunoHost Installs For You

YunoHost isn’t one application — it’s a platform that manages:

Popular one-click apps include Nextcloud, WordPress, Mastodon, Matrix (Synapse), PeerTube, Pixelfed, Ghost, and 200+ more.


Step 1: Install YunoHost

Option A: Install on a Fresh VPS

SSH into your VPS and run:

curl https://install.yunohost.org | bash

Or for the more recent installer:

wget https://install.yunohost.org -O install.sh
sudo bash install.sh

The installer will:

  1. Install dependencies
  2. Configure SSH
  3. Set up the web admin
  4. Prompt for your domain name

Option B: Install Debian First

If you prefer a manual Debian setup:

# Update system
sudo apt update && sudo apt upgrade -y

# Install prerequisites
sudo apt install lsb-release apt-transport-https ca-certificates curl \
    gnupg unzip wget -y

# Add YunoHost repo
curl https://install.yunohost.org/jessie.key | sudo apt-key add -
echo "deb https://apt.yunohost.org/debian bullseye stable" | \
    sudo tee /etc/apt/sources.list.d/yunohost.list

# Install YunoHost
sudo apt update && sudo apt install yunohost -y
sudo yunohost tools postinstall

Step 2: Post-Installation Setup

After installation, access the web admin at:

https://your-domain.com/yunohost/admin

You’ll be prompted for:

  1. Main domain — Your primary domain (e.g., yourdomain.com)
  2. Administrator password — Choose a strong one
  3. DNS — YunoHost will show you the DNS records to add

Add DNS Records

YunoHost provides custom DNS configuration. Go to your registrar and add:

# A record for main domain
@   300  IN  A  your-server-ip

# A record for SSO/WEB
web 300  IN  A  your-server-ip

# A record for XMPP (if using)
xmpp-upload 300  IN  A  your-server-ip

# DKIM
mail._domainkey  300  IN  TXT  ( "v=DKIM1; k=rsa; p=YOUR-DKIM-KEY" )

# SPF
@  300  IN  TXT  "v=spf1 a mx -all"

# DMARC
_dmarc  300  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com"

YunoHost’s diagnosis tool (yunohost diagnosis) will tell you exactly what’s missing.


Step 3: Create Users

Go to Users → Create a new user:

# Or via CLI:
sudo yunohost user create alice \
    --firstname "Alice" \
    --lastname "Admin" \
    --mail "alice@yourdomain.com" \
    --password "STRONG_PASSWORD"

Each user gets:


Step 4: Install Applications

The magic of YunoHost: one-click installs for common self-hosted apps.

Nextcloud (File Sync & Calendar)

Go to Apps → Install → Nextcloud:

Or via CLI:

sudo yunohost app install nextcloud

Nextcloud gives you:

Email

YunoHost sets up email automatically if you used your main domain. Verify:

sudo yunohost domain list-services yourdomain.com

You should see imap, smtp, sieve listed.

To create email users:

sudo yunohost email create bob@yourdomain.com

Matrix (Synapse) — Decentralized Chat

sudo yunohost app install synapse

This gives you a Matrix homeserver. Users can connect with any Matrix client (Element, FluffyChat, etc.) to https://yourdomain.com.

WordPress

sudo yunohost app install wordpress

Other Notable Apps

AppPurposeCommand
PeerTubeVideo platformyunohost app install peertube
MastodonFediverse socialyunohost app install mastodon
GaletteMembership managementyunohost app install galette
ForgejoGit hosting (Gitea fork)yunohost app install forgejo
VaultwardenPassword manageryunohost app install vaultwarden

Step 5: Set Up Backups

YunoHost has a built-in backup system.

# List backup archives
sudo yunohost backup list

# Create a backup of all apps
sudo yunohost backup create

# Create backup of specific app
sudo yunohost backup create --apps nextcloud

# Restore from backup
sudo yunohost backup restore backup-name

Schedule automatic backups:

# Configure daily backup at 3am
sudo yunohost tools backup auto-configure --enable
sudo yunohost tools backup schedule-create \
    --method daily \
    --time "03:00" \
    --destinations "local"

Step 6: SSL Certificates

YunoHost automatically provisions Let’s Encrypt certificates for all domains:

# Check certificate status
sudo yunohost domain cert status yourdomain.com

# Renew manually if needed
sudo yunohost domain cert renew yourdomain.com

Maintenance Tasks

Update Everything

# Update package lists
sudo apt update

# Upgrade system
sudo yunohost tools upgrade

# Upgrade apps
sudo yunohost app upgrade

Monitor Diagnosis

sudo yunohost diagnosis run

This checks DNS, email, SSL, system resources, and more. Run it regularly.

View Logs

# System logs
sudo journalctl -u yunohost-api -n 100

# App logs (e.g., Nextcloud)
sudo cat /var/www/nextcloud/data/nextcloud.log

Common Issues & Fixes

”Cannot connect to the server”

# Check if services are running
sudo yunohost service status

# Restart YunoHost API
sudo systemctl restart yunohost-api

Email not delivering

# Check SMTP logs
sudo tail -f /var/log/mail.log

# Run full diagnosis
sudo yunohost diagnosis run --email

SSL certificate issues

# Force renewal
sudo yunohost domain cert renew --force

Domain not resolving

Wait for DNS propagation (can take up to 24-48 hours). Use dig yourdomain.com to check.


What You’ve Got

After setup, you have:

All on a server you own and control, costing ~€5/month.


Next Steps

Tired of managing servers?

This site helps you find the right FOSS hosting solution. If you'd rather have experts handle the infrastructure, OpsHelp offers fully managed hosting that supports open source.